Java Virtual Machine:跨语言的平台
Java Virtual Machine不关心运行在其内部的程序到底是何种语言编写的,它只关心“字节码”文件。JVM是编程语言无关的,并不会单纯地与Java语言“绑定”,只要其他编程语言的编译结果满足并包含JVM的内部指令集,符号以及其他辅助信息,就能被JVM识别并装载运行。
1. Java Virtual Machine发展历程
1.1 Sun Classic VM
Sun Classic VM是Sun公司于1996年发布的第一款商用JVM,它内部只提供解释器,如果使用JIT编译器,就需要进行外挂。
1.2 Exact VM
为了解决Sun Classic VM存在的问题,Sun公司在发布jdk1.2时,提供了Exact VM。它具备了现代高性能虚拟机的雏形:热点探测、编译器与解释器混合工作模式。不过它只在Solaris平台短暂使用,最终被HotSpot取代。
1.3 HotSpot VM
Sun公司在发布jdk1.3时,提供了默认的HotSpot VM虚拟机。名称中的HotSpot就是热点代码探测技术,它可以通过计数器找到最具有编译价值的代码,触发即时编译器或栈上替换;并通过编译器与解释器协调工作,在最优化的程序响应时间与最佳执行性能中取得平衡。
1.4 JRockit VM
JRockit VM由BEA公司开发,它专注于服务器应用。JRockit不太关注程序启动速度,所以内部不包含解释器实现,全部代码都靠即时编译器编译后执行。 大量的行业基准测试显示,JRockit VM是最快的JVM。
1.5 J9 VM
J9 VM由IBM公司开发,全称:IBM Technology for Java Virtual Machine,简称:IT4J,内部代号:J9,它广泛用于IBM的各种Java产品。
1.6 Zing VM
Zing VM是一个从Sun HoSpot VM fork出来的一个高性能JVM,可以运行在Linux/x86-64平台上。Azul为它重新写了一套GC,也修改了VM内的许多实现细节。
1.7 Apache Harmony
Apache Harmony是IBM和Intel联合开发的开源JVM,由于未JCP认证,最终于2011年退役。虽然Apache Harmony未被大规模商用,但它的Java类库代码被吸纳进了Andriod SDK。