Java发展史


Java:由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台的总称。Java 语言是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由当时任职太阳微系统的詹姆斯 · 高斯林(James Gosling)等人于 1990 年代初开发,它最初被命名为 Oak。Java 伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
  Java 从第一个版本诞生到现在已经有十九年的时间了。时间若白驹过隙,转瞬即逝。弹指间 19 年过去了,在下图所展示的时间线中,我们看到 JDK 已经发展到了 1.8 版。在这 19 年里还诞生了无数和 Java 相关的产品、技术和标准。现在让我们走入时间隧道,从孕育 Java 语言的时代开始,回顾一下 Java 的发展轨迹和历史变迁。



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



  1995 年 5 月 23 日,Oak 语言改名为 Java,并且在 SunWorld 大会上正式发布 Java 1.0 版本。Java 语言第一次提出了 “Write Once,Run Anywhere” 的口号。
  1996 年 1 月 23 日,JDK 1.0 发布,Java 语言有了第一个正式版本的运行环境。JDK 1.0 提供了一个纯解释执行的 Java 虚拟机实现(Sun Classic VM)。JDK 1.0 版本的代表技术包括:Java 虚拟机、Applet、AWT 等。
  1996 年 4 月,10 个最主要的操作系统供应商申明将在其产品中嵌入 Java 技术。同年 9 月,已有大约 8.3 万个网页应用了 Java 技术来制作。在 1996 年 5 月底,Sun 公司于美国旧金山举行了首届 JavaOne 大会,从此 JavaOne 成为全世界数百万 Java 语言开发者每年一度的技术盛会。



  1997 年 2 月 19 日,Sun 公司发布了 JDK 1.1,Java 技术的一些最基础的支撑点(如 JDBC 等)都是在 JDK 1.1 版本中发布的,JDK 1.1 版的技术代表有:JAR 文件格式、JDBC、JavaBeans、RMI。Java 语法也有了一定的发展,如内部类(Inner Class)和反射(Reflection)都是在这个时候出现的。
  直到 1999 年 4 月 8 日,JDK 1.1 一共发布了 1.1.0~1.1.8 九个版本。从 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(切尔西,城市名)。
  1998 年 12 月 4 日,JDK 迎来了一个里程碑式的版本 JDK 1.2,工程代号为 Playground(竞技场),Sun 在这个版本中把 Java 技术体系拆分为 3 个方向,分别是面向桌面应用开发的 J2SE(Java 2 Platform, Standard Edition)、面向企业级开发的 J2EE(Java 2 Platform, Enterprise Edition)和面向手机等移动终端开发的 J2ME(Java 2 Platform, Micro Edition)。在这个版本中出现的代表性技术非常多,如 EJB、Java Plug-in、Java IDL、Swing 等,并且这个版本中 Java 虚拟机第一次内置了 JIT(Just In Time)编译器(JDK 1.2 中曾并存过 3 个虚拟机,Classic VM、HotSpot VM 和 Exact VM,其中 Exact VM 只在 Solaris 平台出现过;后面两个虚拟机都是内置 JIT 编译器的,而之前版本所带的 Classic VM 只能以外挂的形式使用 JIT 编译器)。在语言和 API 级别上,Java 添加了 strictfp 关键字与现在 Java 编码之中极为常用的一系列 Collections 集合类。
  在 1999 年 3 月和 7 月,分别有 JDK 1.2.1 和 JDK 1.2.2 两个小版本发布。



  1999 年 4 月 27 日,HotSpot 虚拟机发布,HotSpot 最初由一家名为 “Longview Technologies” 的小公司开发,因为 HotSpot 的优异表现,这家公司在 1997 年被 Sun 公司收购了。HotSpot 虚拟机发布时是作为 JDK 1.2 的附加程序提供的,后来它成为了 JDK 1.3 及之后所有版本的 Sun JDK 的默认虚拟机。
  2000 年 5 月 8 日,工程代号为 Kestrel(美洲红隼)的 JDK 1.3 发布,JDK 1.3 相对于 JDK 1.2 的改进主要表现在一些类库上(如数学运算和新的 Timer API 等),JNDI 服务从 JDK 1.3 开始被作为一项平台级服务提供(以前 JNDI 仅仅是一项扩展),使用 CORBA IIOP 来实现 RMI 的通信协议,等等。这个版本还对 Java 2D 做了很多改进,提供了大量新的 Java 2D API,并且新添加了 JavaSound 类库。JDK 1.3 有 1 个修正版本 JDK 1.3.1,工程代号为 Ladybird(瓢虫),于 2001 年 5 月 17 日发布。
  自从 JDK 1.3 开始,Sun 维持了一个习惯:大约每隔两年发布一个 JDK 的主版本,以动物命名,期间发布的各个修正版本则以昆虫作为工程名称。
  2002 年 2 月 13 日,JDK 1.4 发布,工程代号为 Merlin(灰背隼)。JDK 1.4 是 Java 真正走向成熟的一个版本,Compaq、Fujitsu、SAS、Symbian、IBM 等著名公司都有参与甚至实现自己独立的 JDK 1.4。哪怕是在十多年后的今天,仍然有许多主流应用(Spring、Hibernate、Struts 等)能直接运行在 JDK 1.4 之上,或者继续发布能运行在 JDK 1.4 上的版本。JDK 1.4 同样发布了很多新的技术特性,如正则表达式、异常链、NIO、日志类、XML 解析器和 XSLT 转换器等。



  JDK 1.4 有两个后续修正版:
  2002 年 9 月 16 日发布的工程代号为 Grasshopper(蚱蜢)的 JDK 1.4.1
  2003 年 6 月 26 日发布的工程代号为 Mantis(螳螂)的 JDK 1.4.2。
  2002 年前后还发生了一件与 Java 没有直接关系,但事实上对 Java 的发展进程影响很大的事件,那就是微软公司的. NET Framework 发布了。这个无论是技术实现上还是目标用户上都与 Java 有很多相近之处的技术平台给 Java 带来了很多讨论、比较和竞争,.NET 平台和 Java 平台之间声势浩大的孰优孰劣的论战到目前为止都在继续。
  2004 年 9 月 30 日,JDK 1.5 发布,工程代号 Tiger(老虎)。从 JDK 1.2 以来,Java 在语法层面上的变换一直很小,而 JDK 1.5 在 Java 语法易用性上做出了非常大的改进。例如,自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环(foreach 循环)等语法特性都是在 JDK 1.5 中加入的。在虚拟机和 API 层面上,这个版本改进了 Java 的内存模型(Java Memory Model,JMM)、提供了 java.util.concurrent 并发包等。另外,JDK 1.5 是官方声明可以支持 Windows 9x 平台的最后一个 JDK 版本。
  2006 年 12 月 11 日,JDK 1.6 发布,工程代号 Mustang(野马)。在这个版本中,Sun 终结了从 JDK 1.2 开始已经有 8 年历史的 J2EE、J2SE、J2ME 的命名方式,启用 Java SE 6、Java EE 6、Java ME 6 的命名方式。JDK 1.6 的改进包括:提供动态语言支持(通过内置 Mozilla Java Rhino 引擎实现)、提供编译 API 和微型 HTTP 服务器 API 等。同时,这个版本对 Java 虚拟机内部做了大量改进,包括锁与同步、垃圾收集、类加载等方面的算法都有相当多的改动。
  在 2006 年 11 月 13 日的 JavaOne 大会上,Sun 公司宣布最终会将 Java 开源,并在随后的一年多时间内,陆续将 JDK 的各个部分在 GPL v2(GNU General Public License v2)协议下公开了源码,并建立了 OpenJDK 组织对这些源码进行独立管理。除了极少量的产权代码(Encumbered Code,这部分代码大多是 Sun 本身也无权限进行开源处理的)外,OpenJDK 几乎包括了 Sun JDK 的全部代码,OpenJDK 的质量主管曾经表示,在 JDK 1.7 中,Sun JDK 和 OpenJDK 除了代码文件头的版权注释之外,代码基本上完全一样,所以 OpenJDK 7 与 Sun JDK 1.7 本质上就是同一套代码库开发的产品。
  JDK 1.6 发布以后,由于代码复杂性的增加、JDK 开源、开发 JavaFX、经济危机及 Sun 收购案等原因,Sun 在 JDK 发展以外的事情上耗费了很多资源,JDK 的更新没有再维持两年发布一个主版本的发展速度。JDK 1.6 到目前为止一共发布了 37 个 Update 版本,最新的版本为 Java SE 6 Update 37,于 2012 年 10 月 16 日发布。



  2009 年 2 月 19 日,工程代号为 Dolphin(海豚)的 JDK 1.7 完成了其第一个里程碑版本。根据 JDK 1.7 的功能规划,一共设置了 10 个里程碑。最后一个里程碑版本原计划于 2010 年 9 月 9 日结束,但由于各种原因,JDK 1.7 最终无法按计划完成。
  从 JDK 1.7 最开始的功能规划来看,它本应是一个包含许多重要改进的 JDK 版本,其中的 Lambda 项目(Lambda 表达式、函数式编程)、Jigsaw 项目(虚拟机模块化支持)、动态语言支持、GarbageFirst 收集器和 Coin 项目(语言细节进化)等子项目对于 Java 业界都会产生深远的影响。在 JDK 1.7 开发期间,Sun 公司由于相继在技术竞争和商业竞争中都陷入泥潭,公司的股票市值跌至仅有高峰时期的 3%,已无力推动 JDK 1.7 的研发工作按正常计划进行。为了尽快结束 JDK 1.7 长期 “跳票” 的问题,Oracle 公司收购 Sun 公司后不久便宣布将实行 “B 计划”,大幅裁剪了 JDK 1.7 预定目标,以便保证 JDK 1.7 的正式版能够于 2011 年 7 月 28 日准时发布。“B 计划” 把不能按时完成的 Lambda 项目、Jigsaw 项目和 Coin 项目的部分改进延迟到 JDK 1.8 之中。最终,JDK 1.7 的主要改进包括:提供新的 G1 收集器(G1 在发布时依然处于 Experimental 状态,直至 2012 年 4 月的 Update 4 中才正式 “转正”)、加强对非 Java 语言的调用支持(JSR-292,这项特性到目前为止依然没有完全实现定型)、升级类加载架构等。



  到目前为止,JDK 1.7 已经发布了 9 个 Update 版本,最新的 Java SE 7 Update 9 于 2012 年 10 月 16 日发布。从 Java SE 7 Update 4 起,Oracle 开始支持 Mac OS X 操作系统,并在 Update 6 中达到完全支持的程度,同时,在 Update 6 中还对 ARM 指令集架构提供了支持。至此,官方提供的 JDK 可以运行于 Windows(不含 Windows 9x)、Linux、Solaris 和 Mac OS 平台上,支持 ARM、x86、x64 和 Sparc 指令集架构类型。
  2009 年 4 月 20 日,Oracle 公司宣布正式以 74 亿美元的价格收购 Sun 公司,Java 商标从此正式归 Oracle 所有(Java 语言本身并不属于哪间公司所有,它由 JCP 组织进行管理,尽管 JCP 主要是由 Sun 公司或者说 Oracle 公司所领导的)。由于此前 Oracle 公司已经收购了另外一家大型的中间件企业 BEA 公司,在完成对 Sun 公司的收购之后,Oracle 公司分别从 BEA 和 Sun 中取得了目前三大商业虚拟机的其中两个:JRockit 和 HotSpot,Oracle 公司宣布在未来 1~2 年的时间内,将把这两个优秀的虚拟机互相取长补短,最终合二为一。可以预见在不久的将来,Java 虚拟机技术将会产生相当巨大的变化。
  2011 年 7 月 28 日,Oracle 公司发布 Java SE 1.7
  2014 年 3 月 18 日,Oracle 公司发表 Java SE 1.8

 

参考资料
Java 发展史之 Java 由来

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值