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发展史
- 1991年4月,由James Gosling博士领导的绿色计划(GreenProject)开始启动,诞生Java语言的前身:Oak(得名于James Gosling办公室外的一棵橡树)
- 1995年5月23日,Oak语言改名为Java,并且在SunWorld大会上正式发布Java 1.0版本。Java语言第一次提出了“WriteOnce,Run Anywhere”的口号
- 1996年1月23日,JDK 1.0发布,Java语言有了第一个正式版本的运行环境。JDK 1.0版本的代表技术包括:Java虚拟机、Applet、AWT等。
- 1997年2月19日,Sun公司发布了JDK 1.1。JDK1.1版的技术代表有:JAR文件格式、JDBC、JavaBeans、RMI等。Java语言的语法也有了一定的增强,如内部类(InnerClass)和反射(Reflection)都是在这时候出现的
- 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)
- 1999年4月27日,HotSpot虚拟机诞生,后来它成为JDK 1.3及之后所有JDK版本的默认Java虚拟机。
- 2000年5月8日,工程代号为Kestrel(美洲红隼)的JDK 1.3发布。
- 2002年2月13日,JDK 1.4发布,工程代号为Merlin(灰背隼),JDK 1.4是标志着Java真正走向成熟的一个版本。
- 2004年9月30日,JDK 5发布,工程代号为Tiger(老虎)
- 2006年12月11日,JDK 6发布,工程代号为Mustang(野马)。
- 2009年2月19日,工程代号为Dolphin(海豚)的JDK 7完成了其第一个里程碑版本。
- 2014年3月18日,JDK 8的第一个正式版本发布
- 2017年9月21日,JDK 9发布
- 2018年3月20日,JDK 10发布
- 2018年9月25日,JDK 11发布
- 2019年3月20日,JDK 12发布
4. Java虚拟机家族
4.1 发展简史
- 1996年1月23日,Sun发布JDK 1.0,这个JDK中所带的虚拟机就是Classic VM,只能使用纯解释器方式来执行Java代码。
- JDK 1.2时,Classic VM与HotSpot VM并存,但默认是使用Classic VM(用户可用java-hotspot参数切换至HotSpotVM)
- JDK 1.3时,HotSpot VM成为默认虚拟机
- 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版权协议,转载请附上原文出处链接和本声明。