Java历史回顾
可以这么说:我的IT艺人生涯,是从Java开始的。
从1995年Java还在Beta阶段,我就看出Java的潜力,于是我放弃继续使用C++/MFC,率先进入Java阵营。我陆续翻译了几本Java的书,并在读清华大学研究所时,带领团队参加了台湾的 Java应用软件竞赛,得到冠军,这使得我受邀开 Java 专栏,并到许多单位讲授 Java。2001年的时候,《程序员》杂志开始发行,当时正值Java技术的高峰期,我也受邀开始在《程序员》杂志写Java专栏。
如今,Java已经14岁了。14年的时间可以让一个技术彻底改变。这14年来,Java也有了相当大的变化,完全不同于1995年的样子。这篇文章将带领大家领略这些年来Java的变迁。
【1995-1998】
在1995年之前,Java 还不叫作Java,应用定位主要是在家电或机顶盒(Set-Top Box)上。1995年开始以Java 之名释出,并将应用定位为 Web 客户端的技术。透过 Java,Sun 希望能让网页浏览器上面可以嵌入跨平台的应用(Java Applet),Sun甚至还一度开发了自己的Web浏览器HotJava。
由于大众对微软独大具有或多或少的排斥心理,加上 Java 营销策略的成功,Sun在1996年1月推出JDK 1.0之后,Java 便开始一飞冲天,迅速得到大多数操作系统的支持,大量的网页也开始采用Java Applet 技术。一年后,JDK 1.1推出,原本功能阳春的Java总算可以做许多重要的事情了(JDBC、RMI……)。
不久之后召开的JavaOne 技术会议,来自全球的与会者超过万人,成为当时空前的技术盛会。Java 成功地凝聚了所有反微软及爱好新技术的势力,JDC(Java DeveloperConnection)社群人数和JDK下载次数都创下当时的纪录。
微软意识到Java 的威胁,开始一连串动作,像是要支持Java,又像是要分裂 Java,推出 Visual J++ 及不兼容的框架,并开始和Sun 之间产生一些法律上的争议。
【1999-2000】
在众人的期盼下,Java 的野心越来越大。Java 开始意识到,计算机的世界很庞大,应该为不同的应用领域区分出不同版本的Java。随着1998年底推出新版本,Java 更名为Java2,并分成三个版本:J2EE、J2SE、J2ME。Java步入了转型期。
严格说来,J2SE的市场表现并不好,由于Java Applet的效率不好、Swing的 Bug 太多等因素,使得大家改用 JavaScript 和Macromedia Flash等技术(Macromedia后来被Adobe并购)。后来(差不多2004以后)由于 Ajax 和 Flash的热门,更是让 Java 在客户端几乎消失无踪。
幸好J2EE 开始得到大家的注意,Sun 推出一连串相关技术,首先是Servlet,接着是EJB,再接着JSP,还有许多外围的技术(例如JMS)。由于J2EE主要是用在企业,而企业一直是IT厂商眼中的肥肉,于是在服务器软硬件众多厂商的推广之下,J2EE 开始蓬勃发展起来了。一直到今天,J2EE 依然是大型企业、大型网站的首选技术。从这方面来看,J2EE确实是相当成功的。而现在Java 开发人力,也多半是在J2EE领域。
在J2EE应用服务器上,最赚钱的产品就属IBM的WebSphere与BEA的WebLogic 了。至于Sun,开发过自己的应用服务器,也买过别人的应用服务器当成自己的产品,但是都无法和 IBM 与WebLogic抗衡。这也相当诡异!
【2001-2002】
在这两年,Java 技术上似乎有一点停滞不前,真要说有什么进步,就是1.4版的 JVM的速度有显著的提升吧!但这两年应该是Java 最风光的时候。世界上对 Java 程序员的需求到达最高峰。到处都在招聘Java程序员。
J2EE好消息频传,应用在小型装置上的J2ME也颇有斩获,尤其是在手机上。2001时,手机第一大厂NOKIA宣布:到2003年将出售1亿部Java手机。从此以后,连一般不懂计算机不写程序的人,也都会在买手机的时候,听到销售员告诉你:“本手机支持Java游戏”。Java一词开始变得相当生活化。
将Java 技术用在服务器上虽然时尚,但是主流厂商的J2EE应用服务器价格,一般小公司却吃不消。于是一些免费、开放原始码的服务器(例如JBoss)开始受到中小型公司的喜爱。
免费风潮方兴未艾,IBM意识到要靠VisualAge 开发工具赚钱不容易,于是开放出来,成立免费的Eclipse平台,成为Sun NetBeans的竞争对手。这两个IDE曾经想要合并为一,但终究还是分道扬镳。免费的Java IDE让当时IDE主流厂商Borland受伤很重。
【2003-2004】
微软酝酿多年的.NET 技术终于在2002年推出了。多方面来看,当时的.NET 其实就是Java的改良版。微软也仿效Java,分别为.NET做出适合手机、PC、服务器的不同版本。
.NET的出现给Java带来了许多压力。两个阵营开始打口水战,从执行效率、语言血缘、出品公司…… 任何话题都可以比较,都可以吵。2003年时,网络上炮声隆隆,有一大半以上都瞄准 Java或.NET。从Java改用.NET的人,也一律被冠上“叛变”之名(我就是其中一个)。这场战火延伸之广,绝非 OS/2 vs. Windows 或MFC vs. OWL或MAC vs. PC所能比。
.NET 1.0确实从Java中学到许多,但是2004年9月发布的J2SE 1.5(JavaSE 5.0),可以看出Java 也从.NET中学到了一些,这就是竞争的好处。在Java当红的那几年,Java技术的进展相当缓慢,现在出现了竞争对手,总算刺激了Java开始进步。
.NET 是微软倾全公司之力在推广的技术,而 Java 则相当不同,主要依赖社区的力量。Java 社区力量强大,自主开发出许多好用的免费框架,并渐渐开始流行,其中以Struts、Spring、Hibernate最为人所熟知,有的着重数据库,有的着重Web,有的着重商业逻辑。许多人舍弃昂贵、复杂的J2EE,改用这些新型的框架。
Hibernate 是Java 程序和关系数据库之间的桥梁,负责Java 对象和关系数据库之间映像的ORM中间件。Struts 和Spring 都是目前Java WebMVC框架中比较流行的。
除了由社群自发做出来的框架开始流行之外,连IDE市场都起了相当大的变化。Eclipse到了2004年已经具有庞大的势力,而且也脱离IBM,更为独立。由于它采用开放架构,支持Eclipse的各种语言与工具也越来越多。
【2005-2006】
2005年6月,Sun 公司将Java2更名,拿掉数字2:J2EE 变成JavaEE,J2SE变成Java SE,J2ME变成Java ME。2006年12月, SUN 公司发布JRE 6.0。改名可以改运吗?显然Sun 公司是这么认为的,Sun 在2007年把股票代码改成JAVA,这在IT届可以算是头一遭。对于Sun 来说,Java的品牌价值已经超越Sun,所以它们才会把SUNW改成JAVA。
不可讳言,十多年的时间,让Java 略显老态,许多人因而尝试在Java平台上开发新语言。尤其是2005年开始这5年,其中的佼佼者是Scala和Groovy。许多人试图将各种既有的语言移植到Java平台,但之后证实,这些努力几乎都没有成功(也就是没有人真正在用),唯一比较成功的是Python 语言和Ruby 语言,即Jython和JRuby。
【2007-2009】
Java 曾经有过操作系统的梦想,例如JavaOS 和JOS,但是都没有好下场。2007年Google 推出Android用在手机上,2009年传言Android 即将从手机走进Netbook。某种程度上Android 可以被视为是对 Java 支持最好的操作系统。不过 Android 的开发虽然使用Java,但不是Sun标准的JavaSE/ME,这可让Sun开始担心了。
Java 官方于2008年底推出JavaFX来应对RIA时代的需求, 2008年底正式推出1.0版。我喜欢JavaFX,但目前在效率及工具上, JavaFX 不及格,完全无法和 Adobe Flash/AIR 及微软的Sliverlight/WPF竞争。
利用动态语言可以加快软件的开发速度,所以近几年相当流行。为了提供动态语言更好的支持,Java 已经开始了 Da Vinci Machine 计划,类似微软的DLR。我相信未来会有越来越多的动态语言出现在Java平台上。
除了对动态语言的支持,Java未来还会有什么变化呢?我们已听到 Java SE 7.0的脚步声越来越近,答案今年就会陆续揭晓了……█