服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 核心技术 > 查看文档

java标准受到挑战 未来由谁主宰

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

  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。

扫描关注微信公众号