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。事实证明这是一个极好的选择。 Green项目(这时换了一个新名字—“First Person公司”)花费了1993年一整年以及1994年的上半年,一直在苦苦寻求其技术的买家。然而,一个也没有找到(Patrick Naughton,项目组的创立人之一,也是此项目经营工作收尾的人,声称为了销售这项技术,他们累计飞行了300 000英里)。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不能用来进行真正的应用开发。的确,可以使用Java1.0来实现在画布上随机跳动的nervous文本,但它却没有提供打印功能。坦率地说,Java1.0的确没有为其黄金时期的到来做好准备。后来的Java1.1 弥补了其中的大多部分明显的缺陷,大大改进了反射能力,并为GUI编程增加了新的事件处理模型。尽管它仍然具有很大的局限性。 1998年JavaOne会议的头号新闻是即将发布Java1.2版。这个版本取代了早期玩具式的GUI ,并且它的图形工具箱更加精细而具有可伸缩性,更加接近“一次编写,随处运行”的承诺。在1998年12月Java1.2发布三天之后,Sun公司市场部将其名称改为更加吸引人的“Java2标准版软件开发工具箱1.2版”。 除了“标准版”之外,Sun还推出了两个其他的版本:一个是用于手机等嵌入式设备的“微型版”;另一个是用于服务器端处理的“企业版”。本书主要讲述标准版。 标准版的1.3和1.4版本对最初的Java 2版本做出了某些改进,扩展了标准类库,提高系统性能。当然,还修正了一些bug。在此期间,Java applet采用低调姿态,并淡化了客户端的应用,但却成为了服务器端应用的{sx}平台。 5.0版是自1.1版以来{dy}个对Java语言做出重大改进的版本(这一版本原来被命名为1.5版,在2004年的JavaOne会议之后,版本数字升至5.0)。经历了多年的研究,这个版本添加了泛型类型(generic type)(类似于C++的模版),其挑战性在于添加这一特性并没有对虚拟机做出任何修改。另外,还有几个来源于C# 的很有用的语言特性:for each循环、自动打包和元数据。语言的修改总会引起兼容性的问题。然而,这几个如此诱人的新语言特性,必将被程序设计人员所接受。 版本6(没有后缀.0)于2006 年末发布。这个版本没有对语言方面再进行改进。但是,改进了其他性能,并增强了类库。表1-1展示了Java语言以及类库的发展状况。可以看到,应用程序接口(API)的规模发生了惊人的变化。 表1-1 Java语言的发展状况 |