1.4 Java简史

1.4 Java简史

本部分提供Java演变的简短历史。材料基于各种出版物(最重要的材料是SunWorld在线杂志在1995年7月的期刊中对Java创始人的采访)。
完整的故事要要追溯到1991年,那时的Sun公司,Patrick Naughton和James Gosling(Sun合伙人,也是计算机全才和天才)领导下的一群工程师想要设计一款小型的计算机语言,这种语言能被用于有线电视切换盒之类的消费电子设备。因为这些设备通常速度和内存容量都不高,所以这种语言必须体积小,且能生成精简的代码。另外,不同的厂商通常使用不同的CPU,这种语言还必须不与任何特殊架构相耦合。这个开发项目的代号为“Green”。
生成短小,紧致和不依赖特定平台的代码,这样的需求促使团队设计了一种可移植性语言,它能生成工作在虚拟机层次的中间代码。
团队成员具有UNIX背景,故他们选择基于C++而非Lisp,SmallTalk和Pascal来进行开发。但是,正如Gosling所言“无论如何,语言只是工具而非目的”。Gosling给他的语言取名“Oak”(或许因为Gosling喜欢Sun公司的办公室窗外那棵橡树oak)。Sun公司的人后来发现已经有一门编程语言叫Oak了,所以把名字改成Java,这真是个好主意。
1992年,Green项目推出了它的第一个产品。代号“*7”。这是个非常棒的智能远程遥控器。不过,Sun公司内部没有人愿意生产这个产品,团队需要另行寻找销路。然而,没有任何标准消费电子生产厂家感兴趣。当时有限电视服务如点播节目等开始兴起,团队竞标了一个能用来做这些服务的有线电视盒项目,也失败了。(神奇的是,竞标成功的公司正是创办网景的Jim Clark领导的公司,而网景公司对于Java的成功具有不可磨灭的功绩)
Green项目组(现在的名字改成了“First Person,Inc”)花了1993年一整年,还有1994年上半年推销自己的技术,最终也没能找到买家。(团队的创办人之一,后来主要负责市场的Patrick Naughton抱怨到他飞了300000英里推销自己的技术。)First Person在1994年解散了。
于此同时,Internet的万维网部分正方兴未艾。万维网的关键是浏览器,因为是它将超文本页面翻译成屏幕上的网页。在1994年,大多数人使用Mosaic浏览器,它是一个非商业软件,来源于伊利诺伊斯大学的超级计算机中心。(Mosaic软件的编写有一部分说Marc Andressen在大学勤工俭学的工作中完成的,当时的报酬是6.85美元每小时。Andressen后来名利双收,成为网景公司的创办者之一和技术主管)。
在SunWorld采访中,Gosling说到在1994年中期,Java开发者们意识到“我们可以写一个牛逼的浏览器,因为浏览器是客户端/服务器模式的东西,而我们已经完成的东西具有结构中立,实时性,可靠性,安全性等,这些特性被客户端/服务器模式所迫切需求,而在工作站模式却没有优势。所以我们就编写了一款浏览器。”
实际的浏览器由Patrick Naughton和Jonathan Payne编写,并发展成为HotJava浏览器,该浏览器被设计成可以显摆Java的强项。设计者让HotJava可以运行编写在网页文件内部的Java代码。这种“技术证明”在1995年5月23日 SunWorld’95上被展示,并引发了持续至今的Java热潮。
1996年,Sun发布了Java1.0。人们很快意识到Java 1.0并不适合严谨的程序开发。确实,你可以用1.0编写一个煞笔的文本applet来在画布上随便移动文本。不过你会发现你居然不能打印。实话实说,Java1.0并没有准备充足。它的更新版本,Java1.1,填了大部分比较明显的坑,大幅提升了反射能力,并为GUI编程添加了一个新的事件模型。不过Java 1.1仍然有局限。
1998年 JavaOne大会上最大的消息就是Java 1.2的发布,它用更优秀的JFC代替了早期版本中玩具版的GUI和图形工具包,向经典口号“一次编写,到处运行”迈进了一大步。1998年12月Java1.2发布后仅仅过了三天,Sun的市场部把Java 1.2改名为Java 2 SE SDK1.2。
除了标准版(SE),另有两个版本推出:ME适合移动电话等嵌入式设备,EE适合服务器端编程。本书集中讨论SE.
1.3和1.4是对1.2的渐进升级,增加了标准库,增强性能,和修复bug。在这段时间,Java applet和客户端编程已经不火了,Java成为服务器端编程的选择。
5.0版是从1.1版依赖修改最大的一次。(本来是叫1.5版,不过2004年JavaOne会议上改成了5.0)。经过多年的研究,泛型(相当于C++的模板)被添加进来——这个添加难就难在不用更改虚拟机。还从C#那偷来几招:“for each”循环,自动装箱,annotation注解)。
2006年底发布的版本6,语言方面没有更改,只有性能提升和库增强。
后来,数据中心专用服务器被商用硬件所代替,Sun公司举步维艰,在2009年被Oracle收购。Java的版本更新也在很长一段时间停了下来。知道2011年,Oracle发布了Java7,它只是简单增强了6的性能。
2014年,Java 8 发布,这是二十年来Java最重大的更新。Java8 包含“函数式”的编程风格,这种函数式方式能更容易地表示并行操作。每种编程语言要想站稳脚跟就要不断进化,在这方面Java是佼佼者。
表1.1 展示Java语言和库的进化,可以看到,API的数量增长了相当多。

版本年份语言特性类和接口的数量
1.01996语言本体211
1.11997内部类477
1.21998strictfp关键字1524
1.320001840
1.42002断言Assertion2723
5.02004泛型,“for each”循环,可变数量参数,自动装箱,元数据(注解),枚举,静态导入3279
620063793
72011String做比较的switch语句,钻石操作符,二进制字面值,异常处理增强4024
82014λ表达式,带默认方法的接口,stream库,日期/时间 库4240
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值