jvm:java虚拟机的缩写。是一种用于计算设备的规范,通过jvm来运行.class字节码文件。
来看一下c和java程序运行的不同。


(上图来自计算机组成原理+硬件软件接口)
如上图,一个java程序首先被编译成一个二进制版本的java字节码形式。然后就可以在解释器——jvm上运行,在程序运行的时候,jvm链接java库中一些需要调用的方法。为了得到更好的性能,jvm能够调用即时(JIT)编译器,在运行它的机器上能够选择性的把一些方法变异成宿主机器上的本地机器语言。(java虚拟机:解释java字节码的程序)
优势:java程序会首先被编译成易于解释的指令序列——java字节码。解释的优势是可移植性,一处编译,到处运行。不足是性能较差,但是这个不足在后续的优化中慢慢改进,直到现在,在某些方面超越了C语言的直接编写。方案是实现程序执行的同时可以进行翻译的编译器。这个即时编译器(just in time complier),通过记录找到程序运行的热点方法,然后编译成jvm宿主机的指令序列。
最常用的虚拟机也是接下来内容中描述的:hotspot。
现在主流的java编译器:idea,以前多用eclipse
网友评论