Java之旅
Record my Java-learning progress.
posts - 1,comments - 17,trackbacks - 0
Java从它的诞生到现在已经11年了。在这11年里,有无数的企业、组织和个人为Java贡献过自己的力量。这就象梁山一百单八将要按着自己的贡献和威望排名一样,谁为Java所做的工作越多,谁就对Java的未来发展方向越有发言权。

  自从Java成为国际标准后,支持它的企业也随着Java的成熟逐渐多了起来。

  当然,人一多,就会带来另一个问题,谁说了算!作为Java的始作俑者Sun一直想将Java标准据为已有,而IBM凭着它在世界的影响对Java也是虎视眈眈。俗话说得好,三流的公司卖产品、二流的公司卖服务、一流的公司卖标准。当然,如果想做世界第一的IT企业,那就得标准、服务和产品一起卖。因此,以Sun、IBM为首的利益集团围绕着Java以及相关标准明争暗斗了11年,在这11年里,Java标准几度风雨、几度春秋。随着Java的全面开源,Java标准又面临着前所未有的挑战,未来的Java还会象它宣称的那样,一处编译、到处运行吗?到底谁能主导未来的Java呢?

  Java刚一诞生就成待宰羔羊

  在1995年,Sun正式公布了Java,并且发布了JDK1.0。Java在外形上酷似C++,但它却有一颗形如Smalltalk般纯洁的面向对象之心。正因为如此,Java几乎在一夜之前就香浓世界,成为软件行业的新宠。虽然Java刚开始只是通过Applet为网站做一些动态的效果,但它的杀手锏,“一次编译、到处运行”使Java迅速成为各大企业及众多开发人员竞相追捧的对象。

  正是因为Java的流行使众多有实力的企业垂涎三尺。一开始,Java的JVM是由Sun单独开发的。而在当时,开发工具的老大Borland却蠢蠢欲动。由于Borland以开发语言编译器著称,因此,在Java的早期,除了Sun的JVM,比较著名的还有Borland JVM。

  这个世界上除了Sun,没有哪家公司象Borland一样和Java走得如此之近。在Java的早期,Borland几乎参与了Java的各种层次的设计,如JVM、JDK以及开发工具。甚至Sun和Borland曾经进行了一场关于JVM的军备竞赛。当初Sun设计一个JVM版本,Borland也跟着设计一个更快的JVM版本。就这样持续了有几个月时间。Borland负责这方面事务的就是Anders Hejlsberg,他的第一个成名作就是Delphi,因此,他也被称为Delphi之父。说起Anders Hejlsberg,也许大家不太熟悉,但要是提起C#之父,也许大家会很熟悉,对,他也是Anders Hejlsberg(在1996被微软用年薪300万美元、加盟奖金以及一个开发团队从Borland挖去的),因此,Anders Hejlsberg同时被称为Delphi / C#之父。这位天才以汇编语言编写了Borland JVM,从某种程度上,Borland JVM的效率要比Sun JVM高一些(如果你用过Visual J++就知道了)。但由于Borland后来专注于Java开发工具(JBuilder)的开发而放弃了和Sun的JVM争夺。

  在Sun和Borland的JVM争夺战结束后,真是树欲静而风不止。自从Anders Hejlsberg到了微软后,立刻被比尔.盖茨派去负责微软的Java开发工具Visual J++的开发,至此,又要上演一场龙争虎斗。大家都知道,微软和Sun一直因为Java而互相攻击。但一开始,比尔. 盖茨是非常喜欢Java的,他曾经称赞Java是“到现在为止世界上最好的开发语言”,微软也很早就购买了Java许可证。但微软作为软件公司的老大,看到别人的孩子茁壮成长,自已心里却暗生嫉恨。于是在它自己的Visual J++中搞起了小动作。使用Visual J++开发Windows程序就象是享受一杯美酒。但Visual J++却破坏了Java的跨平台特性。微软和Sun也因此打了长达7年的官司,最后这场官司以喜剧收场。微软和Sun达到协议,微软停止Visual J++的开发,而双方都将为使用对方的专利付费。同时Visual J++也无疾而终(要不是这场官司,恐怕现在很多程序员还在使用Visual J++呢!)。在2004年,微软和Sun最终以16亿美元结束了十多年恩怨。这也正应了一句话“没有永远的朋友、也没有永远的敌人,只有永恒的利益”。

  在Sun、Borland、微软之间围绕着Java的争斗最终以Sun重新获得Java的控制权而结束。但新的争斗又将开始。

  Java标准成为众豪强竞相追逐的“梅花鹿”

  在经过数年的争斗后,Sun终于可以暂时控制JVM和JDK了,现在这两种技术也趋于一致了,但JVM和JDK只是Java体系的冰山一角。而对Java影响最大的莫过于众多的JSRs(Java Specification Requests)。

  当Sun和Borland、微软的争斗告一段落后,Sun本以为可以高枕无忧了,但Sun却打错了算盘。在这之后,Sun受到的第一次挑逗就是IBM的Eclipse。在2001年,IBM设计了自己的Java开发工具Eclipse,这本来没什么,但Eclipse却与Borland的JBuilder有着本质的不同。JBuilder是百分之百基于Java的,而Eclipse虽然是Java开发工具,但它的图形接口既不是AWT,也不是SWING,而是IBM自己开发的SWT。SWT虽然速度快,但它却是独立于JDK之外的,也就说,它并不同JDK一起发布。因此,在程序发布时,必须带是SWT的运行库才可以。IBM官方称Eclipse的推出是为取代Sun的NetBeans,但稍微动一下脑子就不难看出,IBM的真正目的并不是NetBeans,而是想逐步取代Sun的JDK的部分,甚至全部。IBM推出SWT的目的就是想让开发人员除了标准的AWT和SWING外,还有另外一种选择,那就是SWT。也就是说,IBM想先通过JDK的图形库来分裂JDK,从而达到自己控制JDK的目的。

  而另Sun尴尬的是IBM的举动并没有触犯什么法律或规约,SWT只是一个基于Java的类库而已。Sun更本无法向当年起诉微软一样来起诉IBM。IBM的初次挑衅取得了意想不到的收获。这下IBM更加得寸进尺了。

  由于和Java相关的规范都是由JCP来管理的。每当提交一个新规范,必须由JCP的成员投票表决才能通过。因此,JCP就相当于Java世界的联合国。它和现实中的联合国是一样的,谁控制了联合国,谁就能充当世界警察,为所欲为。而JCP成员中最强大的当然是IBM了。一开始,IBM还是很规矩的,但后来,IBM发现,JCP一直都是由Sun来主导,而Sun的产品也是最早支持JCP标准的,如当JCP推出新的J2EE标准后,Sun的AppServer在半个月后就宣布支持新标准了。

  这种结果是IBM所不能允许的,因为,在J2EE市场,IBM和Sun是竞争对手。这样,Sun的AppServer就永远领先IBM的WebSphere了。因此,IBM就想绕过JCP,自己确定新的标准。可能是因为IBM感觉自己势单力孤,最后把BEA也拉了进来。IBM和BEA都是J2EE市场的绞绞者,他们的市场份额之和超过了66%。

  无论是微软,还是IBM。他们的强大都足以在一个领域中推行新的规范。IBM也正是看中了这一点,因此,在最近IBM和BEA提交的几个规范(如JSRs235,236和237)并没有长长支持列表。而其它的规范都有很长的支持列表。这充分说明了IBM和BEA打算绕过JCP而单独推出规范,而这些规范并未得到JCP大多数成员的支持。

  如果说提交JSR规范只是小打小闹,那么IBM联合BEA发布的SDO(Service Data Object)规范将是一次大动作。在发布SDO的同时,IBM又向Apache基金会捐献一个支持SDO标准的Tuscany项目。这次发布并没有安排Sun、JBoss等Java中间件提供商参与。尽管SDO最终因进展缓慢而失败,但这将是以IBM为首的利益集团分裂JCP的开始。在SDO失败后不久、IBM和BEA又联手推出了SOA标准。这个标准除了IBM和BEA,并没有其它的SOA标准制定者。IBM和BEA制定SOA的目的就是想彻底绕过JCP而成为Java EE的事实标准。不管其他人如何评价IBM和BEA的这次联合,我相信Java标准已经开始分裂。而在业界举足轻重的企业,如IBM、BEA、Oracle、JBoss,甚至是微软,都会围绕着Java标准展开一场殊死搏斗。也许Java EE的未来将是一场血雨腥风!

  Sun的回马枪:以GPL协议开源的Java

  IBM这个城府极深的家伙总在不断地算计别人。就在Sun和微软最终和解的2004年,IBM又不遗余力地“劝说”Sun将Java开源。而当时Sun还是站在开源的对立面。面对IBM给自己的一封公开信,Sun总裁麦克利表现出了极大的反弹,并公开表达了对这封信的反感和对开放的排斥。有趣的是,在两年之后,Sun的态度发生了180度的逆转,不仅将Java开源,而且是在GPL协议下开的源。GPL在开源协议中是最接近自由的协议,这下可给IBM一个措手不及。

  在Sun公布这一消息之后,英特尔、RedHat都对此表示高度的赞许,而IBM的态度却让人捉摸不透。除了一份声明外,并没有其它的任何反应。

  其实Sun这次开源也算是破罐子破摔了。在Java诞生的11年里,Java为Sun赢得了无数的声誉,但Java对于Sun来说就是叫好不叫座。而恰恰相反,Java却成就了BEA、JBoss、IBM等公司。可Sun除了为Java而付出的大量开发和维护费用外,几乎没得到没么好处。而这次开源,Sun干脆将Java开源到底,直接选用了最开放的GPL协议,反正Sun也没从Java得到什么,当然,也不怕失去什么。Sun的这个举动是几乎所有人都始料未及的。而最受刺激的就是IBM。在开源的当天,IBM发表声明建议Sun还是以Apache协议来开源Java。这说明,Sun这一举动给了IBM一个回马枪、打得IBM错不及防。

  IBM一开始想让Sun在Apache等限制比较多的协议下开源,然后凭着IBM的影响力来控制Java在未来的发展方向。而这下Sun将IBM的计划完全打乱了,一但以GPL开源,就意味着任何人都可能自由地修改Java的代码,而IBM将很难控制局面。

  Java的开源其实对于Sun是好处多多,起码它可以省下大笔的开发Java的费用,当然,还能赢得一个好名声。除此之外,还可以借助于开源社区的力量,对Java那臃肿的构架进行改进。Sun还发表声明说,在未来,还打算将Solaris、OpenOffice等软件以GPL协议进行开源。这将给Sun带来更大的发展机会。

  而IBM和其它的软件公司也正在试图寻找开源赢利模式。IBM几次想控制Java都未能完全如愿,现在Java也以GPL协议开源了,看来,IBM要想进一步地控制Java的可能性已经不大了。而Java的开源也有不利的一面,这将表现在可能出现其它的Java版本,到那时,可能会在一定程度上破坏Java的“一处编译、到处运行”的特性。

  总之,不管Java标准是分裂,还是统一,有一点永远不会变,那就是Java会一如既往地向前发展。但愿我们将来能看到一个崭新的Sun和Java。

posted on 2006-12-27 13:20 胡昆栄 阅读(1033) 评论(0)  编辑  收藏 所属分类: Java

只有注册用户登录后才能发表评论。


网站导航: