JVM的ARM移植

JVM 的 ARM 移植

当今JVM 种类很多,如IBM JVM 、MS JVM 等等。但要把它用到 ARM 上,并非易事。

经过测试和对比,最终还是选择了 SUN 的JVM,其中,J2ME (Java 2 Platform Micro

Edition)是专为移动设备设计的,在移动通信设备上已经有了很广的应用,非常适合我

们在嵌入式中使用。J2ME 根据硬件资源的限制,分为CLDC (Connected Limited Device

Configuration)和 CDC (Connected Device Configuration),无论是 CLDC 还是 CDC,其

核心都是 Java 虚拟机。CLDC 采用了 KVM,它是一个真正的最小的而又基本上完整的 Java

虚拟机,小到可以装入几十 KB 的内存中。CDC 则采用了 CVM,它是一个具有完整的 J2SE

1.3 VM 支持能力的Java 虚拟机,因此也更适合使用、更有效,但又比标准的J2SE VM 小 。

作为一个全功能的 Java 虚拟机,CVM 几乎支持 J2SE VM 的所有先进特性,包括最底层的调

错处理和本地语言接口 。

SUN 的JVM 开源后,作为 JAVA 开发社区的一个项目,为避免版权问题,J2ME 改名为

phoneME 。CLDC 对应 phoneME Feature,而CDC 对应 phoneME Feature,虚拟机则称为

CVM 。由于我们有较为丰富的硬件资源,并且为今后更为复杂的开发考虑,我们选择了

phoneME Feature,本文的描述,也是针对 phoneME Feature 展开的。

一、CVM SYSTEM MAP

首先,让我们来看张图。

这张图很好表述了CVM 的整个运行过程。遗憾的是本文不打算变成婴儿读物,对 JVM

的实现不打算加以介绍,其实SUN 官方网站上有份 《JAVA 虚拟机规范》,比我在这唠叨

一半天来得给系统准确 。同时这张图来 自Mark Lam 的Blog,他是一位SUN 的工程师,在

CVM 的小组中工作,他对这张图有了很全面的说明,但扫兴的是我不打算在这里引用,因

为我不愿就此把这篇文章变成虚拟机实现的专著……

二、如何获得源码

JAVA 开源后第一个受益的就是 J2ME,我也希望你能称为受益者 一。首先,你得获

取到最新的源代码:

# svn c o https ://phon eme ./svn /phone me /comp one nts/cldc/trunk cldc

# svn c o https ://phon eme ./svn /phone me /comp one nts/pcsl/trunk pcsl

# svn c o https ://phon eme ./svn /phone me /comp one nts/mi dp/trunk mid p

# svn c o https ://phon eme ./svn /phone me /comp one nts/cdc/trunk c dc

# svn c o https ://phon eme ./svn /phone me /comp one nts/to ols/trunk too ls

# svn c o https ://phon eme ./svn /phone me /comp one nts/jum p/trunk jump

# svn c o https ://phon eme ./svn /phone me /comp one nts/abst racti ons/trunk

abstr action s

三、编译

一般地,你直接 make 就可以了,如果报错,可能是你系统缺少一些环境变量,如

JDK_HOME 、HOST_CC 等,具体请参阅官方网站上的 《CDC Build System Guide》 。一帆风

顺的话,不出10分钟 (对我的破机子来说),你就能编译出CVM 了。不过我估计你会出许

多问题,譬如说少了某些Linux库文件或某些工具,这个和你编译时使用的系统相关,因

人而异,我用的是 Ubuntu 7.10,少了什么系统都会很友善的提示你,并告诉你在线安装的

方法,装完重新make 吧,总能成功的 。虽然CVM 支持 JAVA 1.4的规范,但你仍然可以

用最新的J2SE 1

