JDK 1.0

1991年4月,由 James Gosling 博士领导的绿色计划(Green Project)开始启动,此计划的目的是开发一种能够在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序架构。这个计划的产品就是Java语言的前身:Oak(橡树)。Oak当时在消费品市场上并不算成功,但随着1995年互联网潮流的兴起,Oak 迅速找到了最适合自己发展的市场定位并蜕变成为 Java 语言。

1995年5月23日,Oak 语言正式更名为 Java,Java 语言第一次提出了 “Write Once,Run Anywhere”的口号,这一天也被称为 Java 诞生日。

1996年1月23日,JDK 1.0 发布,代表技术包括 Java 虚拟机(Sun Classic VM)、Applet、AWT 等。

1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入 Java 技术。

1996年5月,Sun 公司于美国旧金山举行了首届 JavaOne 大会。

1996年9月,已有大约 8.3 万个网页应用了 Java 技术来制作。

JDK 1.1

1997年2月19日,JDK 1.1 发布,代表技术包括 Jar 文件格式、JDBC、JavaBeans、RMI、内部类、反射等。

JDK 1.1 一共发布了 1.1.0 - 1.1.8 九个版本,从1.1.4 之后,每个 JDK 版本都有自己的一个代号:

版本 代号 时间
JDK 1.1.4 Sparkler(宝石) 1997-09-12
JDK 1.1.5 Pumpkin(南瓜) 1997-12-13
JDK 1.1.6 Abigail(阿比盖尔--女子名) 1998-04-24
JDK 1.1.7 Brutus(布鲁图--古罗马政治家和将军) 1998-09-28
JDK 1.1.8 Chelsea(切尔西--城市名) 1999-04-08

1998年2月,JDK 1.1 被下载超过 2,000,000 次。

JDK 1.2(Playground - 竞技场)

1998年12月4号,JDK 1.2 发布,这个版本把 Java 技术体系分为三个部分,即 J2SE(面向桌面应用开发)、J2EE(面向企业级开发)、J2ME(面向移动终端开发)。代表技术包括 EJB、Java Plugin-in、Java IDL、Swing、内置 JIT 编译器、Collections集合类等。

JDK 1.2 共有两个修订版本:

版本 代号 时间
JDK 1.2.1 - 1999-03-30
JDK 1.2.2 Cricket(蟋蟀) 1999-07-08

JDK 1.3(Kestrel - 红隼)

2000年5月8号,JDK 1.3 发布,这个版本开始 HotSpot 成为了 JDK 的默认虚拟机,代表技术有 JNDI、Timer、Java 2D、JavaSound、数学运算等。

JDK 1.3 有一个修正版本:

版本 代号 时间
JDK 1.3.1 Ladybird(瓢虫) 2001-05-17

2001年6月5日,NOKIA 宣布,到 2003 年将出售 1 亿部支持 Java 的手机。

JDK 1.4(Merlin - 灰背隼)

2002年2月13日,JDK 1.4 发布,这是 Java 真正走向成熟的一个版本,代表技术包括:正则表达式、异常链、NIO、日志类、XML 解析器和 XSLT 转换器等。

JDK 1.4 有两个修正版本:

版本 代号 时间
JDK 1.4.1 grasshopper(蚱蜢) 2002-09-16
JDK 1.4.2 Mantis(螳螂) 2003-06-26

JDK 1.5(Tiger - 老虎)

2004年9月30日,JDK 1.5 发布,代表技术有自动装箱、泛型、动态注解、枚举、可变长参数、增强 for 循环等。这个版本还改进了 Java 的内存模型、提供了 java.util.concurrent 并发包等。

2006年11月13日,Sun 公司宣布最终会将 Java 开源,并在随后的一年多时间内,陆续将 JDK 的各个部分在 GPL V2 协议下公开了源码,并建立了 OpenJDK 组织对这些源码进行独立管理。(正式开源的版本是 JDK 6)

JDK 6(Mustang - 野马)

2006年12月11号,JDK 6 发布,从这个版本开始,J2SE、J2EE、J2ME 的称呼将不在使用,启用 Java SE、Java EE、Java ME 的命名方式。另外,JDK 的公开版本号也变成了 JDK 6、JDK 7 的命名方式,而程序员内部使用的开发版本号(java -version)继续沿用了 1.6、1.7 这样的称呼。

JDK 6 的代表技术有动态语言支持(通过内置 Mozilla JavaScript Rhino 引擎实现)、编译 API 和微型 HTTP 服务器 API 等。同时,这个版本对 Java 虚拟机内部做了大量改进,包括锁与同步、垃圾收集、类加载等方面的算法都有相当大的改动。

