天天看点

java 核心技术 卷Ⅰ- 1.4 Java 发展简史

本节将介绍 Java 的发展简史。这些内容来自很多已发布的资料(最重要的是 SunWorld的在线杂志 1995 年 7 月刊上对 Java 创始人的专访)。

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

代码短小、紧凑且与平台无关,这些要求促使开发团队设计出一个可移植的语言,可以为虚拟机生成中间代码。

Sun 公司的人都有 UNIX 的应用背景。因此,所开发的语言以 C++ 为基础,而不是Lisp、Smalltalk 或 Pascal。不过,正如 Gosling 在专访中谈道:“毕竟,语言只是实现目标的工具,而不是目标本身。”Gosling 把这种语言称为“ Oak”(这么起名大概是因为他非常喜欢他在 Sun 公司的办公室窗外的一棵橡树)。Sun 公司的人后来发现,已经有另外一个计算机语言取名为 Oak,于是,他们将这个语言改名为 Java。事实证明这是一个很有灵感的选择。

1992 年,Green 项目发布了它的第一个产品,称之为“ *7”。这个产品可以提供非常智能的远程控制。遗憾的是,Sun 公司对生产这个产品并不感兴趣,Green 项目组的人员必须找到其他方法将他们的技术推向市场。然而,也没有任何一家标准消费品电子公司对此感兴趣。于是,Green 项目组投标了一个设计有线电视盒的项目,它能提供视频点播等新型有线服务,但他们没能拿到这个合同(有趣的是,得到这个项目的公司的领导人恰恰是开创Netscape 公司的 Jim Clark。Netscape 公司后来对 Java 的成功做出了很大贡献)。

在 1993 年以及 1994 年的上半年,Green 项目(这时候换了一个新名字—“First Person公司”)一直在苦苦寻求买家购买他们的技术。然而,一个也没有找到(Patrick Naughton—项目组的创始人之一,也是完成大部分营销工作的人,声称为了销售这项技术,累计飞行了300 000 英里○一)。1994 年First Person 公司解散了。

当这一切在 Sun 公司发生的时候,Internet 的万维网也在日渐发展壮大。万维网的关键是浏览器把超文本页面转换到屏幕上1994 年大多数人都在使用 Mosaic,这是 1993 年出自伊利诺伊大学超级计算中心的一个非商业化的 Web 浏览器(Mosaic 的一部分是由 Marc Andreessen编写的。当时,他作为一名参加半工半读项目的本科生,编写了这个软件,每小时的薪水只有 6.85 美元。他后来成为 Netscape 公司的创始人之一和技术总监,可谓名利双收)。

在接受 SunWorld 采访的时候,Gosling 说,在 1994 年年中,Java 语言的开发者意识到:“我们能建立一个相当酷的浏览器。在客户 / 服务器主流框架中,浏览器恰好需要我们已经完成的一些工作:体系结构中立、实时、可靠、安全—这些问题在工作站环境并不太重要,所以,我们决定开发浏览器。”

实际的浏览器是由 Patrick Naughton 和 Jonathan Payne 开发的,并演变为 HotJava 浏览器。HotJava 浏览器采用 Java 编写,以炫耀 Java 语言超强的能力。这个浏览器能够在网页中执行内嵌的 Java 代码。这一“技术证明”在 1995 年 5 月 23 日的 SunWorld’95 大会上展示,引发了人们对 Java 的狂热追逐并延续至今。

1996 年年初,Sun 公司发布了 Java 的第 1 个版本。人们很快地意识到 Java 1.0 不能用来完成真正的应用开发。的确,可以使用 Java 1.0 实现在画布上随机跳动的“神经质文本”applet,但它没有提供打印功能。坦率地说,Java 1.0 的确没有为其黄金时期的到来做好准备。后来的 Java 1.1 弥补了大多明显的缺陷,大大改进了反射能力,并为 GUI 编程增加了新的事件处理模型。不过它仍然有很大的局限性。

1998 年 JavaOne 会议的头号新闻是即将发布 Java 1.2 版。这个版本将早期玩具式的 GUI和图形工具包代之以复杂而且可伸缩的工具包。在 1998 年 12 月 Java 1.2 发布仅 3 天之后,Sun 公司市场部将它改名为更加吸引人的“Java 2 标准版软件开发包 1.2 版”。

除了“标准版”(Standard Edition)之外,Sun 公司还推出了另外两个版本:一个是用于手机等嵌入式设备的“微型版”(Micro Edition);另一个是用于服务器端处理的“企业版”(Enterprise Edition)。本书主要介绍标准版。

标准版的 1.3 和 1.4 版本对最初的 Java 2 版本做出了增量式的改进,提供了不断扩展的标准类库,提高了性能,当然,还修正了一些 bug。在此期间,原先对 Java applet 和客户端应用的炒作逐渐消退,但 Java 成了服务器端应用的首选平台。

5.0 版是自 1.1 版以来第一个对 Java 语言做出重大改进的版本(这一版本原来定为 1.5版,但在 2004 年的 JavaOne 会议之后,版本号直接升至 5.0)。经过多年的研究,这个版本添加了泛型类型(generic type,大致相当于 C++ 的模板),其挑战性在于添加这一特性而不需要对虚拟机做任何修改。另外,受到 C# 的启发,还增加了几个很有用的语言特性:“for each”循环、自动装箱和注解。

6 版(没有后缀 .0)于 2006 年年底发布。同样,这个版本没有对语言方面再进行修改,而是做了另外一些性能改进,并增强了类库。

随着数据中心越来越依赖于商业硬件而不是专用服务器,Sun 公司终于陷入困境,于2009 年被 Oracle 公司收购。Java 的开发停滞了很长一段时间。直到 2011 年 Oracle 公司发布了 Java 的一个新版本—Java 7,其中只做了一些简单的改进。

2014 年,Java 8 终于发布,在近 20 年中这个版本的改变最大。Java 8 包含了一种“函数式”编程方式,可以很容易地表述能并发执行的计算。所有编程语言都必须与时俱进,Java在这方面显示出了非凡的能力。

Java 9 的主要特性要一直追溯到 2008 年。那时,Java 平台的首席工程师 Mark Reinhold开始着力解析这个庞大的 Java 平台。为此引入了模块(module),模块是提供一个特定功能的自包含代码单元。设计和实现一个适用于 Java 平台的模块系统前后用了 11 年,而它是否也适用于 Java 应用和类库还有待观察。Java 9 于 2017 年发布,它还提供了另外一些吸引人的特性,我们将在本书中介绍这些特性。

从 2018 年开始,每 6 个月就会发布一个 Java 版本,以支持更快地引入新特性。每过一段时间,会把某个版本(如 Java 11 和 Java 17)指定为长期支持版本。中间版本提供了一种试验新特性的机制。

表 1-1 展示了 Java 语言及类库的演进。可以看到,API 的规模有了惊人的增长。

java 核心技术 卷Ⅰ- 1.4 Java 发展简史
java 核心技术 卷Ⅰ- 1.4 Java 发展简史