KVM Porting 指南⑴
>英文原名:KVM Porting Guide (KVM 1.0.3)
翻译:Ding
E-mail:[email protected]
本文是j2me_cldc-1_0_3附带的KVM Porting Guide的翻译,对移植KVM到特定
的平台上很有参考价值。原书有100多页,我尽量把它译完,但时间有限,能否完
成我也无法确保。希望对有志于port KVM的朋友有所帮助。如果有什么错漏之处,
或是您觉得不妥的地方,欢迎您email我,讨论商榷。
如您要转贴,请保留原出处,并勿做删改。谢谢。
1。KVM简介
KVM(K Virtual Machine 或称 KJava Virtual Machine)是一种小巧,易于
移植的JVM,被专门设计用来支持小型的,资讯有限的设备,例如手机,PDA等。
KVM团队的最高设计目标是开发一个最小的且完整"的JVM,它必须能提供对
核心Java语言的支持并能运行在资源有限的设备上(例如只有几十到几百Kb)。
更规范的说, KVM的设计要点有:
·小型,VM的核心只占据大约60Kb的静态内存空间。(根据不同的平台或编译
选项有所不同)
·轻巧易于移植。
·模块化,易于定制。
·尽量做到既完整又快速。
KVM是用C语言实现的,因此可以方便的移植到许多平台上,只要你能找到该平
台的C compiler。KVM是J2ME的一部分,KVM通常被作为CLDC和MIDP构架的底层实现。
KVM是由sun实验室最初的Spotless系统发展而来。(注:sun最初提出KJava是用来
开发palm os的,那时Palm上的Kjava程序称为Spotlet,类似于今天的MIDlet。)
2。KVM1.0.2与KVM1.0.3的区别
主要包括:
·性能优化-重新设计了显示/同步操作(monitor/synchronization),优化了
JavaCodeCompact工具的代码产生方式。优化了字符串操作(string)。
·增强了事件(even)处理系统,异步输入输出模式(asynchronousI/O)以及
networking库(用来使CLDC和MIDP联系的更加紧密)。
·增强了Java级的debug接口,预检验器(preverifier)和紧缩的垃圾收集器
(garbage collector)。
·更有效的JAM(Java Application Manager)。
·Windows/Unix版的KVM可以在命令行中调整堆(heap)的大小。
3。对编译器的要求
你的C compiler 必须兼容ANSI-C(这好像不算什么要求^-^)你的compiler必
须定义基本数据类型如下:
表1-基本数据类型
------------------------------
Type Description
------------------------------
char 8-bit
signed char 8-bit
unsigned char 8-bit
short signed ,16-bit
unsigned short unsigned 16-bit
int signed,16 or 32 bits.
unsigned int 16 or 32 bits.
long signed, 32-bit
unsigned long 32-bit(注:注意在Java语言里long为64bit)
void * 32-bit pointer
------------------------------
如果你的J2ME configuration或profile支持浮点数,那你的编译器还必须支持
浮点类型如下:
----------------------
Type Description
----------------------
float 32-bit floating point value
double 64-bit floating point value
----------------------
我们的参考实现(referenceimplementation)只在指针长度为32bit的机器上做
了测试,我们并不能保证在具有长指针(far pointer)或其他类型的指针的平台上
运行。
下列compiler已被证实可以成功编译KVM:
■Sun C Compiler 5.0, 5.2 and 5.3 on Solaris,
■GNU C 2.91.66 (egcs-1.1.2) compiler on Red Hat Linux,
■GNU C 2.95.2 compiler on Solaris and Windows NT 4.0,
■Microsoft Visual C++ 6.0 Professional on Windows NT 4.0 and Windows2000
----------待续------------