2008年1月16日,Oracle 收购 BEA,获取了 JRockit 虚拟机的所有权。

JDK 7(Dolphin - 海豚)

2009年2月19日,JDK 7 发布,主要改进包括:提供新的 G1 收集器、升级类加载架构、Fork/Join 框架等。

2009年4月20日,Oracle 收购 Sun,获得了 HotSpot 虚拟机的所有权。但是 Java 语言本身并不属于哪个公司,它是由 JCP(Java Community Process)组织管理的,JCP 以前主要是由 Sun 公司领导,现在主要由 Oracle 领导,仅此而已。

2010年12月,Apache 基金会因为其 Harmony 虚拟机的 TCK 授权问题和 Oracle 愈演愈烈,愤然退出 JCP,这也是 Java 史上最大的一次分裂。

JDK 8(Spider - 蜘蛛)

2014年3月18日,JDK 8 发布,又是一个里程碑的版本,代表技术包括 Lambda 表达式、函数式编程、Stream API、新的时间类型等。

JDK 9

2017 年 8 月,甲骨文宣布要将 Java EE 转移到开源阵营。一个月后,Oracle 将 Java EE 转移到 Eclipse 基金会,Oracle 也继续支持现有的 Java EE 许可证。不过,Oracle 可不允许开源组织用 Java 的名号,于是 Eclipse 选出了 "Jakarta EE" 和 "Enterprise Profile" 两个后续按名字,最终前者以64.4%的票数获胜。也就是说 ,Java EE已经正式更名为 Jakarta EE、Java Community Process 更名为 Eclipse EE.next Working Group。

2017年9月,JDK 9 发布,加入了跳票两个版本 JigSaw 模块功能、新增了REPL(Read-Eval-Print Loop)工具 jshell、增强 Stream API 等。

2017年9月,Oracle 宣布,为了更快地迭代,以及跟进社区反馈,Java 的版本发布周期变更为每半年发布一个大版本,每个季度发布一个中间特性版本,并且承诺不会跳票。通过这样的方式,开发团队可以把一些关键特性尽早合并到 JDK 之中,以快速得到开发者反馈。按照官方的说法,新的发布周期会严格遵循时间点,将于每年的3月份和9月份发布。

JDK 10

2018年4月17日,JDK 10 发布,主要是少部分 API 更新以及 bug 修复,提供一组默认的 root 认证权威(CA)证书。

JDK 11

2018年9月25日,JDK 11 发布,这是自 Java 8 后的首个长期支持的版本,代表技术主要包括:本地变量类型推断(var )、Stream 加强、字符串加强、HTTP Client API 等。

2018年9月,伴随着 JDK 11 的发布,还有一个颇具影响的新闻,就是 Java 收费问题。Oracle 宣布 JDK 8 的商业版本在2019年1月前停止免费更新,之前版本能免费使用,之后版本交费继续更新使用。 JDK 8 的个人版本在2020年12月停止更新,之前版本免费使用,到期后需要交费继续更新使用。而JDK11没有个人版本一说,只要用于商业应用就需要交费。

JDK 12

2019年3月19日,JDK 12 发布,主要特性包括:switch 支持表达式、以及一些 JVM 的性能优化等。

JDK 13

2019年9月13日,JDK 13 发布,主要特性包括:重新实现传统套接字API、switch 表达式预览、增强 ZGC 等。

...未完待续

tips:收集了书籍、网上的一些资料,如有侵权,烦请告知。欢迎大家补充~~

