1.Java发布历程

1995年5月23日,Sun 公司正式发布Java 和 HotJava 浏览器。

1996年1月23日,Sun 公司正式发布 JDK 1.0。

1997年2月19日,Sun 公司正式发布 JDK 1.1。

1998年12月8日,Sun 公司正式发布 J2SE 1.2。

2000年5月8日,Sun 公司正式发布 J2SE 1.3。

2002年2月26日,Sun 公司正式发布 J2SE 1.4。

2004年9月30日,Sun 公司正式发布 J2SE 1.5。

2006年12月11日,Sun 公司正式发布 Java SE 6。

2011年7月7日,Oracle 公司发布了 Java SE 7。

2014年3月18日,Oracle 公司发布了 Java SE 8 (特殊的 LTS)。

2017年9月21日,Oracle 公司发布 Java SE 9 (non-LTS)。

2018年3月20日,Oracle 公司发布 Java SE 10 (non-LTS)。

2018年9月25日,Oracle 公司发布 Java SE 11 (LTS)。

2019年3月19日,Oracle 公司发布 Java SE 12 (non-LTS)。

2019年9月17日,Oracle 公司发布 Java SE 13 (non-LTS)。

2020年3月17日,Oralce 公司发布 Java SE 14 (non-LTS)。

2020年9月15日,Oracle 公司发布 Java SE 15 (non-LTS)。

2021年3月16日,Oracle 公司发布 Java SE 16 (non-LTS)。

2.Java发展史

Oak 的出现( Java 的雏形)

20世纪90年代,硬件领域出现了单片式计算机系统,这种价格低廉的系统一出现就立即引起了自动控制领域人员的注意,因为使用它可以大幅度提升消费类电子产品(如电视机顶盒、面包烤箱、移动电话等)的智能化程度。Sun Microsystems 公司为了抢占市场先机,在1991年成立了一个称为 Green 的项目小组,James Gosling 及其团队一起组成的工作小组在 State of CaliforniaMenlo Park 市沙丘路的一个小工作室里面研究开发新技术,专攻计算机在家电产品上的嵌入式应用。

由于 C++ 所具有的优势,该项目组的研究人员首先考虑采用 C++ 来编写程序。但对于硬件资源极其匮乏的单片式系统来说,C++ 程序过于复杂和庞大。另外由于消费电子产品所采用的嵌入式处理器芯片的种类繁杂,如何让编写的程序跨平台运行也是个难题。为了解决困难,他们首先着眼于语言的开发,假设了一种结构简单、符合嵌入式应用需要的硬件平台体系结构并为其制定了相应的规范,其中就定义了这种硬件平台的二进制机器码指令系统(即后来成为“字节码”的指令系统),以待语言开发成功后,能有半导体芯片生产商开发和生产这种硬件平台。对于新语言的设计,Sun 公司研发人员并没有开发一种全新的语言,而是根据嵌入式软件的要求,对 C++ 进行了改造,去除了留在 C++ 的一些不太实用及影响安全的成分,并结合嵌入式系统的实时性要求,开发了一种称为 Oak 的面向对象语言

由于在开发 Oak 语言时,尚且不存在运行字节码的硬件平台,所以为了在开发时可以对这种语言进行实验研究,他们就在已有的硬件和软件平台基础上,按照自己所指定的规范,用软件建设了一个运行平台,整个系统除了比 C++ 更加简单之外,没有什么大的区别。1992年的夏天,当 Oak 语言开发成功后,研究者们向硬件生产商进行演示了 Green 操作系统、Oak 的程序设计语言、类库和其硬件,以说服他们使用 Oak 语言生产硬件芯片,但是,硬件生产商并未对此产生极大的热情。因为他们认为,在所有人对 Oak 语言还一无所知的情况下,就生产硬件产品的风险实在太大了,所以 Oak 语言也就因为缺乏硬件的支持而无法进入市场,从而被搁置了下来。

1994年6、7月间,在经历了一场历时三天的讨论之后,团队决定再一次改变了努力的目标,这次他们决定将该技术应用于万维网。他们认为随着 Mosaic 浏览器的到来,因特网正在向同样的高度互动的远景演变,而这一远景正是他们在有线电视网中看到的。作为原型,帕特里克·诺顿写了一个小型万维网浏览器 WebRunner。

