当前位置:早雪网网络学院编程文档Java → KVM Porting 指南⑵

KVM Porting 指南⑵

减小字体 增大字体 作者:不详  来源:supcode.com收集整理  发布时间:2005-7-22 18:42:44

英文原名:KVM Porting Guide (KVM 1.0.3)

   翻译:Ding
 
 E-mail:wu_yi_ding@yahoo.com
 
   本文是j2me_cldc-1_0_3附带的KVM Porting Guide的翻译,对移植KVM到特定

的平台上很有参考价值。原书有100多页,我尽量把它译完,但时间有限,能否完

成我也无法确保。希望对有志于port KVM的朋友有所帮助。如果有什么错漏之处,

或是您觉得不妥的地方,欢迎您email我,讨论商榷。

如您要转贴,请保留原出处,并勿做删改。谢谢。    


4。KVM源码概览

4.1目录结构概览

   解压KVM包后,在你的目录下生成如下子目录。(假定父目录为j2me_cldc1.0.3)


目录j2me_cldc1.0.3:

■api-Java类库源码

■bin-可执行文件,编译的类库

■build-编译用的makefile

■docs-说明文件

■jam-JAM(Java Application Manager)源码

■kvm-KVM源码

■samples-试例程序源码

■tools-辅助工具源码(如JavaCodeCompact, preverifier,kdp,palm tool等)


目录j2me_cldc1.0.3\kvm:

■VmCommon-所有公用的,平台无关的KVM源码都在该目录下

■VmExtra-公用的,可选的组件的源码

■VmUnix-针对Unix

■VmWin-针对Windows


目录j2me_cldc1.0.3\kvm\VmCommon:(所有公用的,平台无关的KVM源码)

■h-include文件

■src-源码

注:当你要port时,可以把你自己平台相关的源码置于kvm目录之中。例如我要port

到WinCE我可以这样安排我的源码(kvm\VmWinCE\src-我的源码,kvm\VmWinCE\h-

我的头文件,kvm\VmWinCE\build-我的makefile)。


4.2 KVM源码功能简述
   
   在j2me_cldc1.0.3\kvm\VmCommon\src和j2me_cldc1.0.3\kvm\VmCommon\h中包含

了KVM所有公用的,平台无关的源码和头文件,如下表所示:

------------------------------------
File               Description
------------------------------------
StartJVM.c         VM的启动和命令行的读取

bytecodes.c        Java bytecodes的定义,自KVM1.0.2后,bytecode解释器被
                 
                  从新设计,这部分从interpret.c分离出来。你可以定制VM,
                 
                  使用这里定义的bytecode的子集或超集。

cache.h            内联缓存(inlinecaching)的支持,用以加快方法检索(

cache.c            method lookup)的速度,并支持“fast” bytecodes.(注:
                 
                  关于methodlookup请参考JLS15.12.4)
     
class.h            运行时java类的内部数据结构和操作
class.c

events.h           实现事件处理系统
events.c

execute.h          解释器的执行宏和操作
execute.c

fields.h           用以存储不同类型的域(field)的运行时内部结构。当一个
fields.c          
                  新类被载入VM时,就会生成一张由这些域组成的表。

frame.h            定义栈帧(stack frame)和异常处理(exceptionhandling
frame.c            
                   )的操作。


garbage.h       垃圾处理器和内存管理。
garbage.c
collector.c
collectorDebug.c

global.h           大量全局变量的定义
global.c

hashtable.h        实现VM内部使用的哈希表
hashtable.c


interpret.h        bytecode解释器。
interpret.c

loader.h           类载入器。
loader.c

log.h              记录并输出运行时VM的诊断信息
log.c

long.h             处理64bit运算的特殊的宏

main.h             编译的选项及系统的预制设定。

messages.h         错误与警告信息

native.h           JVM所需的native函数和核心native库,注意,KVM是不使用
                 
native.c           JNI(Java Native Interface)的,JNI对小设备来说开销太大
                 
nativeCore.c       了。

pool.h             常量池(Constant pool)的管理。
pool.c

profiling.h        用以描述VM的执行的数据声明与操作
profiling.c

property.h         取得Java系统特性的操作。
property.c

rom.h              ROMizer(JavaCodeCompact tool) 所需的宏.

runtime.h          平台特有的操作的函数原型定义,注意这里定义的函数通过
           
                  一个runtime_md.c来实现。这也就是说runtime_md.c是建立
                 
                  在你想要port的平台特性之上的。

stackmap.c         Stackmap操作用于支持额外的垃圾收集。

thread.h           多线程的支持与java的线程管理。
thread.c

verifier.h         类文件审核器
verifier.c
------------------------------------
   
   在j2me_cldc1.0.3\kvm\VmExtra\src和j2me_cldc1.0.3\kvm\VmExtra\h中包含

了KVM所有外加的公用平台无关的源码和头文件,其中主要包括windows、Unix下最

常见的网络协议的实现;把类载入目标平台的文件接口(该目标平台拥有一个常规

的文件系统);检视,解压缩JAR文件的工具;还有Jave级的debugger和KDWP(

KVM Debug Wire Protocol)接口的实现。除了上述之外,还包括一些用来处理异步

事件的额外的宏,并定义了VM的一些在非嵌入式,基于命令行的系统(如windows和

Solaris)上运行所需要的启动操作。

\VmExtra中的文件如下表所示:

----------------------+--------------------------------------------------+
文件                   描述
----------------------+--------------------------------------------------+
async.h                支持异步I/O的宏。

loaderFile.c           从文件系统中载入Java类文件的操作。

main.c                 缺省的main程序,用于具备文件系统并支持VM从命令行启

                      动的平台。

jar.h                  阅读、解压Jar文件的相关操作。
inflate.h
inflateint.h
inflatetables.h
jar.c
inflate.c

commProtocol.h         windows、Unix下常见的网络协议的实现,如串行端口通
commProtocol.c         讯,套接字(socket),数据报(datagram)等。
socketProtocol.h
socketProtocol.c
datagramProtocol.h
datagramProtocol.c

resource.c             读取外部资源的流式(stream-based)协议的实现。

debugger.h             Java级debugger和KDWP接口的实现。
debugger.c
debuggerCommands.h
debuggerStreams.h
debuggerInputStream.c
debuggerOutputStream.c
debuggerSocketIO.c

fakeStaticMemory.c

[1] [2]  下一页


Tags:KVM,Porting,指南
[数据载入中...] [返回上一页] [打 印]