| |
java虚拟机模型
由于它的高度可移植性,java已经成为internet上的主要编程语言。
“模拟机”的概念是计算机工业界经常使用的对虚拟机的解释之一。这种虚拟机概念和ibm版的虚拟机非常不同。在ibm的概念中,系统内存和资源被分割,成为当前机器的精确拷贝。而对于模拟机,系统并不被分割,而是有一台新的“机器”或者虚拟机加载到当前系统中,在不改变当前系统的前提下,向用户提供不同的功能。这种类型的虚拟机被证明是非常强大的,它允许软件开发人员在一台完全不同的机器上仿效另一台机器。最近,这种观念创造了一种强大的计算机程序语言:java。
java程序设计语言依赖于被称做java虚拟机(java virtual machine,jvm)的模拟机。jvm使得程序员不是和系统打交道,而是和虚拟机打交道。因此程序员使用的函数是jvm内嵌的函数,而不是操作系统的函数。这非常先进,因为它提供了可移植性。如果相同的jvm安装在两个完全不同的机器上,那么同一个java程序应该在两台机器上都可以运行,因为java程序依赖于jvm,而不是运行它的系统。由于它的高度可移植性,java已经成为internet上的主要编程语言。许多web页面现在都和java程序结合在一起。这些java程序可以完成一些在浏览器中显示的任务。
同时,jvm也非常小。或者说,它不站用大量的内存。这意味着jvm可以被应用于许多不同的机器。例如,电视机,蜂窝移动电话,以及计算机,都可以。因此,完全有可能向我们今天正在使用的设备中添加像游戏这样的复杂功能。
它是如何工作的?
你现在所疑惑的可能是一个java程序究竟是如何工作的。如何使用jvm?好的,jvm是我们对抽象计算机的称呼。或者说,jvm是在“真正的”硬件平台和操作系统上用软件来实现的。java程序是为jvm编译,而不是系统。这就意味着程序员写的java程序由java编译器翻译成jvm执行的语言/代码。这些代码被称做字节代码(byte code)。字节代码可以被认为是jvm的机器语言。jvm把字节代码流解释成指令序列。然后这些指令被执行,生成期望的输出。图1.1展示了从java程序到最终执行的路线。
如图1.1所示,一旦字节代码被jvm解释,jvm指令就会被映射成操作系统指令或者硬件指令。这就意味着jvm实际上是使用操作系统和机器指令来实现它所获取的指令。因此,jvm的指令在每一个安装jvm的操作系统或机器上都必须有一个可能的映射才能工作。这就是为什么java语言并没有达到100%可移植的原因之一。可能有的jvm指令在一种操作系统上可以实现,而在另外一种操作系统上不能实现。
小结
java虚拟机的主要目的就是去解决计算机程序的可移植问题。问题是jvm完全解决这个问题了吗?答案是没有……它没有完全解决这个问题。但是,它提供了一种对大部分都有效的解决方案(尽管不是100%有效)。java已经实现相当高的可移植性。java的力量使人们可以开发许多跨平台的应用程序。java已经证明是有用的,强大的虚拟机实现。
|
|