- 浏览: 536479 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
July01:
推荐用StratoIO打印控件,支持网页、URL、图片、PD、 ...
总结JS打印方法 -
aswift:
标题struts不是strust
Strust组件—ActionServlet详解 -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
总结JS打印方法 -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
总结JS打印方法 -
zi_wu_xian:
POI操作Excel文档过于复杂了,还是用PageOffice ...
POI操作Excel文档-基础篇
阅读提示:从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博士
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 <chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False"></chsdate>1.1.4 |
Sparkler |
宝石 |
<chsdate w:st="on" year="1997" month="9" day="12" islunardate="False" isrocdate="False"></chsdate>1997-09-12 |
JDK <chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False"></chsdate>1.1.5 |
Pumpkin |
南瓜 |
<chsdate w:st="on" year="1997" month="12" day="13" islunardate="False" isrocdate="False"></chsdate>1997-12-13 |
JDK <chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False"></chsdate>1.1.6 |
Abigail |
阿比盖尔--女子名 |
<chsdate w:st="on" year="1998" month="4" day="24" islunardate="False" isrocdate="False"></chsdate>1998-04-24 |
JDK <chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False"></chsdate>1.1.7 |
Brutus |
布鲁图--古罗马政治家和将军 |
<chsdate w:st="on" year="1998" month="9" day="28" islunardate="False" isrocdate="False"></chsdate>1998-09-28 |
JDK <chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False"></chsdate>1.1.8 |
<city w:st="on"></city> <place w:st="on"></place> Chelsea |
切尔西--城市名 |
<chsdate w:st="on" year="1999" month="4" day="8" islunardate="False" isrocdate="False"></chsdate>1999-04-08 |
J2SE 1.2 |
Playground |
运动场 |
<chsdate w:st="on" year="1998" month="12" day="4" islunardate="False" isrocdate="False"></chsdate>1998-12-04 |
J2SE <chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False"></chsdate>1.2.1 |
none |
无 |
<chsdate w:st="on" year="1999" month="3" day="30" islunardate="False" isrocdate="False"></chsdate>1999-03-30 |
J2SE <chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False"></chsdate>1.2.2 |
Cricket |
蟋蟀 |
<chsdate w:st="on" year="1999" month="7" day="8" islunardate="False" isrocdate="False"></chsdate>1999-07-08 |
J2SE 1.3 |
Kestrel |
美洲红隼 |
<chsdate w:st="on" year="2000" month="5" day="8" islunardate="False" isrocdate="False"></chsdate>2000-05-08 |
J2SE <chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False"></chsdate>1.3.1 |
Ladybird |
瓢虫 |
<chsdate w:st="on" year="2001" month="5" day="17" islunardate="False" isrocdate="False"></chsdate>2001-05-17 |
J2SE <chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False"></chsdate>1.4.0 |
Merlin |
灰背隼 |
<chsdate w:st="on" year="2002" month="2" day="13" islunardate="False" isrocdate="False"></chsdate>2002-02-13 |
J2SE <chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False"></chsdate>1.4.1 |
grasshopper |
蚱蜢 |
<chsdate w:st="on" year="2002" month="9" day="16" islunardate="False" isrocdate="False"></chsdate>2002-09-16 |
J2SE <chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False"></chsdate>1.4.2 |
Mantis |
螳螂 |
<chsdate w:st="on" year="2003" month="6" day="26" islunardate="False" isrocdate="False"></chsdate>2003-06-26 |
J2SE 5.0 (<chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False"></chsdate>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宣称的那样,成为我们未来生活的一部分。
发表评论
-
(转)TransactionSynchronizationManager理解
2008-04-09 10:54 5806http://blog.sina.com.cn/s/blog_ ... -
(转)程序语言概述
2007-09-07 16:26 1371介绍程序语言分类的,可以在总体上有个了解。 程序语言可分为5类 ... -
(转)从Coding Fan到真正的技术专家
2007-09-05 15:44 1811中国有很多小朋友,他 ... -
(转)在Java开源王国中自由翱翔
2007-09-05 15:07 1221如今的Java领域,各种新 ... -
(转)JavaScript高级程序设计---第1章: 历史简述
2007-08-28 20:23 2052当JavaScript在1995年首次出现时,它的 ... -
(转)关于抽象类和接口的两篇不错文章
2007-08-27 11:42 1417一.抽象类与接口的区别 转自[url] http://www ... -
(转自Ajax中国)Ajax并不神秘
2007-08-23 09:08 1496看过此文章,觉得的确是讲的非常好,此种思路清晰,讲解透彻的文章 ... -
(转)关于Java栈与堆的思考
2007-07-20 09:58 1189原文:http://blog.csdn.net/z ...
相关推荐
通过上述内容的详细阐述,我们可以看出,这个简单的图书管理系统不仅涵盖了Java程序设计的核心知识点,还涉及到了数据库设计、系统架构等多个方面,对学生全面掌握Java开发技能具有重要的实践意义。
《2009年程序员杂志第十一期》是IT领域的一份重要文献,它记录了当年编程界的重要事件、技术趋势以及对未来的展望。这期杂志涵盖了多个与软件开发、编程语言、系统设计、项目管理等相关的话题,对于理解当时IT行业的...
描述中提到的是一个IT牛人回顾过去十年程序员生涯的心得体会,并对未来的展望。这可能涵盖了编程技巧的提升、行业发展趋势的洞察、职业生涯规划、项目管理经验、团队协作的重要性、个人技能的迭代更新等多个方面。 ...
### GIS技术发展与IT技术的关系 #### 背景与趋势 随着信息技术的快速发展,地理信息系统(GIS)作为一项依赖于IT技术的重要分支,也在不断地进行自我革新和发展。据业内专家的观点,GIS技术通常落后于IT技术大约5到...
- **认证机制**:用户身份验证的方法与技术。 以上是基于“成都信息工程大学808-计算机基础2021年考研专业课初试大纲”中所涵盖的主要知识点的详细解析,希望能帮助考生全面理解和掌握相关知识。
该精选集涵盖了算法、机器学习、大数据、数据库、中间件、运维、安全、移动开发等多个热门技术领域,并收录了十多位阿里巴巴技术专家的访谈记录。 #### 技术篇 1. **深度解读|阿里云新一代关系型数据库PolarDB** ...
7. 未来展望:回顾过去的四十年,我们可以看到计算机科学的飞速发展。随着新的图灵奖得主不断涌现,未来的计算机科学将继续探索新的边界,如量子计算、神经网络优化、区块链技术等,为人类社会带来更多的变革。 ...
壮大期(2004年至2007年),智能手机的出现和JAVA技术的应用使手机游戏迈向成熟;增长期(2008年至今),手机游戏市场快速增长,移植现有在线游戏和第三方支付平台的兴起,为行业发展注入了新的活力。 在手机游戏...
Python数据分析自2008年以来,经过了十余年的历程,其中重要的里程碑是pandas库的诞生和发展。pandas自2009年12月首个开源版本发布,即pandas 0.1版本,到2020年1月发布的第26个主要版本pandas 1.0,见证了一千余名...
### Python3基础教程概览与核心知识点解析 #### 一、Python简介 - **定义**:Python 是一种广泛使用的高级...- **回顾与展望**:总结学习成果,规划未来发展。 - **Python 学习路线**:从基础到高级的学习路径建议。
总结,Google-产品服务全集(2010-06-14)反映了Google在十年前的多元化布局,这些产品和服务不仅奠定了Google在互联网行业的领导地位,也为用户提供了丰富多样的在线体验。而随着技术的进步,Google的产品和服务也...