1995年 Java 的诞生

1995年,互联网的蓬勃发展给了 Oak 机会。业界为了使死板、单调的静态网页能够“灵活”起来,急需一种软件技术来开发一种程序,这种程序可以通过网络传播并且能够跨平台运行。于是,世界各大IT企业为此纷纷投入了大量的人力、物力和财力。这个时候,Sun 公司想起了那个被搁置起来很久的 Oak,并且重新审视了那个用软件编写的试验平台,由于它是按照嵌入式系统硬件平台体系结构进行编写的,所以非常小,特别适用于网络上的传输系统,而 Oak 也是一种精简的语言,程序非常小,适合在网络上传输。

Sun 公司首先推出了可以嵌入网页并且可以随同网页在网络上传输的 Applet(Applet是一种将小程序嵌入到网页中进行执行的技术),并将 Oak 更名为 Java(在申请注册商标时,发现 Oak 已经被人使用了,再想了一系列名字之后,最终,使用了提议者在喝一杯 Java 咖啡时无意提到的 Java 词语)。

1995年5月23日,Sun 公司在 Sun world 会议上正式发布 Java 和 HotJava 浏览器。IBMAppleDECAdobeHPOracleNetscapeMicrosoft 等各大公司都纷纷停止了自己的相关开发项目,竞相购买了 Java 使用许可证,并为自己的产品开发了相应的 Java 平台。

1996年 Sun 公司发布第一个 JDK

1996年1月23日,Sun 公司发布了 Java 的第一个开发工具包(JDK 1.0),这是 Java 发展历程中的重要里程碑,标志着 Java 成为一种独立的开发工具。9月,约8.3万个网页应用了 Java 技术来制作。10月,Sun 公司发布了 Java 平台的第一个即时编译器 JIT(Just-In-Time Compiler)

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

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

1997年2月19日,JDK 1.1 面世,在随后的3周时间里,达到了22万次的下载量。

1997年4月2日,Java One 会议召开,参会者逾一万人,创当时全球同类会议规模之纪录。

1997年9月,Java Developer Connection 社区成员超过10万。

1998年2月,JDK1.1被下载超过2,00万次。

1998年12月用 J2SE 取代 JDK 命名,以区别 J2EE 和 J2ME 平台

1998年12月8日,JAVA2 企业平台 J2EE 发布,该版本到J2SE 5.0为止的后续版本被更名为 Java 2,而版本名称“J2SE”(Java 2平台,标准版)取代 JDK 以区别 J2EE(Java 2平台,企业版) 和 J2ME(Java 2 Platform,Micro Edition)基础平台。这是 Java 的一个非常重要的版本,它将 Java 平台的大小增加至原先的三倍,在59个程序包中达到了1520个类。

1999年4月27日,HotSpot 虚拟机发布。HotSpot 虚拟机发布时是作为 JDK 1.2 的附加程序提供的,后来它成为了 JDK 1.3 及之后所有版本的 Sun JDK 的默认虚拟机。

1999年6月,Sun 公司发布了第二代 Java 平台(简称为Java2)的3个版本:

J2ME(Java2 Micro Edition,Java2 平台的微型版),应用于移动、无线及有限资源的环境;

J2SE(Java 2 Standard Edition,Java 2 平台的标准版),应用于桌面环境;

J2EE(Java 2 Enterprise Edition,Java 2 平台的企业版),应用于基于 Java 的应用服务器。Java 2 平台的发布,是 Java 发展过程中最重要的一个里程碑,标志着 Java 的应用开始普及。

2000年5月8日,JDK 1.3 发布。

2000年5月29日,JDK 1.4 发布。

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

2001年9月24日,J2EE1.3 发布。

2002年2月26日,J2SE1.4 发布。自此 Java 的计算能力有了大幅提升,与 J2SE1.3 相比,其多了近62%的类和接口。在这些新特性当中,还提供了广泛的 XML 支持、安全套接字(Socket)支持(通过SSL与TLS协议)、全新的 I/OAPI 、正则表达式、日志与断言。

