日期:2014-05-20  浏览次数:20656 次

关于JVM的一些小白问题。
各位大神,小弟刚刚接触java,关于jvm这块有些小问题请教:
1.像c、c++一类的高级语言是否先编译为对应系统能认识的目标代码,再转为机器对应架构的机器语言运行?
2.如第一点理解没错的话,那么java语言是否相当于先编译为java的jvm可以识别的目标代码,进而通过jvm与操作系统打交道,直接编译为对应的机器语言运行?
3.如果上述理解没错的话,那么java的jvm存在意义是什么?我们只要像c一样在不同的系统上安装相应的目标代码编译器把java编译成对应的系统目标代码不是更直接么?
------解决方案--------------------
为java程序提供了强大的可移植性,
以及不受硬件平台的限制,在任何可以安装jvm虚拟机的机器上 所运行的java程序可获得一致的结果

个人的一点理解
------解决方案--------------------
java 是跨系统的语言,可以一次编译,多处使用。java编译的class文件和具体的环境信息没有关联,不像C语言,必须在要运行的环境上进行编译。JVM是一个解析java 编译的class文件的工具。java运行中的class文件和具体系统环境没多少关系,解析class文件的是JVM。
------解决方案--------------------
1,2理解基本对的。对于第三点,也就是java解决的问题,利用速度换取多处运行的好处