发信人: zombies()
整理人: zjxyz(2002-01-26 13:38:08), 站内信件
|
Java Virtual Machine 就是指Java虚拟器,以下简称VM.关于VM的概念,
最早出自CPU模拟器,众所周知的PC上的游戏机模拟器采用的便是和Java VM
类似的技术.
java source code被编译成byte code后,其实已经是很类似机器代码了,
只不过没有真正能运行这类code的CPU而已,于是为了能达到在不同平台上
运行的目的,VM的概念被大力推广. 从简单的角度说,VM其实就是把java
bytecode 翻译成特定的机器代码, 这和解释型编程语言不同,我们会在
下面讲到.
第一代的VM大多采用直接解释的方法,也就是说一句一句地把bytecode翻译
成机器代码. 但这里有个缺点,如遇到循环, VM就不得不一次次重复翻译已
经被翻译过的代码. 而每一次翻译均需消耗一定的cpu时间.
于是出现了第二代的VM - JIT (Just In Time Compiler)它只在bytecode
需要被翻译时才做翻译工作.怎么实现呢? 打个比方,JIT VM可以事先把一段
bytecode翻成machine code,并把这段code放进buffer, 当运行循环是,就
反复调用这段翻译好的代码! JIT的效率取决于他分析重复调用的本领,把翻
译的工作量限制到最小,以便让出CPU时间来运行程序逻辑.
第三代的VM叫hotspot,我们以后做介绍.
有了VM以后等于有了一个虚拟的CPU, 但我们还需要一定的外部设备来帮助
完成计算任务,于是出现了JNI, 它的作用在不同的场合有不同的含义. 有时
你可一用JNI直接写一个设备驱动程序, 有时JNI可被作为lightweight
wrapper来封装本地系统的资源.再加上Java本身提供的标准库, VM提供了
再多平台应用的环境!
-- Zombie
ICQ:6256854
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 203.26.36.9]
|
|