1.1 概述:java过去、现在、未来简要概述
1.2 java技术体系
Java技术体系包括了以下几个组成部分:
- Java程序设计语言;
- 各种硬件平台上的Java虚拟机实现;
- Class文件格式;
- Java类库API;
- 来自商业机构和开源社区的第三方Java类库;
上述用图表示(JDK体系):
按照技术所服务的领域划分:
- Java Card:支持Java小程序(Applets)运行在小内存设备(如智能卡)上的平台。
- Java ME(Micro Edition):支持Java程序运行在移动终端(手机、PDA)上的平台,对Java API有所精简,并加入了移动终端的针对性支持,这条产品线在JDK 6以前被称为J2ME。有一点读者请勿混淆,现在在智能手机上非常流行的、主要使用Java语言开发程序的Android并不属于Java ME。
- Java SE(Standard Edition):支持面向桌面级应用(如Windows下的应用程序)的Java平台,提供了完整的Java核心API,这条产品线在JDK 6以前被称为J2SE。
- Java EE(Enterprise Edition):支持使用多层架构的企业应用(如ERP、MIS、CRM应用)的Java平台,除了提供Java SE API外,还对其做了大量有针对性的扩充,并提供了相关的部署支持,这条产品线在JDK 6以前被称为J2EE,在JDK 10以后被Oracle放弃,捐献给Eclipse基金会管理,此后被称为Jakarta EE。
1.3 java发展史
具体:可以参考周老师的原书,或者参考《Java核心技术:卷I基础知识(第10版)》凯S.霍斯特曼,第一章1.4节
1.4 Java虚拟机家族
1.4.1 虚拟机始祖:Sun Classic/Exact VM
- 世界第一款商用java虚拟机;
- 1996你那1月23日正式问世;
- jdk中带的虚拟机是Classic VM,这款虚拟机是使用解释方式来执行java代码,如果要使用即时编译就必须进行外挂,但是如果使用外挂了即时编译器的话,即时编译器会完全接管虚拟机执行系统。即时编译器包含:sunwjit(Sun Work-shop JIT)、Symantec JIT、shuJIT等;
- 由于解释器和编译器不能同时进行工作,故编译过程漫长,导致“JAVA语言很慢”的印象开始在用户心中树立了起来;
- JDK1.2时,曾在Solaris平台发布过一款名为Exact VM的虚拟机,他的编译执行系统已经具备现代高性能虚拟机雏形,如热点探测、两级即时编译器、编译器与解释器混合工作模式等,但是英雄气短,后来被外部引用的HotSpot取代;
- JDK1.3时,HotSpot VM为默认虚拟机,但是可以切换到Classic VM虚拟机,直到JDK1.4时候Classic VM退出;
1.4.2 武林盟主:HotSpot VM
- 相信所有Java程序员都听说过HotSpot虚拟机,它是Sun/OracleJDK和OpenJDK中的默认Java虚拟机,也是目前使用范围最广的Java虚拟机。但不一定所有人都知道的是,这个在今天看起来“血统纯正”的虚拟机在最初并非由Sun公司所开发,而是由一家名为“Longview Technologies”的小公司设计;甚至这个虚拟机最初并非是为Java语言而研发的,它来源于Strongtalk虚拟机,而这款虚拟机中相当多的技术又是来源于一款为支持Self语言实现“达到C语言50%以上的执行效率”的目标而设计的Self虚拟机,最终甚至可以追溯到20世纪80年代中期开发的Berkeley Smalltalk上。Sun公司注意到这款虚拟机在即时编译等多个方面有着优秀的理念和实际成果,在1997年收购了Longview Technologies公司,从而获得了HotSpot虚拟机。
....
上述是未加工过的原文,周老师在这一段的前后还有很精彩的描述,读者自行阅读吧。
- 2006年,Sun陆续将SunJDK的各个部分在GPLv2协议下开放了源码,形成了Open-JDK项目,其中当然也包括HotSpot虚拟机。
1.4.3 小家碧玉:Mobile/Embedded VM
目的是应用于移动市场,具体介绍看原文
1.4.4 天下第二:BEA JRockit/IBM J9 VM
分别是BEA System公司和IBM研发,曾与Hotspot并称“三大虚拟机”:HostSpot VM、JRockit、J9
1.4.5 软硬合璧:BEA Liquid VM/Azul VM
1.4.6 挑战者:Apache Harmony/Google Android Dalvik VM
1.4.7 没有成功,但并非失败:Microsoft JVM及其他
- 微软的Microsoft VM是当时windows平台运行性能最好的java虚拟机;
- sun公司和微软的官司,最终以sun公司胜出;
1.4.8 百家争鸣
介绍其他的虚拟机
1.5 展望Java技术的未来
- 倘若Java的未来依旧灿烂精彩,倘若下一个十年本书还更新第4、第5版,亦希望届时能在附录中回首今日,去回溯哪些预测成为现实,哪些改进中途夭折;
- Java“天下第一”的底气不在于语法多么先进好用,而是来自它庞大的用户群和极其成熟的软件生态,这在朝夕之间难以撼动;
- 从更严格的角度来看,Graal VM才是真正意义上与物理计算机相对应的高级语言虚拟机,理由是它与物理硬件的指令集一样,做到了只与机器特性相关而不与某种高级语言特性相关。
- 对Java而言,Graal VM本来就是在HotSpot基础上诞生的,天生就可作为一套完整的符合Java SE 8标准的Java虚拟机来使用。它和标准的HotSpot的差异主要在即时编译器上,其执行效率、编译质量目前与标准版的HotSpot相比也是互有胜负
- Graal编译器未来的前途可期,作为Java虚拟机执行代码的最新引擎,它的持续改进,会同时为HotSpot与Graal VM注入更快更强的驱动力。
- 即使HotSpot最初设计时考虑得再长远,大概也不会想到这个虚拟机将在未来的二十年内一直保持长盛不衰。这二十年间有无数改进和功能被不断地添加到HotSpot的源代码上,致使它成长为今天这样的庞然大物。(灵活的胖子)
1.6 实战:自己编译JDK
值得参考