Java技术体系 & 发展史(1991 - 2019)

《深入理解Java虚拟机——JVM高级特性与最佳实践(第三版)》阅读笔记(一)

概述

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

下面罗列一下Java的特性和优势:

  • Java是一门结构严谨、面向对象的编程语言
  • 摆脱了硬件平台的束缚,实现了“一次编写,到处运行”
  • 提供了一种相对安全的内存管理和访问机制,避免了绝大部分内存泄漏和指针越界问题
  • 实现了热点代码检测和运行时编译及优化,这使得Java应用能随着运行时间的增长而获得更高的性能
  • 拥有一套完整的应用程序接口,还有无数来自商业机构和开源社区的第三方类库来帮助用户实现各种各样的功能

Java技术体系

从广义上讲,Kotlin、Clojure、JRuby、Groovy等运行于Java虚拟机上的编程语言及其相关的程序都属于Java技术体系中的一员。从传统意义上来看,JCP(Java Community Process)官方定义的Java技术体系包括以下几个组成部分(按功能划分):

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

JDK(Java Development Kit)其实由三部分组成:Java程序设计语言、Java虚拟机和Java类库。Java类库API中的JavaSE API子集和Java虚拟机这两部分统称为JRE(Java Runtime Environment),JRE是支持Java程序运行的标准环境。

这里还可以按服务领域划分:

  • Java Card:支持Java小程序(Applets)运行在小内存设备(如智能卡)上的平台
  • Java ME(Micro Edition):支持Java程序运行在移动终端(手机、PDA)上的平台
  • Java SE(Standard Edition):支持面向桌面级应用(如Windows下的应用程序)的Java平台
  • Java EE(Enterprise Edition):支持使用多层架构 的企业应用(如ERP、MIS、CRM应用)的Java平台

Java发展史(1991 - 2019)

  • 1991年4月,由James Gosling博士领导的绿色计划(Green Project)开始启动。计划最初是开发一种能够在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序结构。这个计划的产品就是Java语言的前身:Oak。
  • 1995年5月23日,Oak语言改名为Java,并且在SunWorld大会上正式发布Java 1.0版本,并第一次提出口号:“Write Once, Run Anywhere”。
  • 1996年1月23日,JDK 1.0发布。Java语言有了第一个正式版本的运行环境。JDK 1.0提供了一个纯解释执行的Java虚拟机实现(Sun Classic VM)。JDK 1.0包括:Java虚拟机、Applet、AWT等。
  • 1996年4月,十个最主要的操作系统和计算机供应商声明将在其产品中嵌入Java技术。
  • 1997年2月19日,Sun公司发布JDK 1.1版本,内部类(Inner Class)和反射机制(Reflection)出现。
  • 1998年12月4日,代号为Playground的JDK 1.2版本发布,Sun公司把Java技术体系拆分为三个方向:J2SE、J2EE和J2ME。这个版本中Java虚拟机第一次内置了JIT(Just In Time)即时编译器。
  • 1999年4月27日,HotSpot虚拟机诞生,后来成为JDK 1.3及之后所有JDK版本的默认虚拟机。
  • 2002年前后,微软的.NET Framework发布。这在技术实现和目标用户上都与Java有着很多的相近之处,因此后来给Java带来了很多讨论、比较和竞争。
  • 2004年,JDK 5发布,且把JDK 1.x的命名方式改为JDK x。这个版本加入了:自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环(foreach循环)等。
  • 2006年,JDK 6发布,Sun公司把沿用8年的产品线命名方式改为:Java EE 6、Java SE 6和Java ME 6。
  • 2009年,JDK 7完成了第一个里程碑版本。该版本在后来的开发期间,由于Sun公司相继在技术竞争和商业竞争中陷入泥潭,公司的股票市值跌至仅有高峰时期的3%,最终导致JDK 7无法按计划完成。另外值得一提的是,JDK 7 Update 6版本可以运行于Windows(不含Windows 9x)、Linux、Solaris和Mac OS X操作系统上,支持ARM、x86、x86-64和SPARC指令集架构,JDK 7也是可以支持Windows XP操作系统的最后一个版本。
  • 2009年4月20日,Oracle宣布正式以74亿美元的价格收购市值曾超过2000亿美元的Sun公司。
  • 2014年3月18日,JDK 8的第一个版本发布,后来“B计划”中的Jigsaw模块化功能被延期到了JDK 9。为了保证JDK研发能更顺利地进行,Oracle启用了JEP(JDK Enhancement Proposals)来定义和管理纳入新版JDK发布范围的功能特性。
  • 2017年9月21日,JDK 9发布。此前跳票了多次,后两次的跳票原因是以IBM和RedHat为首的十三家企业在JCP执行委员会上联手否决了Oracle提出的Jigsaw作为Java模块化规范进入JDK 9发布范围的提案。JDK 9发布以后,Oracle随机宣布Java将会以持续交付的形式和更加敏捷的研发节奏向前推进,以后JDK将会在每年3月和9月各发布一个大版本,目的是避免众多功能特性被集中捆绑到一个JDK版本上而引发交付风险。另外,JDK 10以后命名方式改为年份加月份作为开发版本号,比如2018年3月的版本命名为18.3。
  • 2018年3月20日,JDK 10发布。
  • 2018年3月27日,Android的Java侵权案有了最终判决,法庭裁定Google赔偿Oracle合计88亿美元,这个官司的主要焦点在于Java API的版权问题。另外,Oracle正式宣布把Java EE所有权赠送给Eclipse基金会,且不允许使用“Java”这个商标,取而代之的将是Jakarta EE,这导致一堆javax.*。
  • 2018年9月25日,JDK 11发布。Oracle调整了JDK的授权许可证,并宣布以后会同时发行两个JDK:GPLv2+CE协议下发行的OpenJDK和新的OTN协议下发行的OracleJDK,两者共享绝大部分源码,功能几乎一致,核心差异在于前者可以免费在开发、测试或生产环境中使用,但只有半年时间的更新支持,后者个人依然可以免费使用,但若在生产环境中商用就必须付费,可以有三年时间的更新支持。
  • 2019年3月20日,JDK 12发布,其中主要更新有:Switch表达式、Java微测试套件(JMH)等,另外加入了由RedHat领导开发的Shenandoah垃圾收集器,但在OracleJDK 12里却把Shenandoah的代码通过条件编译强行剔除掉。

参考资料

《深入理解Java虚拟机——JVM高级特性与最佳实践(第三版)》

发布了10 篇原创文章 · 获赞 39 · 访问量 5742

猜你喜欢

转载自blog.csdn.net/Carson1145/article/details/105188695