arm linux移植jvm,JVM的ARM移植.PDF相关推荐

  1. 【原创】ARM LINUX 外部RTC实时时钟驱动移植(RX8025)

    [原创]ARM LINUX 外部RTC实时时钟驱动移植(RX8025) Author: chad Mail: linczone@163.com 开发板:AT91SAM9260 内核版本:linux-2 ...

  2. 嵌入式基于Linux电机控制,基于嵌入式arm+linux平台的直流电机调速控制系统.pdf

    2012--2013 学年第 二 学期 物电 学院期末考试卷 嵌入式系统与应用 学号 : 姓名 : 班级 : 成绩: 评语: 装 订 (考试题目及要求) 嵌入式大作: 采用实验箱上的电位器作为信号输入 ...

  3. arm linux免驱usb声卡,arm linux利用alsa驱动并使用usb音频设备

    一.背景: arm linux的内核版本是3.13.0 二.准备工作 添加alsa驱动到内核中,也就是在编译内核的时候加入以下选项: 接下来就重新编译内核即可 三.交叉编译alsa-lib和alsa- ...

  4. arm linux设置ip地址命令,ARM Linux系统修改动态IP为静态IP地址

    # Wired or wireless interfaces auto eth0 #iface eth0 inet dhcp #        pre-up /bin/grep -v -e " ...

  5. arm linux下看门狗应用,arm linux watchdog 看门狗

    目前手上有个项目需要设计看门狗,是arm+CPLD 方式.由于对看门狗要求很高,打算做一个双看门狗,arm CPLD互相为 对方的看门狗.理论上CPLD是不需要看门狗的,还是这么去设计了.接下来对看门 ...

  6. arm linux嵌入式网络控制系统,基于ARM uCLinux的网络控制系统设计与实现

    引言    随着网络和通信技术的发展,嵌入式系统现已进入高速发展阶段.并在社会各个领域得到了广泛的应用.本文介绍了一种采用ARM+uCLinux作为开发平台.实现基于TCP/IP的远程系统监控.从而取 ...

  7. arm linux内核调试,kgdb在ARM开发板上调试kernel成功

    大概几个注意点: 1.公版的Linux需要打kgdb补丁的,kgdb官方那边可能不支持新版本的内核(我的是2.6.18),可以在下面的网址找到,但是ARM上调试需要打哪些补丁,不是很清楚,网上的几篇中 ...

  8. arm linux qt5中文字库,Qt5 Font arm linux

    1. ubuntu 下查看当前字体库命令: fc-list /usr/share/fonts/chinese/msyhbd.ttf: Microsoft YaHei UI:style=Bold,Neg ...

  9. arm linux读cpu id,基于ARM架构的芯片获取CPU信息(cpuID)的多种方法

    由于工作的原因,要获取到ARM芯片的cpuid. 了解下存储cpu信息的寄存器内容: CPUID寄存器内容: 字段名:Implementer(venter 销售ID)|Variant(大版本号) | ...

  10. arm linux ip配置文件,手动修改ARM Linux的静态IP和用QT获取和修改IP

    http://blog.csdn.net/a15868717540/article/details/7165287 这是第一种方式 //读取部分 QSettings *ConfigIni = new ...

最新文章

  1. LeetCode 161. One Edit Distance--Python,Java,C++解法
  2. 新书上市 | NetLogo开荒之作!
  3. 学术新星畅谈计算机视觉科研之路:视觉研究已经成熟,跨学科方法成为趋势...
  4. mysql ef6 事务_使用事务-EF6 | Microsoft Docs
  5. 【盘它!】那些让效率MAX的工具和方法(Mac篇)
  6. 关于vmware 桥接 不识别无线网卡 问题解决方案
  7. 软件压力测试linux服务器,使用http_load来给Linux系统的服务器做压力测试
  8. Javascript继承4:洁净的继承者----原型式继承
  9. Android面试题总结加强版(二)
  10. 再有人问你volatile是什么,把这篇文章也发给他(深入分析)
  11. 三万字速通SSM框架入门知识点,快速上手CRUD
  12. python随机发红包_python 微信红包随机金额
  13. android sqlite 多对多,SQLite多对多的关系?
  14. Windows 64位下安装Redis超详细教程
  15. vue2.x 给一个对象里添加一个没有的属性
  16. @babel/polyfill按需加载
  17. 卧槽!真可恶,竟然有人贩卖儿童软色情表情包,网友:...
  18. ps cs6导出html,渲染视频使用不了是怎么回事?pscs6ex – 手机爱问
  19. Atitit.软件与编程语言中的锁机制原理attilax总结 1. 用途 (Db,业务数据加锁,并发操作加锁。 2 2. 锁得类型 3 2.1. 排它锁 “互斥锁 共享锁 乐观锁与悲观锁 乐观锁:
  20. 华为马海旭:+智能,IoT行业云服务使能产业物联网

热门文章

  1. 阿里巴巴60万年薪抢毕业生 必须是公认技术牛人
  2. 阿里代码扫描插件安装 (IDEA)
  3. 前端相关的一些小工具
  4. Vue之通过连接数据库的接口获取列表实现添加删除功能
  5. 地方高考信息管理系统方案
  6. Eclipse生成JavaDoc时指定字符集, 避免页面乱码
  7. 2021各国人均GDP(IMF2021年10月版)
  8. 卫星定位导航行业的产业链
  9. 计算机科学班(原acm班),计算机科学创新实验班(以下简称ACM班)培养计划.doc
  10. mysql画事实表_sql生成事实表数据库