任何一门语言的诞生都有其诞生的意义。 Java 也不例外。

任何一个语言在一开始的时候都是不完美的, 并且相对来说功能和开发语言的需求就简单很多,也就是功能相对单一,都是在一点一点完善发展起来的, 跟上时代了就继续盛行, 哪些迭代没有跟上的就也被淘汰了。

1991 年

Java 的历史要追溯到 1991 年, 由 Sun 公司带领的开发小组, 想设计一种小型的计算机语言,主要用于有线电视转换盒这类的消费设备。 由于这类设备的处理能力和内存都非常有限,所以语言就必须设计的非常小且能够生成紧凑的代码。 另外,由于不同的厂商会选择不同的 CPU, 因此很重要的一点就是这种语言不应该与任何特定的体系结构绑定。这个项目被命名为 “Green”。

Sun 公司的人都有 Unix 的应用背景, 所以开发的语言用了 C++ 为基础。并把这种语言称为 “Oak”, 后来, Sun 公司的人后来发现, Oak 是一种已经有的计算机语言的名字, 于是, 将其改名为 “Java”。

1992 年

1992 年, Green 项目发了第一个产品,这个产品可以提供非常智能的远程控制,遗憾的是, Sun 公司对这个产品并不感兴趣。

1993 年

1993 年,Green 项目(新名字 “First Person 公司”)在一这一整年以及 1994 年上半年, 一直苦苦寻求买家购买他们的技术。 然后一个也没有找到, 然后在 1994 年,Frist Person 公司解散了。

而且在这一年,1994年4月20日,一条64K的国际专线从中科院计算机网络中心(NCFC工程)通过美国Sprint公司连入Internet,实现了中国与Internet的全功能连接。从此中国被国际上正式承认为第77个真正拥有全功能Internet的国家。

当这些在 Sun 公司发生的时候, Internet 的万维网也在日渐发展壮大, 当时的万维网关键是把浏览器超文本页面转换到屏幕上。 在 1994 年大多数都在使用 Mosaic, 这是 1993 年出自伊利诺伊大学超级计算中心的一个非商业化的 Web 浏览器。 在1994 年中期,Java 语言的开发者意识到, 要是能够建立一个相当酷的浏览器, 在客户/服务器主流框架中, 浏览器恰好需要我们完成一些工作: 体系结构中立、实时、可靠、安全。这些问题在工作站环境中并不太重要。 所以决定开发浏览器。

1995 年

实际的浏览器是由 Patrick Naughton 和 Jonathan Payne 开发的,并演变为 HotJava 浏路器. HotJava 浏览器采用Java 编写,为了炫耀 Java 语言的超强能力。这个浏览器可以在网页中执行内嵌的 Java 代码。 也就是 Java Applet。这一 “技术证明” 在 1995 年 5 月 23 日的 SunWorld'95 大会上展示,同时引发了人们对他的追逐, 一直延续延续到现在。诞生几个月后, 就超过了 10 万人下载 Java 语言。

1996 年

1996 年初, Sun 发布了第一个 Java 1.0 版本。 但是这个版本 Java 1.0 并不能用来进行真正的应用开发。虽然后来 Java 1.1 弥补了其中很多的不足和明显的缺陷。大大改进了反射能力, 并未 GUI 编程增加了新的事件处理模型,单是它仍然有很大的局限性, 并没有为 Java 的黄金时期到来做好准备。

JDK 1.0 开发代号为 Oak ( 橡树 )。

1997 年

1997 年 2 月, 发布了 Java 1.1。 JavaOne 会议召开, 参与者逾一万人, 创下了当时全球同类会员规模记录。

JDK 1.1 引入的新特性包括:

  • 引入JDBC(Java Database Connectivity);

  • 支持内部类;

  • 引入Java Bean;

  • 引入RMI(Remote Method Invocation);

  • 引入反射(仅用于内省)。

1998 年

1998 年 JavaOne 会议的头号新闻就是发布 Java 1.2 版本, 将这个早期玩具式的 GUI 和图形工具包括一些工具包。 在这个版本发布的 3 天后, Sun 公司的市场部将它改名为更加吸引人的 “Java 2 标准版软件开发 1.2 版”。

也就在这个时候, 除了标准版(Standard Edition)J2SE 之外, Sun 公司还推出了另外两个版本: 一是, 手机嵌入式设备“微型版”(Micro Edition)J2ME。另一个是用于服务器端的处理“企业版”(Enterprise Edition)J2EE。

