Fork me on GitHub

软居心不良欲通过支持Android打击Java

最近谷歌公司推出了其移动开发平台Android,并一手促成了开放手机联盟的建立。对于微软来说,这是一件值得庆祝的事情。据专家分析,对于微软来说,Android推出的意义堪与微软在上世纪90年代赢得浏览器之争相比。

  微软在开发领域最大对手:Sun的Java平台

  在软件开发行业,在过去12年中,微软最大的竞争对手非Sun公司的Java平台莫属。从上世纪90年代中后期开始,Sun就开始在各个开发领域让原属于微软阵营的开发者纷纷转投Java平台。据Sun公司统计数据表示,现在有超过600万在使用Java进行开发,很明显,Java平台在软件开发行业占据了统治地位。

  事实上,为了应对Java平台的挑战,在2000年微软就已经不得不全面修改其软件开发平台,即推出全新.NET平台对抗Java。尽管微软的.NET平台在一定程度上从Java手中收复了一部分失地,但是,Java依然是程序员们进行企业应用开发的首选平台,甚至可以说有史以来最成功的软件开发平台。微软当然不会太喜欢这个Java平台。因为Java是微软最大的竞争对手,是其要全力打击的目标。

  然而,Java平台和它的标准化过程也并非完美无缺。Sun公司和Java标准制定组织(Java Community Process,JCP)在决策上的一系列失误,让微软的.NET平台趁机取得了一定成功。定义Java标准的机构JCP已经使其企业开发平台Java EE变得过于复杂,同时Sun已经为它的移动开发创建了一个平台——Java ME,尽管它具有很大的突破,但是却四分五裂。但是,Java SE依然是一个非常强大的竞争对手,微软并没有从它身上赚多少便宜,不过,随着Google的Android移动开发平台的推出,这种情况将会发生改变。

  Android分裂Java阵营 微软.NET平台受益

  坦率的说,正如Android现在的定义所指出的,它是一个Java ME平台的分支。Android与Java ME非常相似,但是它是一个非一致性的实现。它既与Java ME不兼容,也与Java SE不兼容。事实上,它不是一个真正的Java实现。尽管它使用了Java编程语言,但是它的核心应用程序编程接口(API)和虚拟机是与Java ME或SE平台不兼容的,它是一个分支。这一点已经被Apache实验室的开发人员Stefano Mazzocchi在其博客中指出。

  那么Android对Java的这种分支作用和微软有什么关系?实际上它间接的减轻了Java平台对微软的压力,对微软来说是一个好消息,理由如下。

  首先,从市场的观点来说,Java平台最强大的地方在于其标准化和多厂商支持(例如IBM、甲骨文、SAP等等)的特点。相比之下,微软的.NET平台则通常被描述成一个专有平台,将厂商锁定在微软平台之上。这也是Java支持者十几年以来用于宣传Java的口号。

  但是,现在随着Android平台的引入,围绕在Java平台周围的这种团结性将面临挑战。对此,Sun也已经表达了它的担忧:Google的Android项目会造成数种互不兼容的Java版本。如果现在的Android平台取得成功的话,对于Java的兼容性实现是一个挑战。

  微软提供了它自己的一个优秀的移动平台——Windows Mobile和微软的.NET精简框架。的确,它是一个专有性平台,但是正因如此它也有自己的优点:具有很好的兼容性;而且对于开发富移动应用程序(RMA)来说是一个非常强大的平台。相比之下,Java ME是一个具有非常丰富功能的标准,而且也被很多厂商所支持,但是它在跨移动设备上的非兼容实现使得开发“一次编写,随处运行”的应用程序变得非常困难。如果Android移动平台成功的话,那么在移动设备上的Java对市场的掌控力将减弱。Android可能会成功,但是Java ME却会影响力变弱。如果我在WindowsMobile和.NETCF框架销售部门的话,我也会对Android的发布表示欢迎。这对微软的移动开发平台来说是一件好事情。

  Android对Java SE的影响

  如上所叙述,Android平台的推出将使Sun的Java移动平台受到影响。那么它是否会影响Java SE?有什么影响呢?或许有的人会说,毕竟Java SE被用于桌面和服务器端应用开发,它怎么会被一个移动平台所威胁?但是Android的确对Java SE有影响,这要从Sun公司对Java SE的未来定位说起。

  最近,Sun一直在致力于统一Java ME和Java SE平台。这一点从Java之父James Gosling的一段话中可以看出些许端倪:

  “我们正在尽力把所有事情汇聚到Java SE规范上。移动电话和机顶盒的应用正在增长,这种汇总可能需要花费数年的时间。”

  不要认为James Gosling的这句话仅仅是在谈论Sun去年初刚刚推出的JavaFX Mobile,它是针对整个Java SE平台的,而不是Java ME。简而言之,Sun公司没有把Java ME做大做强的打算,它们的宝押在了Java SE上。毕竟,Java ME是针对那些具有低内存和有限处理能力的“受限设备”而设计的。但是,随着技术的发展,这种情况将不再适用于移动设备。智能电话正在变得越来越强大,它开始具有更强大的处理能力和更大容量的内存。移动电话仅仅是一个简单设备的时代已经结束,移动电话正在朝着一个完整的计算平台发展。

  对于Sun公司来说,Java ME的逐步被淘汰和将Java SE扩展到移动平台的战略非常重要。因为这符合其对Java的最初定位。它将为所有计算设备创建一个单一平台。这对于实现跨计算平台的兼容性Java实现来说具有重大的意义。但是,不幸的是,Android的推出将使移动Java社区分裂成Java ME和Android两个不同的阵营。

  随着Java ME作为一个移动开发的标准平台的逐渐推出,Java SE将取代它的位置,一个支持所有计算设备的兼容性平台将变得更加重要。Java SE将成为一个支持移动开发、桌面开发和服务器端开发的标准。企业开发人员在桌面和服务器端编程中的经验将直接可以应用到移动平台中。

  不幸的是,Android的推出正在阻碍这一美好前景的发生。它告诉业界,Java不支持兼容跨计算平台。

  Java今天最强大的地方在于其一致性和普及性。如果没有了一致性,你将面临多种不同的Java版本,因此也就没有了真正的普及性。没有了普及性,就几乎很少有什么突出的特点让人们选择它而不选择.NET平台。实际上,微软的.NET开始更具有吸引力,因为它可以被始终如一的实现。Java今天所具有的最大的市场财产——“一次编写,处处运行”的标准化——也将丧失殆尽,而这对微软来说当然值得庆祝的事情。

posted @ 2008-01-08 20:37  张善友  阅读(685)  评论(0编辑  收藏  举报