我的编程空间,编程开发者的网络收藏夹
学习永远不晚

J2ME中KVM编译过程是怎样的

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

J2ME中KVM编译过程是怎样的

今天就跟大家聊聊有关J2ME中KVM编译过程是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

这里向大家简单介绍一下Windows下编译KVM的过程,KVM没有采用HotSpot JVM里面诸多优化技术,代码十分简单,有利于我们理解JAVA程序的执行过程。虽然KVM里面执行JAVA程序可能与现在PC上流行的JVM不太相同,但是大致原理是相似的。

J2ME KVM

编译KVM

KVM可以说是JVM中比较小而且比较原始的一个版本。KVM是一般放置在嵌入式设备,比如手机等资源有限的终端内运行。KVM没有采用HotSpot JVM里面诸多优化技术,代码十分简单,有利于我们理解JAVA程序的执行过程。虽然KVM里面执行JAVA程序可能与现在PC上流行的JVM不太相同,但是大致原理是相似的。
   下面是我在Windows编译KVM的过程。

1.下载KVM源代码

http://www.sun.com/software/communitysource/j2me/cldc/download.xml
现在有cldc1.1和cldc1.04的两个版本。差别不是很大。我选择的是1.1的版本的KVM源代码。

2.下载Cygwin

Sun提供的KVM虽然有VC6下编译的工程,但是整个编译过程还是有部分需要Cygwin的参与。Cygwin提供了Linux下的 make,gcc,grep,find等很多程序,这些程序在KVM里面的很多makefile里面都使用到了的。既然是Windows下,那么只有下载 cygwin了。
  安装cygwin的时候,记着把gcc编译器,make,grep,find等常用的工具装进去。其实你也可以下载Dev-Cpp这个工具,里面带有cygwin的gcc,make但是没有 grep,find这些shell程序。所以还是应该下载一个cygwin。cygwin版本无所谓,很老的都可以。不过cygwin很大就是了。
  http://www.cygwin.org

3. 安装JDK

这个过程就不用我多说了,我是直接安装的JBuilder2005。

4. make编译

将j2me_cldc下载下来后,解压开。进入j2me_cldc\build\win32目录。里面有个makefile文件,这就是win32环境下的编译文件。
   整个过程需要在windows的命令提示符下完成,还需要设置PATH。在命令提示符下输入
   PATH=D:\CYGWIN\BIN;D:\Borland\JBuilder2005\jdk1.4\bin;%PATH%
   然后直接敲入make,就可以进行整个编译过程了。整个编译过程应该还是很顺利的。
   有可能出现"*.java 找不到"的错误,多半是因为Windows的command里面有个find.exe和cygwin\bin里面的那个find.exe冲突了,应该把cygwin\bin放在前面。

5. 在VC6下编译KVM

在j2me_cldc\kvm\VmWin\build下有个VC6的dsw工程文件,不过必须先经历上面的make编译后才能打开这个VC6工程文件进行编译。因为整个KVM的编译需要的两个文件nativeFunctionTableWin.c和ROMjavaWin.c是在编译执行 tools\jcc后生成的,没有编译执行tools\jcc是不会有这两个文件的。

jcc是个将Java核心的class文件的bytecodes转换成一堆C语言的数组,然后让KVM编译的时候包含进去,这些核心class的 bytecodes就是放在上面两个文件里面。这样做的好处就是在KVM执行时不用在再去找核心的class文件然后装载。

6. 测试运行一下自己编译的KVM

编译成功的话,会生成VmWin.exe或者kvm.exe文件。你可以测试一下写个helloworld.java,不需要preverifier,就可以直接运行你的helloworld.class的。
   SUN这个j2me cldc的KVM里面已经提供了一个putchar的native function,你可以根据自己的喜好,去增加修改Java的native function。整个KVM.exe有200多K,不过代码可能只有80K多点,其它的就是Java的CLDC核心class。

看完上述内容,你们对J2ME中KVM编译过程是怎样的有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网行业资讯频道,感谢大家的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

J2ME中KVM编译过程是怎样的

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