2004年9月30日,J2SE1.5 发布,成为 Java 语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE 1.5 更名为 Java SE 5.0(内部版本号1.5.0),代号为 “Tiger”,Tiger 包含了从1996年发布1.0版本以来的最重大的更新,其中包括泛型支持、基本类型的自动装箱、改进的循环、枚举类型、格式化 I/O 及可变参数。

2005年发布J2SE 6并更名为 Java SE 6(全平台更名移除'2')

2005年6月,JavaOne 大会召开,Sun 公司公开 Java SE 6。此时,Java 的各种版本已经更名,以取消其中的数字“2”:J2EE 更名为 Java EE,J2SE 更名为 Java SE,J2ME 更名为 Java ME。

2006年 Sun 宣布 Java 基于 GPL 开源

2006年11月13日,Sun 公司宣布 Java 全线采纳 GNU General Public License Version 2,将 Java 技术作为免费软件对外发布,从而正式公开了Java 平台标准版的第一批源代码,以及 Java 迷你版的可执行源代码。

2006年12月11日,Sun把原本的名称“ J2SE ”改为“ Java SE ”,然后再从版本号中去掉“.0”,而开发者内部编号仍然是1.6.0。这个版本是根据 JSR 270 开发的。在发展阶段,新版本大概每周都发布包括一些功能增强和漏洞的修复。Beta 版本在2006年2月和6月发布,也就是为什么2006年12月11日变成最终的版本。

2006年12月23日, Java SE 6 正式发布。

从2007年3月起,全世界所有的开发人员均可对 Java 源代码进行修改。

2009年 Sun 被 Oracle 收购

2009年4月20日,Oracle 公司宣布收购 Sun。

2009年12月,Sun 公司发布Java EE 6。

2010年,Oracle 公司正式收购 Sun,Java 编程语言的共同创始人之一 James Gosling 从 Oracle 公司辞职。

2010年11月,由于 Oracle 公司对于Java社区的不友善,因此Apache扬言将退出JCP。

2011年7月28日,Oracle 公司举行了全球性的活动,以庆祝 Java7 的推出,随后 Java7 正式发布。

2014年3月 Java8 (特殊的 LTS)发布

2014年3月18日,Oracle 公司发布了 Java SE 8(特殊的 LTS)。

2017年9月 Java9 (non-LTS)发布,并启动新的版本控制和发布节奏模型

2017年9月21日,Oracle 公司发布 Java SE 9(non-LTS),并启动新的版本控制和发布节奏模型。

整体发布节奏为每六个月发布一个新版本,其中每六个月发布一次non-LTS版本,每三年发布一次LTS版本(当二者发布时间冲突时,优先发布LTS版本,non-LTS版本向后推迟一个周期)。

non-LTS版本发布后会得到六个月的商业支持,到期后会被新发布版本取代;LTS版本发布后会得到至少八年的商业支持(根据市场需要有可能会延长),到期后会被新的LTS版本取代。

2018年3月20日,Oracle 公司发布 Java SE 10(non-LTS)。

2018年9月 Java11 (LTS)发布

2018年9月25日,Oracle 公司发布 Java SE 11(LTS)。

2019年3月19日,Oracle 公司发布 Java SE 12(non-LTS)。

2019年9月17日,Oracle 公司发布 Java SE 13(non-LTS)。

2020年3月17日,Oralce 公司发布 Java SE 14(non-LTS)。

2020年9月15日,Oracle 公司发布 Java SE 15(non-LTS)。

2021年3月16日,Oracle 公司发布 Java SE 16(non-LTS)。

参考资料(排名不分先后)

Oracle JDK 主页

维基百科-Java

百度百科-Java

Oracle战略收购Sun声明

维基百科-Java版本历史

