JVM学习(一)——————JDK版本的变更及改动

JDK版本

  1. 19914月,Java语言的前身——————Oak(得名于James Gosling办公室外的一棵橡树)。
  2. 1995523Oak语言改名为Java,并且在SunWorld大会上正式发布Java 1.0版本。Java语言第 一次提出了“Write OnceRun Anywhere”的口号。1996年123JDK 1.0发布,Java语言有了第一个正式版本的运行环境。JDK 1.0提供了一个纯解释执行的Java虚拟机实现(Sun Classic VM)。JDK 1.0版本的代表技术包括:Java虚拟机、Applet、 AWT。
  3. 1997219 Sun 公司发布了 JDK 1.1 Java 里许多最基础的技术支撑点(如 JDBC 等)都是在JDK 1.1版本中提出的, JDK 1.1 版的技术代表有: JAR 文件格式、 JDBC、 JavaBeans RMI 等。 Java 语言的语法也有了一定的增强,如内部类(Inner Class)和反射( Reflection )都是在这时候出现的。
  4. 直到 199948 JDK 1.1 一共发布了 1.1.0 1.1.8 9个版本。
    1.1.4 以后,每个 JDK 版本都有一个属于自己的名字(工程代号),分别为:
    • JDK 1.1.4-Sparkler(宝石)
    • JDK 1.1.5-Pumpkin (南 瓜)
    • JDK 1.1.6-Abigail (阿比盖尔,女子名)
    • JDK 1.1.7-Brutus (布鲁图,古罗马政治家和将军)
    • JDK 1.1.8-Chelsea (切尔西,城市名)
  5. 1998124JDK迎来了一个里程碑式的重要版本:工程代号为Playground(竞技场)的JDK 1.2,Sun在这个版本中把Java技术体系拆分为三个方向,分别是面向桌面应用开发的J2SE(Java 2 Platform,Standard Edition)、面向企业级开发的J2EE(Java 2 Platform,Enterprise Edition)和面向手机等移动终端开发的J2ME(Java 2 Platform,Micro Edition)。在这个版本中出现的代表性技术非常多,如EJBJava Plug-inJava IDLSwing等,并且这个版本中Java虚拟机第一次内置了JIT(Just InTime)即时编译器(JDK 1.2中曾并存过三个虚拟机,Classic VMHotSpot VMExact VM,其中Exact VM只在Solaris平台出现过;后面两款虚拟机都是内置了JIT即时编译器的,而之前版本所带的Classic VM只能以外挂的形式使用即时编译器)。在语言和API层面Java添加了strictfp关键字,Java类库添加了现在Java编码之中极为常用的一系列Collections集合类等。在19993月和7,分别有JDK 1.2.1和JDK 1.2.2两个小升级版本发布。1999年4月27,HotSpot虚拟机诞生。HotSpot最初由一家名为“Longview Techno-logies”的小公司开发,由于HotSpot的优异表现,这家公司在1997年被Sun公司收购。Hot-Spot虚拟机刚发布时是作为JDK 1.2的附加程序提供的,后来它成为JDK 1.3及之后所有JDK版本的默认Java虚拟机。
  6. 200058 ,工程代号为 Kestrel (美洲红隼)的 JDK 1.3 发布。相对于 JDK 1.2 JDK 1.3 的改进主要体现在Java 类库上(如数学运算和新的 Timer API 等), JNDI 服务从 JDK 1.3 开始被作为一项平台级服务提供(以前JNDI 仅仅是一项扩展服务),使用 CORBA IIOP 来实现 RMI 的通信协议,等等。这个版本还对Java 2D 做了很多改进,提供了大量新的 Java 2D API ,并且新添加了 JavaSound 类库。 JDK1.3有 1 个修正版本 JDK 1.3.1 ,工程代号为 Ladybird (瓢虫),于 2001517 发布。
  7. 2002213 JDK 1.4 发布,工程代号为 Merlin (灰背隼)。 JDK 1.4 是标志着 Java 真正走向成熟的一个版本,Compaq Fujitsu SAS Symbian IBM 等著名公司都有参与功能规划,甚至实现自己独立发行的JDK 1.4 。哪怕是在近二十年后的今天,仍然有一些主流应用能直接运行在 JDK 1.4 之上,或者继续发布能运行在1.4 上的版本。 JDK 1.4 同样带来了很多新的技术特性,如正则表达式、异常链、NIO 、日志类、 XML 解析器和 XSLT 转换器,等等。 JDK 1.4 有两个后续修正版: 2002916 发布的工程代号为Grasshopper (蚱蜢)的 JDK 1.4.1 2003626 发布的工程代号为 Mantis (螳螂)的JDK 1.4.2
  8. 2004930 JDK 5 发布,工程代号为 Tiger (老虎)。 Sun 公司从这个版本开始放弃了谦逊的“JDK 1.x” 的命名方式,将产品版本号修改成了 “JDK x” [1] 。从 JDK 1.2 以来, Java 在语法层面上的变动一直很小,而JDK 5 Java 语法易用性上做出了非常大的改进。如:自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环(foreach循环)等语法特性都是在 JDK 5 中加入的。在虚拟机和 API 层面 上,这个版本改进了 Java 的内存模型(Java Memory Model, JMM )、提供了 java.util.concurrent 并发包 等。另外,JDK 5 是官方声明可以支持 Windows 9x 操作系统的最后一个 JDK 版本。
  9. 20061211 JDK 6 发布,工程代号为 Mustang (野马)。在这个版本中, Sun 公司终结了从JDK 1.2开始已经有八年历史的 J2EE J2SE J2ME 的产品线命名方式,启用 Java EE 6 Java SE 6 JavaME 6的新命名来代替。 JDK 6 的改进包括:提供初步的动态语言支持(通过内置 Mozilla JavaScript Rhino引擎实现)、提供编译期注解处理器和微型 HTTP 服务器 API ,等等。同时,这个版本对 Java 虚拟机内部做了大量改进,包括锁与同步、垃圾收集、类加载等方面的实现都有相当多的改动。
  10. 在20061113 的JavaOne大会上,Sun公司计划将java开源。除了极少量的产权代码(Encumbered Code,这部分代码所有权不属于Sun公司,Sun本身也无权进行开源处理)外OpenJDK几乎拥有了当时SunJDK 7的全部代码。
  11. jdk6的最后的版本 为Java SE 6 Update 211,于 20181018 发布。
  12. 2009219,工程代号为Dolphin(海豚)的JDK 7完成了其第一个里程碑版本。按照JDK 7最初的功能规划,一共会设置十个里程碑。最后一个里程碑版本原计划定于201099日结束,但由于各种原因,JDK 7最终无法按计划完成。
  13. JDK 7最原始的功能清单:(1):Lambda项目:支持Lambda表达式,支持函数式编程。(2):·Jigsaw项目:虚拟机层面的模块化支持。(3):·动态语言支持:Java是静态语言,为其他运行在Java虚拟机上的动态语言提供支持。(4):·Garbage-First收集器。(5):·Coin项目:Java语法细节进化。
  14. JDK 8的第一个正式版本原定于20139发布,最终还是跳票到了2014318日。
    JDK 8 开始, Oracle 启用 JEP (JDK Enhancement Proposals)来定义和管理纳入新版JDK 发布范围的功能特性。 JDK 8 提供了那些曾在 JDK 7 中规划过,但最终未能在 JDK 7中完成的功能,主要包括:
    ·JEP 126 :对 Lambda 表达式的支持,这让 Java 语言拥有了流畅的函数式表达能力。
    ·JEP 104:内置Nashorn JavaScript 引擎的支持。
    ·JEP 150 :新的时间、日期 API
    ·JEP 122 :彻底移除 HotSpot 的永久代。
    ·……
  15. 原本JDK 9是计划在2016年发布的,但在2016年伊始,Oracle就宣布JDK 9肯定要延期至2017年,后来又连续经过了两次短时间的跳票,最终到2017921才得以艰难面世。
    JDK 9 总算是带着Jigsaw最终发布了,除了 Jigsaw 外, JDK 9 还增强了若干工具(JS Shell、 JLink JHSDB 等),整顿了HotSpot各个模块各自为战的日志系统,支持 HTTP 2 客户单 API 91 JEP
  16. 2018320JDK 10如期发布,这版本的主要研发目标是内部重构,诸如统一源仓库、统一垃圾收集器接口、统一即时编译器接口(JVMCI在JDK 9已经有了,这里是引入新的Graal即时编译器)等,这些都将会是对未来Java发展大有裨益的改进,但对普通用户来说JDK 10的新特性就显得乏善可陈,毕竟它只包含了12JEP,而且其中只有本地类型推断这一个编码端可见的改进。
  17. 201810JavaOne 2018在旧金山举行,此前没有人想过这会是最后一届JavaOne大会。
  18. 2018925 JDK 11 发布,这是一个 LTS 版本的 JDK ,包含 17 JEP ,其中有 ZGC 这样的革命 性的垃圾收集器出现,也有把JDK 10 中的类型推断加入 Lambda 语法这种可见的改进。
  19. 2019320 JDK 12 发布,只包含 8 JEP ,其中主要有 Switch 表达式、 Java 微测试套件
    (JMH)等新功能,最引人注目的特性无疑是加入了由 RedHat 领导开发的 Shen-andoah 垃圾收集器。Shenandoah作为首个由非 Oracle 开发的垃圾收集器,其目标又与 Oracle JDK 11 中发布的 ZGC 几乎完全一致,两者天生就存在竞争。Oracle 马上用实际行动抵制了这个新收集器,在 JDK 11 发布时才说应尽可能保证OracleJDK OpenJDK 的兼容一致,转眼就在 OracleJDK 12 里把 Shenandoah 的代码通过条件编译强行剔除掉,使其成为历史上唯一进入了OpenJDK 发布清单,但在 OracleJDK 中无法使用的功能。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值