JDK 1.2 开发代号为Playground(操场)

  • 引入的新特性包括:

  • 引入集合(Collection)框架;

  • 对字符串常量做内存映射;

  • 引入JIT(Just In Time)编译器;

  • 引入对打包的Java文件进行数字签名;

  • 引入控制授权访问系统资源的策略工具;

  • 引入JFC(Java Foundation Classes),包括Swing 1.0、拖放和Java 2D类库;

  • 引入Java 插件;

  • 在JDBC中引入可滚动结果集、BLOB、CLOB、批量更新和用户自定义类型;

  • 在Applet中添加声音支持。

1999 年

1999 年 4 月 27 日, HotSpot 虚拟机发布。

2000 年

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

JDK 1.3 开发代号为Kestrel(红隼)

  • 引入的新特性包括:

  • 引入Java Sound API;

  • jar文件索引;

  • 对Java的各个方面都做了大量优化和增强。

2001 年

2001 年 9 月 24 日, J2EE 1.3 发布。

2002 年

2002 年 2 月 26 日, J2SE 1.4 发布, 标准版 1.3 和 1.4 版本对最初的 Java 2 版本做出了增量式的改进,提供了不断扩展的标准类库。 提高了性能, 并且还修复一些 bug。在这个期间, 原先对 Java Applet 和客户端应用的炒作逐渐消退, 但是 Java 则成为服务器应用端的首选平台。

并且在这个版本上出现了大量的开源框架。

JDK 1.4 开发代号为Merlin(隼)

  • 引入的新特性包括:

  • XML处理;

  • Java打印服务;

  • 引入Logging API;

  • 引入Java Web Start;

  • 引入JDBC 3.0 API;

  • 引入断言;

  • 引入Preferences API;

  • 引入链式异常处理;

  • 支持IPv6;

  • 支持正则表达式;

  • 引入Image I/O slot machine API。

2004 年

2004 年 9 月 30 日, 下午 18:00, J2SE 1.5 发布。 这成为了 Java 语言的里程碑,这个版本对 Java 语言做出了重大的改进,为了表示该版本的重要性, 这个版本原来定位 1.5 版, 在 2004 年的 JavaOne 大会之后, 版本直接升为 5.0,对外宣布 Java SE 5.0。内部还是使用 Java 1.5。 这个版本加入了泛型的支持,另外受到了 C# 的启发, 还增加了几个很有用的语言特性: for each 循环、自动装箱、注解、枚举、可变长参数等。

JDK 1.5 开发代号为Tiger(老虎)

  • 引入的新特性包括:

  • 引入泛型;

  • 增强循环,可以使用迭代方式;

  • 自动装箱与自动拆箱;

  • 类型安全的枚举;

  • 可变参数;

  • 静态引入;

  • 元数据(注解);

  • 引入Instrumentation。

2005 年

2005 年 6 月,JavaOne 大会召开,Sun 公司公开 Java SE 6。并且,对 Java 的各种版本进行更名,取消其中的数字“2”:J2EE 改名为 Java EE,J2SE 改名为 Java SE,J2ME 改名为Java ME。单内部版本不变化还沿用之前的写法。一直延续至今。 这个版本没有对语言方面进行修改, 而是做了其他性能改进, 并增强了类库。

2006 年

2006 年 12 月, Sun 公司发布了 Java EE 6, 并且宣布, 将 Java 语言作为免费软件对外发布。使用 GPL v2 (GNU General Public License v2) 协议下公开了源码。并且建立了 OpenJDK 组织对这些源码进行独立管理。除了极少量的产权代码外(Encumbered Code,这部分代码大多是 Sun 公司本身也无权限进行开源处理的),OpenJDK 几乎包括了 Sun JDK 的全部代码外,OpenJDK 的质量主管曾经表示,在 JDK 1.7 中,Sun JDK 和 OpenJDK 除了代码文件头的版权注释之外,代码基本上完全一样,所以 OpenJDK7 与 Sun JDK 1.7 本质上就是同套代码库开发的产品。

JDK 1.6 开发代号为Mustang(野马)

  • 引入的新特性包括:

  • 支持脚本语言;

  • 引入JDBC 4.0 API;

  • 引入Java Compiler API;

  • 可插拔注解;

  • 增加对Native PKI(Public Key Infrastructure)、Java GSS(Generic Security Service)、Kerberos和LDAP(Lightweight Directory Access Protocol)的支持;

  • 继承Web Services;

  • 做了很多优化。

