说明
翻译KVM的文档,只是为了个人学习以做记录.如果有翻译不周到的地方,请指出,我会修正的.
为何翻译该文档
此KVM不是目前特别火的Kernel-based Virtual Machine(一个开源的系统虚拟化模块).而是一个JAVA 的虚拟机.是J2ME cldc 的一个实现.其源码的难度比hotspot简单多了.因此,想通过研读KVM,以加深对hotspot的理解
目录结构
概览
将发布包解压到您选择的任何目录中。这将创建一个包含以下子目录的目录j2me_cldc:
- api
- bin
- build
- doc
- jam
- kvm
- tools
这些目录的结构见下表
子目录
|
描述
|
---|---|
api
|
包含与当前版本一起提供的Java库源代码
|
bin
|
包含所有可执行文件和编译后的java 库的class 文件
|
build
|
包含所有的makefile 文件
|
doc
|
包含所有的文档.
|
jam
|
包含可选的JAM (Java Application Manager)组件的源代码,该组件由KVM提供
|
kvm
|
包含KVM的源码
|
tools
|
包含该版本所提供的一系列的工具类(JavaCodeCompact, preverifier, KDWP Debug Proxy)
|
kvm/VmCommon 目录介绍
kvm的所有公共的、与平台无关的源代码都位于kvm/vmcomon/src/目录中。所有常见的include文件都在kvm/vmcomon/h/目录中。
平台特定的源文件和包含文件应放在kvm/vmport/src/和kvm/vmport/h/ 目录中,其中port将替换为平台名称(例如kvm/vmwin、kvm/vmplot、kvm/vmunix)。
有些平台可能选择创建kvm/vmport/build/subdirectory,该目录保存属于生成过程的文件,但本身不是源代码的一部分.
下表概述了kvm/vmcommon/src/和kvm/vmcommon/h/中包含的kvm源代码文件。
文件名
|
描述
|
---|---|
StartJVM.c
|
启动虚拟机和命令行参数的读取
|
bytecodes.c
|
重新设计字节码解释器的定义.
|
cache.h
|
用于加快方法查找和支持“快速分派”字节码的内联缓存操作。
|
class.h
|
用于表示Java类的内部运行时数据结构和操作.
|
events.h
|
事件系统的实现
|
execute.h
|
解释器执行宏和重新设计的字节码解释器所需的操作(自kvm 1.0.2以来).
|
fields.h
|
用于表示字段和方法的内部运行时数据结构和操作。
|
fp_math.h
|
浮点数操作接口
|
frame.h
|
栈帧和错误处理
|
garbage.h
|
垃圾收集和内存管理
|
global.h
|
各种全局变量和定义
|
hashtable.h
|
Hashtable的实现,虚拟机内部使用
|
interpret.h
|
字节码解释程序。请注意,从kvm 1.0.2开始,实际的解释器代码和字节码定义位于其他文件中(
bytecodes.c
|
kni.h
|
KNI 支持
|
loader.h
|
class加载和class 文件格式检查。
|
log.h
|
调试和分析的日志记录/诊断操作
|
long.h
|
以可移植方式处理64位操作的特殊宏。
|
main.h
|
编译选项和系统范围的默认设置。
|
messages.h
|
错误和异常信息
|
native.h
|
本地函数表的操作和核心本地库函数
|
pool.h
|
用于表示常量池的运行时数据结构和操作
|
profiling.h
|
用于分析虚拟机执行情况的数据声明和操作.
|
property.h
|
访问Java系统属性的操作。
|
rom.h
|
romizer(javadecompact工具)所需的宏。
|
runtime.h
|
需要为每个KVM平台定义的特定于机器的操作的功能模板。
|
stackmap.c
|
用于支持精确垃圾收集的StackMap操作。
|
thread.h
|
用于多线程和Java线程管理的内部运行时数据结构和操作。
|
verifier.h
verifierUtil.h
verifierUtil.c
|
class 文件的检验
|
kvm/VmExtra 目录介绍
目录kvm/vmextra/包含可能对大量端口有用的其他组件。这些文件包括Windows/Unix最常用的网络协议的实现、在具有常规文件系统的目标平台上支持类加载的文件接口以及JAR文件 reader/inflater。该目录还包含Java级调试器和KDWP(KVM调试线协议)接口的实现。
此外,该目录还为异步事件处理定义了一些可选宏,并定义了在非嵌入式、基于命令行的目标平台(如Windows和Solaris)上所需的虚拟机启动操作.
文件名
|
描述
|
---|---|
async.h
|
用于支持异步I/O的宏
|
loaderFile.c
|
对于那些具有“真实”文件系统的平台,文件系统、类加载器和JAR阅读器之间的低级绑定。
|
main.c
|
具有文件系统并支持从命令行启动VM的平台的默认主程序。
|
jar.h
inflateint.h
inflate.c
|
JAR 文件 读取和解压缩
|
resource.c
|
基于流的外部资源读取协议的实现
|
debugger.h
debugger.c
debuggerCommands.h
debuggerStreams.h
debuggerInputStream.c
debuggerOutputStream.c
debuggerSocketIO.c
|
Java级调试器和KDWP(KVM调试线协议)接口的实现
|
kvm/VmExtra/src/fp 目录介绍
目录kvm/vmextra/src/fp包含支持CLDC规范1.1版所需的各种浮点函数所需的库函数。有关浮点支持的更多信息,请参阅第10章。