从jdk诞生到现在已经有11年的时间了。沧海桑田一瞬间。转眼11年过去了,jdk已经发布了6个版本。在这11年里诞生了无数和java相关的技术和标准。现在让我们进入时间隧道,重新回到1995年,再来回顾一下java的发展轨迹和历史变迁。
一、 jdk前传
在这个世界上,熟悉java历史的人非常多,如果要问一个人java是从哪年诞生的,也许大多数人都会回答是1995年(这个非常好记,因为微软的windows95也是在这一年发布的)。但事实上java早在上个世纪90年代初就开始酝酿了。
1991年4月,sun公司的james gosling领导的绿色计划(green project)开始着力发展一种分布式系统结构,使其能够在各种消费性电子产品上运行。而green项目组的成员一开始使用c++语言来完成这个项目,由于green项目组的成员都具有c++背景,所以他们首先把目光锁定了c++编译器,gosling首先改写了c++编译器,但很快他就感到c++的很多不足,需要研发一种新的语言java来替代它,一杯飘香的咖啡成为了它的标志。
在17 个月后,整个系统完成了,这个系统是更注重机顶盒式的操作系统,不过在当时市场不成熟的情况下,他们的项目没有获得成功,但java语言却得到了sun总裁mcnealy的赏识。
直至 1994年下半年,由于internet的迅猛发展和环球信息网 www的快速增长,第一个全球信息网络浏览器mosaic诞生了;此时,工业界对适合在网络异构环境下使用的语言有一种非常急迫的需求;games gosling决定改变绿色计划的发展方向,他们对oak进行了小规模的改造,就这样,java在1995年的3月23日诞生了!java的诞生标志着互联网时代的开始,它能够被应用在全球信息网络的平台上编写互动性及强的applet程序,而1995年的applet无疑能给人们无穷的视觉和脑力震荡。我们姑且将java的这段历史称为java前传吧。
其实java的诞生颇有那么一股“有心栽花花不开,无心插柳柳成阴”的味道。就象当年unix和它的前身multics系统一样。
图1 java创始人 james gosling博士 |
二、jdk的幼年时期(1995~1998)
sun继green项目后又经过了几年的研究,终于在1995年5月23日在sunworld'95上正式发布java和hotjava浏览器。在同年,有很多公司先后获得了java许可证,如netscape在1995年8月,oracle在1995年10月分别获得了java许可证。sun在1995年发布第一个java版本后,于1996年1月宣布成立新的业务部门──javasoft部,这个部分主要负责开发、销售并支持基于java技术的产品,由alanbaratz先生任总裁。
在1995年sun虽然推出了java,但这只是一种语言,而要想开发复杂的应用程序,必须要有一个的强大的开发库支持还行。因此,sun在1996年1月23日发布了jdk1.0。这个版本包括了两部分:运行环境(即jre)和开发环境(即jdk)。在运行环境中包括了核心api、集成api,用户界面api,发布技术,java虚拟机(jvm)五个部分。而开发环境还包括了编译java程序的编译器(即javac)。在jdk1.0时代,jdk除了awt(一种用于开发图形用户界面的api)外,其它的库并不完整。
sun在推出jdk1.0后,紧跟着,sun在1997年2月18日发布了jdk1.1。jdk1.1相对于jdk1.0最大的改进就是为jvm增加了jit(即时编译)编译器。jit和传统的编译器不同,传统的编译器是编译一条,运行完后再将其扔掉,而jit会将经常用到的指令保存在内容中,在下次调用时就不需要再编译了。这样jdk在效率上有了非常大的提升。
sun在推出jdk1.1后,接着又推出了数个jdk1.x版本。自从sun推出java后,jdk的下载量不断彪升,在1997年,jdk的下载量突破了220,000,而在1998年,jdk的下载量已经超过了2,000,000。
虽然在1998年之前,java被众多的软件企业所采用,但由于当时硬件环境和jvm的技术原因,它的应用却很有限。当时java主要只使用在前端的applet以及一些移动设备中。然而这并不等于java的应用只限于这些领域。在1998年是java开始迅猛发展的一年。在这一年中sun发布了jsp/servlet、ejb规范以及将java分成了j2ee、j2se和j2me。标志着java已经吹响了向企业、桌面和移动3个领域进军的号角。
三、jdk的青少年时期(1998~2004)
到1998年,java已经走过了3个年头。从jdk1.0到jdk1.1.8。jdk1.x经过了9个小版本的发展,已经初具规模。至此,它已经走出了摇篮,可以去独闯世界了。
在1998年12月4日。sun发布了java的历史上最重要的一个jdk版本:jdk1.2。这个版本标志着java已经进入java2时代。这个时期也是java飞速发展的时期。
在java2时代sun对java进行了很多革命性的变化 ,而这些革命性的变化一直沿用到现在,对java的发展形成了深远的影响。
jdk1.2自从被分成了j2ee、j2se和j2me三大块,得到了市场的强烈反响。不仅如此,jdk1.2还对它的api分成了三大类。
核心api
由sun公司制定的基本的api,所有的java平台都应该提供。这就是我们平常所说的java核心类库。
可选api
这是sun为jdk提供的扩充api,这些api因平台的不同而不同。
特殊api
用于满足特殊要求的api。如用于jca和jce的第三方加密类库。
java2除了上述的一些改进外,还增加了很多新的特性。其中最吸引眼球的当属swing了。swing是java的另一个图形库。它不但有各式各样先进的组件,而且连组件风格都可抽换。在swing出现后,很快就抢了awt的风头。但swing并不是为取代awt而存在的,事实上swing是建立在awt之上的。就象jface是建立在swt之上一样。另外java2还在多线程、集合类和非同步类上做了大量的改进。
从jdk1.2开始,sun以平均2年一个版本的速度推出新的jdk。在2000年5月8日。sun对jdk1.2进行了重大升级。推出了jdk1.3。
sun在jdk1.3中同样进行了大量的改进,主要表现在一些类库上(如数学运算、新的timer api等)、在jndi接口方面增加了一些dns的支持、增加了jni的支持,这使得java可以访问本地资源了、支持xml以及使用新的hotspot虚拟机代替了传统的虚拟机。
在jdk1.3时代,相应的应用程序服务器也得到了广泛的应用,如第一个稳定版本tomcat3.x在这一时期得到了广泛的应用,weblogic等商业应用服务器也渐渐被接受。
时间如水、生命如歌。转眼到了2002年。sun在这一年的2月13日发布了jdk历史上最为成熟的版本:jdk1.4。在进入21世纪以来,曾经在.net平台和java平台之间发生了一次声势浩大的孰优孰劣的论战,java的主要问题就是性能。
因此,这次sun将主要精力放到了java的性能上。在jdk1.4中,sun放言要对hotspot虚拟机的锁机制进行了改进,使jdk1.4的性能有了质的飞跃。同时由于compaq、fujitsu、 sas、 symbian、 ibm等公司的参与,使jdk1.4成为发展最快的一个jdk版本。到jdk1.4为止,我们已经可以使用java实现大多数的应用了。
四、jdk的壮年时期(2004~至今)
虽然从jdk1.4开始,java的性能有了显著的提高,但java又面临着另一个问题,那就是复杂。
虽然java是纯面向对象语言,但它对一些高级的语言特性(如泛型、增强的for语句)并不支持。而且和java相关的技术,如ejb2.x,也由于它们的复杂而很少有人问津。也许是sun意识到了这一点。因此,在2004年10月,sun发布了我们期待已久的版本:jdk1.5,同时,sun将jdk1.5改名为j2se5.0。和jdk1.4不同,jdk1.4的主题是性能,而j2se5.0的主题是易用。sun之所以将版本号1.5改为5.0,就是预示着j2se5.0较以前的j2se版本有着很大的改过。
sun不仅为j2se5.0增加了诸如泛型、增强的for语句、可变数目参数、注释(annotations)、自动拆箱(unboxing)和装箱等功能,同时,也更新的企业级规范,如通过注释等新特性改善了ejb的复杂性,并推出了ejb3.0规范。同时又针对jsp的前端界面设计而推出了jsf。这个jsf类似于asp.net的服务端控件。通过它可以很快地建立起复杂的jsp界面。
到今年年底sun也再接再厉地推出了j2se6.0的测试版,预计在2007年初将推出它的正式版。
正象j2se6.0的开发代号“野马(mustang)”一样,我们已经隐约听到了野马的嘶鸣。据sun发言人透露,j2se6.0不仅在性能、易用性方面得到了前所未有的提高,而且还提供了如脚本、全新的api(swing和awt等api已经被更新)的支持。而且j2se6.0是专为vista而设计的,它在vista上将会拥有更好的性能。在推出j2se6.0的同时,j2se7.0项目也已经启动。
在java发展的十几年的时间里,经历了无数的风风雨雨。现在java已经成为一种相当成熟的语言了。在这10年的发展中,java平台吸引了数百万的开发者,在网络计算遍及全球的今天,更是有20亿台设备使用了java技术。作为java技术的基础,j2se功不可没,让我们期望j2se伴随java平台一路走好!
五、jdk各版的发布时间表
到现在为止我们已经重新走了一遍java的历史轨迹。在这一部分,为了有一个总体的认识,让我们来看一看java发展的时间表。 (版本号 名称 中文名 发布日期)
| jdk 1.1.4 | sparkler | 宝石 | 1997-09-12 |
| jdk 1.1.5 | pumpkin | 南瓜 | 1997-12-13 |
| jdk 1.1.6 | abigail | 阿比盖尔--女子名 | 1998-04-24 |
| jdk 1.1.7 | brutus | 布鲁图--古罗马政治家和将军 | 1998-09-28 |
| jdk 1.1.8 | chelsea | 切尔西--城市名 | 1999-04-08 |
| j2se 1.2 | playground | 运动场 | 1998-12-04 |
| j2se 1.2.1 | none | 无 | 1999-03-30 |
| j2se 1.2.2 | cricket | 蟋蟀 | 1999-07-08 |
| j2se 1.3 | kestrel | 美洲红隼 | 2000-05-08 |
| j2se 1.3.1 | ladybird | 瓢虫 | 2001-05-17 |
| j2se 1.4.0 | merlin | 灰背隼 | 2002-02-13 |
| j2se 1.4.1 | grasshopper | 蚱蜢 | 2002-09-16 |
| j2se 1.4.2 | mantis | 螳螂 | 2003-06-26 |
| j2se 5.0 (1.5.0) | tiger | 老虎 | 2004-10 |
| j2se 6.0 (beta) | mustang | 野马 | 2006-04 |
从这个表中我们可以看出一个非常有意思的现象,就是jdk的每一个版本号都使用一个开发代号表示(就是表中的中文名)。而且从jdk1.2.2开始,主要版本(如1.3,1.4,5.0)都是以鸟类或哺乳动物来命名的. 而它们的bug修正版本(如1.2.2,1.3.1,1.4.2)都是以昆虫命名的。
六、java的未来10年
在2005年的java one开发者大会上,james gosling作了题为“java技术下一个10年贡献”的演讲。谈到未来java的发展时,james gosling提到了有关java软件的性能和复杂性问题。鉴于许多机器运行着大量进程的实际情况,人们对线程模型投以越来越多的关注。
随着人们对桌面应用的要求越来越高,系统将变得越来越复杂。他指出: “从工程的角度来看,未来10年内我们所面临的最大挑战就是复杂性问题,” james gosling说, “目前,我们开展了许多工作以解决应用编程接口、语言以及工具中所涉及的复杂性问题。在工具和用户界面(ui)中都会遇到复杂性问题,java技术设计人员必须处理好大小尺寸调整和国际化的问题。”
在这次大会上,james gosling还同java技术先驱,现任kleiner, perkins caulfield and byers合伙人的bill joy先生,sun公司首席科学家john gage先生,未来研究所主任paul saffo先生,sun杰出工程师guy steele先生以及applied mindes公司主席及首席技术官danny hillis先生等一起探讨了讨论java语言的过去和未来发展情况。
他们认为,java技术提高了计算的“流动性”,就如同货币的发明提高了商品的流动性一样。无所不在的网络丰富了每个人的信息,就如同可以兑换的货币产生了财富一样。由于从前的网络是很慢的,所以计算被束缚在特定的计算机上,而这种情况将一去不复返了。
目前,全球java开发人员已经超过450万,而与之相对应的是java社区充满活力和创新精神,这正是java下一个10年更加繁荣的保障。为了保持java的增长和推进java社区的参与, sun在java one开发者大会上宣布开放java核心源代码,以鼓励更多的人参与到社团活动中来,这是sun为推进社团发展和维护java技术兼容性而迈出的重要一步。
sun公司总裁兼首席运营官jonathan schwartz先生指出,来自java社团和ibm等全球技术合作伙伴两方面的支持,乃是java技术在创新和社会进步上继续发挥重要作用的强有力的标志。技术开放和社团建设降低了技术应用的壁垒,其结果是为参与和增长创造了更多的商机,这就形成了价值上千亿美元的java产业。
有很多人认为java开源后,在众多开发人员的参与之下,java会变得更加强大。随着java和it业界的关系变得更加紧密,sun公司也将更容易卖出自己兼容java良好的web服务器和操作系统。这个举动将会给软件开发群体带来新的活力,改善sun公司的公众形象,并同时证明sun可以成为一个开源社会的“良民”。
随着java的开源,java的未来似乎变得更加明朗。在未来,java的应用范围有可能变得更广。sun董事长麦克里尼在2006年的javaone会议上说,“全球有3/4的人还不能接入internet,这对java技术伙伴来说是一个巨大的经济机会。瘦客户机、微小的传感器以及其它java驱动的小装置,可以帮助我们改善人们的生活。他希望java社区通过他们的工作能够弥合数字鸿沟”。
sun认为,数字媒体将是java的下一个重点市场,同时,教育和健康将是未来java发展过程中的两大重点应用领域。但愿java的未来真能象sun宣称的那样,成为我们未来生活的一部分。
闽公网安备 35060202000074号