- Java核心技术卷I基础知识(原书第9版)
- (美)Cay S.Horstmann Gary Cornell
- 2217字
- 2021-04-01 04:35:32
1.4 Java发展简史
本节将介绍Java的发展简史。这些参考资料来源于多方面的出版物(最重要的是SunWorld的在线杂志1995年7月刊上对Java创建者的专访)。
Java的历史要追溯到1991年,由Patrick Naughton及其伙伴James Gosling(一个全能的计算机奇才)带领的Sun公司的工程师小组想要设计一种小型的计算机语言,主要用于像有线电视转换盒这类的消费设备。由于这些消费设备的处理能力和内存都很有限,所以语言必须非常小且能够生成非常紧凑的代码。另外,由于不同的厂商会选择不同的中央处理器(CPU),因此这种语言的关键是不能与任何特定的体系结构捆绑在一起。这个项目被命名为“Green”。
代码短小、紧凑且与平台无关,这些要求促使开发团队联想起很早以前的一种模型,某些Pascal的实现曾经在早期的PC上尝试过这种模型。以Pascal的发明者Niklaus Wirth为先驱,率先设计出一种为假想的机器生成中间代码的可移植语言(假想的机器称为虚拟机——Java虚拟机即JVM的命名由此而来)。这种中间代码可以应用于所有已经正确安装解释器的机器上。Green项目工程师也使用了虚拟机,从而解决了课题中的主要问题。
不过,Sun公司的人都有UNIX的应用背景。因此,所开发的语言以C++为基础,而不是Pascal。特别是这种语言是面向对象的,而不是面向过程的。就像Gosling在专访中谈到的:“毕竟,语言只是实现目标的工具,而不是目标本身”。Gosling把这种语言称为“Oak”(这么起名的原因大概是因为他非常喜欢自己办公室外的橡树)。Sun公司的人后来发现Oak是一种已有的计算机语言的名字,于是,将其改名为Java。事实证明这是一个极好的选择。
1992年,Green项目发布了它的第一个产品,称之为“*7”。这个产品具有非常智能的远程控制(其能力相当于长6英寸、宽4英寸、高4英寸的SPARC工作站)。遗憾的是,Sun公司对生产这个产品并不感兴趣,Green项目组的人员必须找出其他的方法来将他们的技术推向市场。然而,没有一个标准消费品公司对此感兴趣。于是,Green项目组竞标了一个提供视频点播等新型服务的有线电视盒的项目,但没有成功(有趣的是,得到这个项目的公司的领导恰恰是开创Netscape公司的Jim Clark。Netscape公司后来对Java的成功给予了很大的帮助)。
Green项目(这时换了一个新名字——“First Person公司”)花费了1993年一整年以及1994年的上半年,一直在苦苦寻求其技术的买家。然而,一个也没有找到(Patrick Naughton,项目组的创立人之一,也是完成此项目大多数市场工作的人,声称为了销售这项技术,累计飞行了300000英里)。1994年First Person公司解散了。
当这一切在Sun公司中继续进行的时候,Internet的万维网也日渐发展壮大。Web 的关键是把超文本页面转换到屏幕上的浏览器。1994年大多数人都在使用Mosaic,这是一个1993年出自伊利诺斯大学超级计算中心的非商业化的Web浏览器(Mosaic的一部分是由Marc Andreessen编写的。当时,他作为一名参加半工半读项目的本科生,编写了这个软件,每小时的薪水只有6.85美元。他后来成了Netscape公司的创始人之一和技术总监,可谓名利双收)。
在接受SunWorld采访的时候,Gosling说在1994年中期,Java语言的开发者意识到:“我们能够建立一个最酷的浏览器。我们已经拥有在客户机/服务器主流模型中所需要的体系结构中立、实时、可靠、安全——这些在工作站环境并不太重要,所以,我们决定开发浏览器。”
实际的浏览器是由Patrick Naughton和Jonathan Payne开发的,并演变为HotJava浏览器。为了炫耀Java语言超强的能力,HotJava浏览器采用Java编写。然而,设计者也非常清楚现在所谓的applet的威力,因此他们让HotJava浏览器具有执行网页中内嵌代码的能力。这一“技术印证”在1995年5月23日的SunWorld上得到展示,同时引发了人们延续至今的对Java的狂热追逐。
1996年年初,Sun发布了Java的第1个版本。人们很快地意识到Java1.0不能用来进行真正的应用开发。的确,可以使用Java 1.0来实现在画布上随机跳动的神经质的文本applet,但它却没有提供打印功能。坦率地说,Java 1.0的确没有为其黄金时期的到来做好准备。后来的Java1.1弥补了其中的大多明显的缺陷,大大改进了反射能力,并为GUI编程增加了新的事件处理模型。不过它仍然具有很大的局限性。
1998年JavaOne会议的头号新闻是即将发布Java 1.2版。这个版本取代了早期玩具式的GUI,并且它的图形工具箱更加精细而具有可伸缩性,更加接近“一次编写,随处运行”的承诺。在1998年12月Java 1.2发布三天之后,Sun公司市场部将其名称改为更加吸引人的“Java 2标准版软件开发工具箱1.2版”。
除了“标准版”之外,Sun还推出了两个其他的版本:一个是用于手机等嵌入式设备的“微型版”;另一个是用于服务器端处理的“企业版”。本书主要讲述标准版。
标准版的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 Microsystems终于沦陷,于2009年被Oracle收购。Java的开发停滞了很长一段时间。直到2011年Oracle发布了Java的一个新版本,Java 7,其中只做了一些简单的改进,而决定将重要的改进推迟到Java 8,该版本将在2013年发布。
表1-1展示了Java语言以及类库的发展状况。可以看到,应用程序接口(API)的规模发生了惊人的变化。
表1-1 Java语言的发展状况