SUN Classic VM是一款解释型的java字节码执行引擎

java虚拟机分为两类执行引擎,①解释型②及时编译(Just-In-Time) 执行引擎

两者的区别是解释型是一行一行执行代码,类似于javascript、python这类解释型的编程语言。
及时编译 是将字节码中的热点代码编译成机器码,并且将机器码缓存到方法区的代码缓存区。


Sun Classic VM诞生于java1.0(1996年),是世界上第一款商用Java虚拟机,在jdk1.4(2002年)后被完全淘汰!

Sun Classic VM内部只提供解释器,使用JIT编译器需要外挂,并且一旦使用JIT就会导致解释器不能执行


摘录《深入理解java虚拟机》----周志明----第三版的部分原文:

 1996年1月23日,Sun发布JDK 1.0,Java语言首次拥有了商用的正式运行环境,这个JDK中所带的 虚拟机就是Classic VM。这款虚拟机只能使用纯解释器方式来执行Java代码,如果要使用即时编译器那 就必须进行外挂,但是假如外挂了即时编译器的话,即时编译器就会完全接管虚拟机的执行系统,解 释器便不能再工作了。在JDK 1.2及之前,用户用Classic虚拟机执行java-version命令,将会看到类似下 面这行的输出:


java version “1.2.2” Classic VM (build JDK-1.2.2-001, green threads, sunwjit)


  其中的“sunwjit”(Sun Workshop JIT)就是Sun提供的外挂编译器,其他类似的外挂编译器还有 Symantec JIT和shuJIT等。由于解释器和编译器不能配合工作,这就意味着如果要使用编译执行,编译 器就不得不对每一个方法、每一行代码都进行编译,而无论它们执行的频率是否具有编译的价值。基 于程序响应时间的压力,这些编译器根本不敢应用编译耗时稍高的优化技术,因此这个阶段的虚拟机 虽然用了即时编译器输出本地代码,其执行效率也和传统的C/C++程序有很大差距,“Java语言很慢”的 印象就是在这阶段开始在用户心中树立起来的。

  Sun的虚拟机团队努力去解决Classic虚拟机所面临的各种问题,提升运行效率,在JDK 1.2时,曾 在Solaris平台上发布过一款名为Exact VM的虚拟机,它的编译执行系统已经具备现代高性能虚拟机雏 形,如热点探测、两级即时编译器、编译器与解释器混合工作模式等。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