是的。JAVA虚拟机的确需要把class内的代码装载,然后翻译成二进制代码运行。操作系统内的二进制已不是单片机时代的汇编二进制代码这样干脆了当,而是二进制要让操作系统帮我们运行,因而二进制要符合那个平台的标准。java虚拟机就成了一个沟通操作系统的与应用程序的中间层,他对java的代码表现出一样的使用接口,而针对操作系统底层却是完全针对的编写。运行java代码的时候,是装载代码,初始化处理,然后翻译成操作系统可以识别的二进制,运行。当然这个过程是在java的进程内进行的。这就是为什么不同的平台系统,需要安装不同的JAVA虚拟机。
这样就有了java的优点,一次编写,到处运行。不是说虚拟机可以到处运行,而是在一个操作系统上,只要安装了java虚拟机就能运行java程序。
至于java虚拟机的原理,这样几百几千个字是搞不定的。建议去查看相关论文、专著。或者阅读java的源代码,java虚拟机是开放源代码的。
大致是这样的,java代码运行时,是“即时编译”,这样的过程就像C程序,不过c没有运行时,而是直接编译成了针对那个平台的代码。java即时编译,因而牺牲了部分性能,但换取了移植性。
不建议在这个问题上深究。java有自己的维护社区,如果您对这个感兴趣,可以加入他们的开源团队。使用java就是为了研究高层的东西,比如接口,业务逻辑,UML等,换句话说是更符合我们应用的场合。如果对底层感兴趣,应该学习操作系统、编译原理等,这些内容有提及。
哥们,我可以把我的理解告诉你
java虚拟机就相当于一个类库(。net中定义的是类库,也相当于C#中的frame work 2.0),java语言中有许多函数,java虚拟机中保存了对这些函数的定义,也就是说当你调用这些函数的时候,如果没有java虚拟机,电脑就不会知道这些函数的定义是什么,执行不了;这里虚拟机就相当于翻译,把你使用的函数翻译成可以让电脑直接执行的语言,也就是二进制,然后交给处理机(CPU)进行二进制处理,这里指的就是相应的计算了
还不明白,可以hi我
java对于不同的操作系统,会有不同的运行环境,它的主要工作就是将java代码转化为相对应的机器语言,在不同的机器上都能运行。
你们学习java还学习jvm的运行机制么??好奇问一下