Java 发展历程的更多相关文章

  1. java发展历程、常用dos命令与jDK工具使用

    Java菜鸟学习之旅 1.勤敲代码 2.必须将课堂上讲的内容学到位 2.1 学到会用 2.2 在学会之前不要自作主张 2.3 当天课程当天完成 3.能说会道 3.1 善于表达 3.2 学会的都能讲 4 ...

  2. Java发展历程

    Java 的发展要追溯到 1991 年,Patrick Naughton(帕特里克·诺顿)和 James Gosling(詹姆斯·高斯林)带领 Sun 公司的工程师打算为有线电视转换盒之类的消费产品设 ...

  3. Java起源、发展历程、环境变量、第一个Java程序等【1】

    若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果,转载请标明原文链接: 本文原创作者:pipi-changing 本文原创出处:http://www.cnblogs.com/pi ...

  4. Java语言的发展历程

    前言 自1946年2月14日世界上首款计算机ENAC问世,第一代计算机语言“机器语言”便诞生了,它使用的是最原始的穿孔卡片,这种卡片上使用的语言只有专家才能理解,与人类语言差别极大.这种语言本质上是计 ...

  5. 码农飞升记-00-Java发展历程

    目录 1.Java发布历程 2.Java发展史 Oak 的出现( Java 的雏形) 1995年 Java 的诞生 1996年 Sun 公司发布第一个 JDK 1998年12月用 J2SE 取代 JD ...

  6. Java的发展历程

    Java的发展历程充满了传奇色彩. 最初,Java是由Sun公司的一个研究小组开发出来的, 该小组起先的目标是想用软件实现对家用电器进行集成控制的小型控制装置. 开始,准备采用C++,但C++太复杂, ...

  7. Java日志体系(一)发展历程

    一.日志框架的分类 门面型日志框架: JCL: Apache基金会所属的项目,是一套Java日志接口,之前叫Jakarta Commons Logging,后更名为Commons Logging SL ...

  8. JAVA基础知识|HTTP协议-发展历程

    HTTP 是基于 TCP/IP 协议的应用层协议.它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口. 此文章为转载内容:http://www.ruanyif ...

  9. C#与C++的发展历程第一 - 由C#3.0起

    俗话说学以致用,本系列的出发点就在于总结C#和C++的一些新特性,并给出实例说明这些新特性的使用场景.前几篇文章将以C#的新特性为纲领,并同时介绍C++中相似的功能的新特性,最后一篇文章将总结之前几篇 ...

随机推荐

  1. 由std::once_call 引发的单例模式的再次总结,基于C++11

    一个偶然的机会,知道了std::once_call这个东西. 了解了下,std::once_call支持多线程情况下的某函数只执行一次.咦,这个不是恰好符合单例模式的多线程安全的困境吗? 单例模式,经 ...

  2. 新手安装vue-cli脚手架

    首先这片文章借鉴了很多博主的,再此对他们表示感谢. 什么是vue? Vue.js是一套构建用户界面的渐进式框架.Vue 只关注视图层,采用自底向上增量开发的设计. Vue 的目标是通过尽可能简单的 A ...

  3. 每个新手程序员都必须知道的Python技巧

    当下,Python 比以往的任何时候都更加流行,人们每天都在实践着 Python 是多么的强大且易用. 我从事 Python 编程已经有几年时间了,但是最近6个月才是全职的.下面列举的这些事情,是我最 ...

  4. [Windows内核分析]KPCR结构体介绍 (CPU控制区 Processor Control Region)

    Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html 逆向分析操作系统内核代码至少需要具备两项技能: 段页汇编代码非常懂 ...

  5. 超实用的mysql分库分表策略,轻松解决亿级数据问题

    一.分库分表的背景 在数据爆炸的年代,单表数据达到千万级别,甚至过亿的量,都是很常见的情景.这时候再对数据库进行操作就是非常吃力的事情了,select个半天都出不来数据,这时候业务已经难以维系.不得已 ...

  6. BBEdit 13.0 for Mac 打开大文件不吃力

    BBEdit 是一款拥有 16 年历史的 HTML 和文本编辑器,拥有高性能且流畅的文本处理能力,适用于 Web 和软件开发者,具备功能丰富且强大的智能搜索.代码折叠.FTP 和 SFTP 管理等功能 ...

  7. 渗透测试-基于白名单执行payload--Odbcconf

    复现亮神课程 基于白名单执行payload--Odbcconf 0x01 Odbcconf简介: ODBCCONF.exe是一个命令行工具,允许配置ODBC驱动程序和数据源. 微软官方文档:https ...

  8. 代码审计-YXcms1.4.7

    题外: 今天是上班第一天,全都在做准备工作,明天开始正式实战做事. 看着周围稍年长的同事和老大做事,自己的感觉就是自己还是差的很多很多,自己只能算个废物. 学无止境,我这样的垃圾废物就该多练,保持战斗 ...

  9. css div 自适应内容

    .adapt-content{ display:inline-block; *display:inline; ; } 见:http://www.cnblogs.com/refe/p/5051661.h ...

  10. 解决seajs ie8 对象不支持charAt 属性。

    在使用 seajs做项目,今天偶然发现在ie9以下的ie版本会 报出 对象不支持charAt 属性.刚开始还以为是自己写的js部分出了问题,经过几个小时的奋战.最终找到了其根源.在sea-debug. ...