码农飞升记-00-Java发展历程的更多相关文章

  1. 码农飞升记-Java是什么?

    1.Java概述 Java 原名 Oak 是 Sun Microsystems 公司的 James Gosling 及其团队于 1995 年 5 月推出的 Java 程序设计语言 和 Java 平台 ...

  2. 码农飞升记-04-OracleJDK 与 OpenJDK 的区别和联系以及 OracleJDK builds 与其他 OpenJDK builds 的选择问题

    在前两篇 OracleJDK是什么?OracleJDK的版本怎么选择? 和 OpenJDK是什么? 中分别介绍了 OracleJDK 和 OpenJDK 的来历以及概念,那可能就有小伙伴要问了:那我到 ...

  3. 码农飞升记-02-OracleJDK是什么?OracleJDK的版本怎么选择?

    目录 1.Oracle JDK 是什么? 2.Oracle JDK 版本如何选择? 1.Java SE 发布节奏以及不同版本的差距 1.Java SE 8 以及之前版本的发布节奏和不同版本的差距 1. ...

  4. 码农飞升记-03-OpenJDK是什么?

    目录 1.OpenJDK 概述 2.OpenJDK 的发展史 3.OpenJDK Community 1.角色定义 Participant(参与者) Contributor(贡献者) OpenJDK ...

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

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

  6. Java 发展历程

    JDK 1.0 1991年4月,由 James Gosling 博士领导的绿色计划(Green Project)开始启动,此计划的目的是开发一种能够在各种消费性电子产品(如机顶盒.冰箱.收音机等)上运 ...

  7. Java发展历程

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

  8. 如何提高码农产量,基于java的web快速开发平台之自定义表单开发随笔

    老板 :下班前一定写完? 程序猿:可以,下班前能一定给! 第二天早上上班~~~ 老板:这都第二天了,怎么没写完? 程序猿:我还没有下班呢! 哎!程序猿的痛啊 公司上线的项目有不少销售记录表,又是报价单 ...

  9. Java语言的发展历程

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

随机推荐

  1. Git 提交获取项目与提交项目 记录

    首先去git官网下载版本安装:https://git-scm.com/downloads 在自己生产免密令牌,安装后用git程序导出. 1.自己在桌面或者某盘创建一个文件夹,在文件夹右键找到 GIt ...

  2. Spring-04 Bean的自动装配

    Spring-04 Bean的自动装配 Bean的自动装配 1.自动装配说明 自动装配是使用spring满足bean依赖的一种方法. spring会在应用上下文中为某个bean寻找其依赖的bean. ...

  3. 探索 .NET Core 依赖注入的 IServiceProvider

    在上一篇文章中,我们学习了Microsoft.Extensions.DependencyInjection中的IServiceCollection,包括服务注册转换为ServiceDescriptor ...

  4. PAT-1147(Heaps)最大堆和最小堆的判断+构建树

    Heaps PAT-1147 #include<iostream> #include<cstring> #include<string> #include<a ...

  5. 不用typsescript也能使用类型增强功能

    由于 JS 的弱类型.宽松的编写规范.以及开发工具的弱鸡支持,我们在维护前人的代码时,经常会出现不知道某一个方法或字段命名来自于哪里,一定要在全局搜索以后慢慢筛查才能找到 同样我们在使用接口返回的对象 ...

  6. Linux速通02 命令格式

    命令的格式 # 格式:命令 [选项][参数] * 命令:告诉 Linux操作系统执行什么 * 选项:说明命令运行的方式(可以改变命令的功能).以 "-"字符开始 * 参数:说明命令 ...

  7. AtCoder Beginner Contest 192

    A Star #include <cstdio> using namespace std; int n; int main() { scanf("%d", &n ...

  8. FreeBSD ports 基本用法

    首先获取portsnap#portsnap fetch extract---------------------------------------使用whereis 查询软件地址如#whereis ...

  9. Serverless Wordpress 系列建站教程(三)

    从前面两篇教程文章里,我们可以了解到 Serverless WordPress 的低门槛部署,免运维等功能优势.而建站场景中,开发者关注的另一个重点则是成本问题,Serverless 架构究竟如何计费 ...

  10. [BJOI2020] 封印

    一.题目 点此看题 二.解法 今天不知道为什么手感这么好,写一发完全没调就过掉了. 我感觉这种多组询问的字符串题是很难的,经常没有什么思路.我先考虑了一下能不能像 区间本质不同的子串个数 这样直接离线 ...