golang的编译过程是什么

Golang的编译过程可以分为四个主要步骤:词法分析(Lexical Analysis):将源代码分解为一个个的词法单元(token),例如标识符、关键字、运算符等。语法分析(Syntax Analysis):根据词法分析的结果,将词法单元
2023-10-22

java程序的编译过程是什么

Java程序的编译过程分为以下几个步骤:1. 编写源代码:首先需要编写Java程序的源代码,源代码是以.java文件的形式存在,可以使用任何文本编辑器来编写。2. 编译源代码:使用Java编译器将源代码编译成字节码,字节码是一种中间代码,它
2023-09-28

CentOS安装mono配置系统相关编译器的过程是怎样的

这篇文章给大家介绍CentOS安装mono配置系统相关编译器的过程是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。对大家推荐很好使用的CentOS安装系统,像让大家对CentOS安装系统有所了解,然后对CentO
2023-06-16

java编码转换过程是怎样的

本文小编为大家详细介绍“java编码转换过程是怎样的”,内容详细,步骤清晰,细节处理妥当,希望这篇“java编码转换过程是怎样的”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。java中的编码转换(以utf8和gb
2023-07-06

linux编译安装的过程是什么

这篇文章主要介绍“linux编译安装的过程是什么”,在日常操作中,相信很多人在linux编译安装的过程是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux编译安装的过程是什么”的疑惑有所帮助!接下来
2023-02-15

CentOS 5编译编译基本类系统软件是怎样的

这篇文章将为大家详细讲解有关CentOS 5编译编译基本类系统软件是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。CentOS社区不断与其他的同类社区合并,使CentOS Linux逐
2023-06-16

CentOS Apache编译和安装是怎样的

CentOS Apache编译和安装是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、下载:CentOS Apache[root@localhost src]# chm
2023-06-16

android源代码的编译过程是什么

Android源代码的编译过程主要包括以下几个步骤:1. 下载源代码:从Android官方网站下载源代码,并解压到本地目录。2. 配置环境:配置开发环境,包括安装必要的编译工具和依赖库,设置环境变量等。3. 选择目标:根据需要编译的Andr
2023-09-21

notepad插件cmake的编译过程是什么

这篇文章主要讲解了“notepad插件cmake的编译过程是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“notepad插件cmake的编译过程是什么”吧!Notepad++ 是一个文本
2023-07-05

go编译器是否会编译main中从未使用过的包

php小编草莓很高兴为大家解答关于go编译器是否会编译main中从未使用过的包的问题。在go语言中,编译器不会编译未使用的包。这是因为go语言的设计理念是简洁高效,不会浪费时间和资源去编译没有使用的代码。因此,如果在main包中引入了一些其
go编译器是否会编译main中从未使用过的包
2024-02-09

CentOS Mysql用户建立设置编译器的编译参数是怎样的

CentOS Mysql用户建立设置编译器的编译参数是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。建立CentOS Mysql用户组是CentOS用户必须学习使用的,由
2023-06-16

GD编译出错解决方法是怎样的

这期内容当中小编将会给大家带来有关GD编译出错解决方法是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。编译最新的2.0.35版本,用默认的 ./configure编译 当make的时候,出现以下错误
2023-06-13

J2ME编程中的几个重要概念分别是什么

J2ME编程中的几个重要概念分别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。我们都知道,Java ME 以往称作J2ME(Java Platform,Micro Edi
2023-06-17

在C#程序编译另一个程序的实现方法是怎样的

本篇文章为大家展示了在C#程序编译另一个程序的实现方法是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、C#程序编译编译前,要用到VS2005提供的一个编译工具 devenv.exe,这个在
2023-06-18

plsql的存储过程怎么编译和调用

编译PL/SQL存储过程可以使用Oracle SQL Developer或者SQL*Plus工具。使用SQL Developer编译存储过程的步骤如下:打开SQL Developer并连接到目标数据库。在连接的窗口中展开数据库对象树,找
plsql的存储过程怎么编译和调用
2024-04-09

编程热搜

目录