2009 年

JDK 1.6发布以后,由于代码复杂性的增加、JDK开源、开发 JavaFX、经济危机及Sun 公司收购案等原因,SUN公司在JDK发展以外的事情上耗费了很多资源,JDK的更新没有再维持两年发布一个主版本的发展速度。并且在 2009 年 4 月 20 日,被 Oracle 以 74 亿美元收购 Sun 公司,取得了 Java 的商标版权(Java语言本身并不属于哪个公司所有,它由JCP组织进行管理,尽管JCP主要是由Sun 公司或者说 Oracle 公司所领导的)。也就在这两年 Java 的开发停滞了一段时间。一直到了 2011 年。

JDK 1.7 开发代号是Dolphin(海豚)

  • 引入的新特性包括:

  • switch语句块中允许以字符串作为分支条件;

  • 在创建泛型对象时应用类型推断;

  • 在一个语句块中捕获多种异常;

  • 支持动态语言;

  • 支持try-with-resources;

  • 引入Java NIO.2开发包;

  • 数值类型可以用2进制字符串表示,并且可以在字符串表示中添加下划线;

  • 钻石型语法;

  • null值的自动处理。

2011 年

2011 年 7 月,JavaSE 7 发布。但是很多规划在这个版本的特性,其中 Lambda 项目 ( Lambda 表达式、函数式编程)、Jigsaw 项目(虚拟机模块化支持)、动态语言支持、GarbageFirst 收集器和 Coin 项目(语言细节进化)等子项目都没有实现在这个版本中, 而是用了 Oracle 公司实行的 “B计划”。

2014 年

2014 年 3 月,JavaSE 8 发布。 这个版本, 在近 20 年中这个版本变更最大, Java SE 8 包含了 “函数式” 编程方式,可以很容易的表述并发执行的计算。 这个版本也是现在企业中使用范围最广的一个版本。 就想一开始说的那样, 能跟上时代的进步, 就不会被淘汰。

JDK 1.8 开发代号是Spider(蜘蛛)

  • 支持 lambda支持;

  • 增强日期与时间API的功能;

  • 对垃圾回收的性能也进行了改进;

  • 并且移除了permgen区。

  • Lambdas表达式与Functional接口

  • 接口的默认与静态方法

  • 方法引用

  • 重复注解

  • 更好的类型推测机制

  • 扩展注解的支持

2017 年

2017 年 7 月,Oracle 公司将发布 JDK 9。这个版本算是比较大的调整,加入了很早之前就规划的模块化功能。并且对整个 JDK 基于模块进行了重新编写。Java 9 提供了轻量级 JSON API; 使用 G1 作为默认的垃圾收集器,替代了之前默认使用的 Paralel GC; 引入了 jShell 这个交互性工具。并且全面支持 HTTP 2.0。

也就是在这一年,2017 年 8 月,Oracle 决定将 Java EE 移交给开源组织,最后 Eclipse 基金会接手。

由于甲骨文不允许开源组织用 Java 的名号,于是 Eclipse 选出了 "Jakarta EE" 和 "Enterprise Profile" 两个后续名字,最终前者以 64.4% 的票数获胜。

也就是说,Java EE 已经正式更名为 Jakarta EE(雅加达)。

2018 年

从 2018 年开始, 每6个月就会发布一个 Java 版本, 以更快地引入新特性。这里又分为 LTS 版和最新版。 生产环境中最好只使用 LTS 版本, 因为这个版本更加稳定, 维护周期更长。

2018 年 3 月 21 日, Java 10 发布。

2018 年 9 月 25 日, Java 11 LTS 发布。

2019 年

2019 年 2 月 Java 12 发布

2019 年 9 月 Java 13 发布

2020 年

2020 年 3 月 17 日,Java 14 发布。

2020 年 9 月 15 日,Java 15 发布。

2021 年

2021 年 3 月 16 日,Java SE 16 发布。

2021 年 9 月 14 日,Java SE 17 LTS 发布。

这个是继 Java 11 之后的有一个长期支持版本, 并且直接支持到了 2029 年 9 月。这可能是下一个 Java 8。所以学习的话, 可以直接学习这个版本。当然也可以直接学习 Java 17 这样的话, 对于工作来说 3 年之内不会有大的变化。

举报/反馈

苗子说全栈

307获赞 497粉丝
全栈知识栈,前端,后端, 运维。
关注
0
0
收藏
分享