原文地址: www.sudo.ren/article/81?…
Java的体系结构主要由Java编程语言、字节码、Java API 和Java虚拟机相关技术组成。 1.Java语言编写程序; 2.前端编译器(javac)将Java源码编译为字节码文件(*.class); 3.JVM将字节码装载进其内部,然后解释/编译为对应平台上的机器指令。
Java继承了C语言的语法结构,改编了C++的对象模型。并且Java舍弃了C和C++中很多不安全的语法特性。比如:
Java源码的编译结果不是本地机器指令,而是字节码,这就很好的解决了程序的安全性,跨平台移植性等问题。我们可以将编译后的字节码部署到其他装有jre环境下,同样可以正常运行,这就是我们经常说的“一次编译,处处运行”
API即为应用程序编程接口,是一些预定义的接口,提供应用程序与开发人员给予软件或硬件的以访问一组例程的能力,而又无需访问源码或理解内部工作机制细节。其中包含了Java的基础类库集合,提供了一套访问主机系统资源的标准方法。
JVM是由一组规范所定义出的抽象计算机。负责将字节码装载到其内部,解释/编译为对应平台上的机器指令。我们接下来要学习的就是HotSpot VM,它是目前市面上高性能虚拟机之一。HotSpot具备热点探测功能,能将一个被频繁嗲用的方法或方法体中有效循环次数较多的代码块标记为“热点代码”,然后通过内嵌的双重JIT(Just In Time Compiler)编译器将字节码直接编译为本地机器指令。HotSpot中编译器和解释器并存,依赖热点探测功能确定字节码指令通过解释运行,还是编译运行。
虚拟机启动,解释器便开始发挥作用,不必等编译器全部编译完成再执行,这样可以节省很多编译时间。根据热点探测功能,编译器会将有价值的字节码编译为本地机器指令,以换取更高的程序执行效率。
系统与物理硬件自动选择哪种编译器,开发人员也可手动显示调用编译策略。默认情况下开启分层编译策略,由C1和C2编译器相互协调共同完成编译工作。