失效链接处理 |
Java虚拟机向ARM平台的移植 PDF 下载
本站整理下载:
相关截图:
![]()
主要内容:
Java虚拟机( JVM, Java Virtual Machine) 是 Java 技术的重要
组成部分, 它是一个抽象的计算机, 和实际的计算机一样, 它具
有一个指令集并使用不同的存储区域。它负责执行指令, 还要
管理数据、内存和寄存器。Java 解释器负责将字节代码翻译成特
定机器的机器代码。我们知道, Java 语言的一个非常重要的特点
就是与平台的无关性。而使用 Java 虚拟机是实现这一特点的关
键。一般的高级语言如果要在不同的平台上运行, 至少需要编
译成不同的目标代码。而引入 Java 语言虚拟机后,Java 语言在不
同平台上运行时不需要重新编译。 图 1 Java 组成部分及其关系
Java 虚拟机是程序与底层操作系统和硬件无关的关键。它
的下方是移植接口, 移植接口由两部分组成:适配器和 Java 操作
系统, 其中依赖于平台的部分称为适配器; JVM通过移植接口
在具体的平台和操作系统上实现; 在 JVM的上方是 Java 的基本
类库和扩展类库以及它们的 API , 利用 Java API 编写的 Application 和 Applet 可以在任何 Java 平台上运行而无需考虑底层平
台, 就是因为有 Java 虚拟机实现了程序与操作系统的分离, 从
而实现了 Java 的平台无关性。
1 KVM 移植
KVM是 Kilobyte Virtual Machine( 千 字 节 虚 拟 机) 的 缩 写,
可以为微型电子设备提供完整的 Java 运行环境。除了一些微型
电子设备所必需的适当功能有所不同外, 它是由 Java 虚拟机规
范定义的真实的 Java 虚拟机。具有下面几个特征:
容量小, 仅占用 60KB 的虚拟机核心静态内存
轻便, 精巧
模块化, 可订制
尽可能完全紧凑地保证不牺牲其他设计目的
为了尽量减少虚拟机的开销, SUN 公司的开发人员在设计
时对功能作了一些削减, 使得 KVM产生了一些限制, 例如:
不包含 finalize 方法
不支持本地借口 jni
用户不能自己定义类装载器
不支持反射
不支持线程组和 Demon Thread
大大简化的错误处理限制
移植 JVM首先要对编译选项进行设置。
1.1 编译标签、参数及宏设定
这 里 介 绍 的 编 译 的 标 签、参 数 和 宏 设 定, 均 在 VmCommon/h/main.h 文 件 中 定 义。可 以 通 过 修 改 VmUnix( Win) /machine_md.h 文件中的设定来达到同样的目的, 另外一种方法是
通过 makefile 来设定编译参数。
1.1.1 通用的编译选项:
#define COMPILER_SUPPORTS_LONG 1
// 是否支持 64 位长整(1 代表支持)。
#define NEED_LONG_ALIGNMENT 0
// 指示 KVM宿主系统将设定所有的 64 位整数为 8 字节。
#define BIG_ENDIAN 0
#define LITTLE_ENDIAN 0
// 大小端设定, 应该在移植的平台相关的头文件里面设置
其中一个为 1。 袁文菊: 讲师 博士研究生
|