<b>1.4 java发展简史</b>
本节将介绍java的发展简史。这些内容来自很多出版资料(最重要的是sunworld的在线杂志1995年7月刊上对java创建者的专访)。
java的历史要追溯到1991年,由patrick naughton和james gosling(一个全能的计算机奇才)带领的sun公司的工程师小组想要设计一种小型的计算机语言,主要用于像有线电视转换盒这类的消费设备。由于这些消费设备的处理能力和内存都很有限,所以语言必须非常小且能够生成非常紧凑的代码。另外,由于不同的厂商会选择不同的中央处理器(cpu),因此这种语言的关键是不与任何特定的体系结构捆绑在一起。这个项目被命名为“green”。
代码短小、紧凑且与平台无关,这些要求促使开发团队设计一个可移植的语言,可以为虚拟机生成中间代码。
不过,sun公司的人都有unix的应用背景。因此,所开发的语言以c++为基础,而不是lisp、smalltalk或pascal。不过,就像gosling在专访中谈到的:“毕竟,语言只是实现目标的工具,而不是目标本身”。gosling把这种语言称为“oak”(这么起名的原因大概是因为他非常喜欢自己办公室外的橡树)。sun公司的人后来发现oak是一种已有的计算机语言的名字,于是,将其改名为java。事实证明这是一个很有灵感的选择。
1992年,green项目发布了它的第一个产品,称之为“*7”。这个产品具有非常智能的远程控制。遗憾的是,sun公司对生产这个产品并不感兴趣,green项目组的人员必须找出其他的方法来将他们的技术推向市场。然而,没有一个标准消费品电子公司对此感兴趣。于是,green项目组竞标了一个提供视频点播等新型服务的有线电视盒的项目,但没有成功(有趣的是,得到这个项目的公司的领导恰恰是开创netscape公司的jim clark。netscape公司后来对java的成功给予了很大的帮助)。
green项目(这时换了一个新名字——“first person公司”)花费了1993年一整年以及1994年的上半年,一直在苦苦寻求其技术的买家。然而,一个也没有找到(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浏览器。为了炫耀java语言超强的能力,hotjava浏览器采用java编写。设计者让hotjava浏览器具有在网页中执行内嵌代码的能力。这一“技术印证”在1995年5月23日的sunworld上得到展示,同时引发了人们延续至今的对java的狂热追逐。
1996年年初,sun发布了java的第1个版本。人们很快地意识到java1.0不能用来进行真正的应用开发。的确,可以使用java 1.0来实现在画布上随机跳动的神经质的文本applet,但它却没有提供打印功能。坦率地说,java 1.0的确没有为其黄金时期的到来做好准备。后来的java 1.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,其中只做了一些简单的改进。
2014年,java 8终于发布,在近20年中这个版本有了最大的改变。java
8提供了一种“函数式”编程方式,可以很容易地表述并发执行的计算。所有编程语言都必须与时俱进,java在这方面显示出非凡的能力。
表1-1展示了java语言以及类库的发展状况。可以看到,应用程序编程接口(api)的规模发生了惊人的变化。
表1-1 java语言的发展状况
版 本 年 份 语言新特性 类与接口的数量
1.0 1996 语言本身 211
1.1 1997 内部类 477
1.2 1998 strictfp修饰符 1524
1.3 2000 无 1840
1.4 2002 断言 2723
5.0 2004 泛型类、“for each”循环、可变元参数、自动装箱、元数据、枚举、静态导入 3279
6 2006 无 3793
7 2011 基于字符串的switch、钻石操作符、二进制字面量、异常处理改进 4024
8 2014 lambda表达式,包含默认方法的接口,流和日期/时间库 4240