Java体系结构:
l Java程序设计语言
l Java class文件格式
l Java应用编程接口(API)
l Java虚拟机
Java虚拟机的主要任务是装载class文件并执行其中的字节码,JVM包含一个类装载器(class loader),它可以从程序和API中装载class文件。Java API中只有程序执行时需要的那些类才会被装载。字节码由执行引擎来执行。
不同的Java虚拟机种,执行引擎可能实现得非常不同。在由软件实现的虚拟机种,最简单的执行引擎就是一次性解释字节码。另一种执行引擎更快,但是也更消耗内存,叫做“即时编译器”(just-in-time compiler)。在这种情况下,第一次被执行的字节码会被编译成本地机器代码。编译出的本地机器代码会被缓存,当方法以后被调用的时候可以重用。第三种执行引擎是自适应优化器。在这种方法里,JVM开始的时候解释字节码,但是会监视运行中程序的活动,并记录下使用最频繁的代码段。程序运行的时候,JVM只把那些活动最频繁的代码编译成本地代码,其他的代码由于使用得并不是很频繁,继续保留为字节码,由虚拟机继续解释他们。