深入理解Java虚拟机 读书笔记: (一)走进Java

1. 概述

1.1 概述

Java不仅仅是一门编程语言,它还是一个由一系列计算机软件和规范组成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等多种场合

1.2 优点

  • 结构严谨、面向对象编程
  • 摆脱了硬件平台的束缚,实现了“一次编写,到处运行”的理想
  • 提供了一种相对安全的内存管理和访问机制,避免了绝大部分内存泄漏和指针越界问题
  • 实现了热点代码检测和运行时编译及优化

2. Java技术体系

2.1 官方体系定义

  • Java程序设计语言
  • 各种硬件平台上的Java虚拟机实现
  • Class文件格式
  • Java类库API
  • 来自商业机构和开源社区的第三方Java类库

2.2 组成部分

  • JDK(Java Development Kit):支持Java程序开发的最小环境
  • JRE(JavaRuntime Environment):J支持Java程序运行的标准环境,包括Java类库API中的Java SE API子集和Java虚拟机这两部分

2.3 按照业务划分体系定义

  • 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 SEAPI外,这条产品线在JDK 6以前被称为J2EE,在JDK 10以后被Oracle放弃,捐献给Eclipse基金会管理,此后被称为JakartaEE

3. Java发展史

  1. 1991年4月,由James Gosling博士领导的绿色计划(GreenProject)开始启动,诞生Java语言的前身:Oak(得名于James Gosling办公室外的一棵橡树)
  2. 1995年5月23日,Oak语言改名为Java,并且在SunWorld大会上正式发布Java 1.0版本。Java语言第一次提出了“WriteOnce,Run Anywhere”的口号
  3. 1996年1月23日,JDK 1.0发布,Java语言有了第一个正式版本的运行环境。JDK 1.0版本的代表技术包括:Java虚拟机、Applet、AWT等。
  4. 1997年2月19日,Sun公司发布了JDK 1.1。JDK1.1版的技术代表有:JAR文件格式、JDBC、JavaBeans、RMI等。Java语言的语法也有了一定的增强,如内部类(InnerClass)和反射(Reflection)都是在这时候出现的
  5. 1998年12月4日,发布JDK 1.2,Sun在这个版本中把Java技术体系拆分为三个方向,分别是面向桌面应用开发的J2SE(Java 2 Platform,Standard Edition)、面向企业级开发的J2EE(Java 2 Platform,Enterprise Edition)和面向手机等移动终端开发的J2ME(Java 2 Platform,MicroEdition)
  6. 1999年4月27日,HotSpot虚拟机诞生,后来它成为JDK 1.3及之后所有JDK版本的默认Java虚拟机。
  7. 2000年5月8日,工程代号为Kestrel(美洲红隼)的JDK 1.3发布。
  8. 2002年2月13日,JDK 1.4发布,工程代号为Merlin(灰背隼),JDK 1.4是标志着Java真正走向成熟的一个版本。
  9. 2004年9月30日,JDK 5发布,工程代号为Tiger(老虎)
  10. 2006年12月11日,JDK 6发布,工程代号为Mustang(野马)。
  11. 2009年2月19日,工程代号为Dolphin(海豚)的JDK 7完成了其第一个里程碑版本。
  12. 2014年3月18日,JDK 8的第一个正式版本发布
  13. 2017年9月21日,JDK 9发布
  14. 2018年3月20日,JDK 10发布
  15. 2018年9月25日,JDK 11发布
  16. 2019年3月20日,JDK 12发布

4. Java虚拟机家族

4.1 发展简史

  1. 1996年1月23日,Sun发布JDK 1.0,这个JDK中所带的虚拟机就是Classic VM,只能使用纯解释器方式来执行Java代码。
  2. JDK 1.2时,Classic VM与HotSpot VM并存,但默认是使用Classic VM(用户可用java-hotspot参数切换至HotSpotVM)
  3. JDK 1.3时,HotSpot VM成为默认虚拟机
  4. JDK 1.4的时候,Classic VM才完全退出商用虚拟机的历史舞台

5. 展望Java技术的未来

5.1 Graal VM

2018年4月,Oracle Labs新公开了一项黑科技:Graal VM,Graal VM被官方称为“Universal VM”和“Polyglot VM”,这是一个在HotSpot虚拟机基础上增强而成的跨语言全栈虚拟机,可以作为“任何语言”的运行平台使用。

Graal VM的基本工作原理是将这些语言的源代码(例如JavaScript)或源代码编译后的中间格式(例如LLVM字节码)通过解释器转换为能被Graal VM接受的中间表示(Intermediate Representation,IR),譬如设计一个解释器专门对LLVM输出的字节码进行转换来支持C和C++语言,这个过程称为程序特化(Specialized,也常被称为PartialEvaluation)。

5.2 HotSpot的不断更新

HotSpot的定位是面向各种不同应用场景的全功能Java虚拟机。

5.3 语言语法持续增强

6. 实战:自己编译JDK

源码官网:http://openjdk.java.net/


版权声明:本文为xueguchen原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。