扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
自从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的未来将是一场血雨腥风!
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者