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 年,
First 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 年之内不会有大的变化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值