第一部分
第一张 走进Java
这一章主要讲述的是 Java发展的历程和不同公司研发Java虚拟机(虚拟机家族丰富的恩怨纠葛)。在这个虚拟机家庭中HotSpot以他独有的优势在虚拟机中独占鳌头,经久不衰。还有就是最后一节是一个实战事例,就是自己编译JDK(如果window系统可以安装VMware下安装Linux系统(ubunto版本)搭建编译环境),这个例个人感觉很不错,自己也在着手在干,也希望有兴趣的同学也去做一做。
第一点 Java技术体系
按照功能划分: Java核心类库, Java虚拟机, Java程序设计语言。
按照产品划分: 1. Java Card 支持Java小程序运行在小内存设备上的平台。
2. Java ME 支持Java程序运行在移动终端上的平台。
3. Java SE 支持面向桌面级应用上的平台。
4. Java EE 支持使用多级架构的企业应用的Java平台。
第二点 Java虚拟机家族
1)Java虚拟机鼻祖: sun Classic / Exact VM
对于sun Classic虚拟机来说它只是单纯的通过解释器来执行Java程序,而他的编译器需要通过外挂的形式,但是它是世界上第一款商用虚拟机,这样子就足以让我们记住它。
Exact VM来说,它是有了现代高性能的虚拟机的雏形,对于来说它有准确的管理内存的优势,但是不幸的是不久它就被HotSpot VM取代了。而且在windows和Linux的试用版本都没发布。
2)武林盟主:HotSpot VM
再来说一说HotSpot VM它不仅继承了sun之前虚拟机的准确式的内存管理和他自己的热点代码探测技术,还有优秀的理念和成果。使它成为了全世界使用最多的虚拟机。最后说一下其实它最初不是Java语言研发的,是为Self虚拟机设计的。
3)小家碧玉:Mobile / Embedded VM
因为sun/oracle公司在Java ME发展不太好(在智能手机这部分主要是Android和ios占领)所以最终把Java ME这部分规划到Java SE Embedded下。
4)天下第二:BEA JRockit / IBM J9 VM
BEA JRockit当时主要是为服务器硬件和服务端应用场景的一款虚拟机,它的代码全部是通过即时编译器完成的,而且他的垃圾回收器在当时也是比较优秀的,但是EBA被oracle收购了,他最终永远的停留在R28版本。
J9是一款和HotSpot相类似的,它发展全面在服务端,桌面开发,嵌入式的多用途的虚拟机,在职责分离和模块化这部分相比HotSpot虚拟机要好。J9这款虚拟机至今还非常活跃。
5)软硬合璧:BEA Liquid VM / Azul VM
Liquid VM 可以直接运行在自家的Hypervisor系统的虚拟机,可以说他本身就实现操作系统的必要功能,自身就可以直接控制硬件操作,可以最大的发挥硬件的能力,最终它也停止更新。
Azul VM 是运行在vega系统上的Java虚拟机,他又有优秀的PGC和C4收集器,可以控制多个cpu和管理数百GB内存的硬件资源。
6)挑战者:Apache Harmony / Google Android Dalvik VM
对于Harmony和Dalvik只能称之为虚拟机不能称Java虚拟机,想要兼容Java体系,必须通过TCK的兼容性测试,由于sun没有把TCK的授权提供给Apache,导致Apache退出JCP组织,sun又开源了JDK,最终导致Apache领导的Apache Harmony不了了之。
Dalvik是Android的虚拟机,但是在Android 5.0时候就被ART替代。
7)Graal VM一款在HotSpot虚拟机上开发的跨语言的全栈虚拟机。
第三点 展望未来
总的来说Java未来是很难被替代的。
未完更新中,还会优化内容的!!!