# 新时代新潮流WebOS 【4】Java逐鹿中原

- 作者：邓侃
- 发布时间：2009-03-05 11:32
- 分类：公司
- 原文：https://www.ifanr.com/16930

[![File](https://s3.ifanr.com/wp-content/uploads/2010/08/File_thumb.gif "File")](https://s3.ifanr.com/wp-content/uploads/2010/08/File.gif)

Figure 1. Java Virtual Machine  
Courtesy http://www.javacoffeebreak.com/articles/inside\_java/dec99figuretwo.gif

为什么Android需要Dalvik？

猛一看，这个问题似乎很幼稚。回想1990年代初，Sun Microsystems的CEO，Scott McNealy给James Gosling布置一个奇怪的任务，“Give me something cool”。1995年，James Gosling完成任务，他的作品是Java。当人们问他，与C/C++相比，Java的优势在哪里？他的回答很简介，“write once，run anywhere”，也就是说，Java的号召力在于跨平台，如图一所示。

很多人认为，既然Dalvik也是一个虚拟机，那么它的号召力也在于跨平台。

不要忘记，Android的Kernel是Linux，不支持Windows和其它OS。所以，Android Dalvik的任务并不是支持跨平台。再加上Android统一了Linux Kernel和MiddleWare的APIs，所以从使用者角度讲，即便他们的开发语言是C++，也不会有不同版本和APIs的困扰。

既然不存在跨平台和跨版本的需求，Dalvik存在的理由是什么呢？

1995年Java横空出世，最初的号召力在于跨平台。但是程序员们很快发现，Java语言使用起来非常方便，体现在安装方便，Java语法简单明了，Javadoc查找快捷。于是很多原先是C/C++的程序员纷纷开始使用Java。程序员多了，用Java开发的应用程序随之迅速繁荣。应用程序多了，反过来有促进更多的程序员使用Java。

Java成功的秘诀是什么？有人戏言，是Java tutorial和javadoc写得好。戏言归戏言，但是上手快，容易用，的确是Java的魅力。21世纪什么最宝贵？人才！对于计算机语言而言，谁能吸引更多的程序员，谁就能拥有更多更好的应用程序，谁拥有更多更好的应用程序，谁就能赢得更大的市场，谁能赢得更大的市场，谁就更有可能成为最终胜出的王者。

Android为什么投入巨大人力物力去研究开发Dalvik？因为Android需要一种形式上与Java非常相似的语言，去吸引更多的程序员。

为什么Dalvik不遵循Java规范，不参与Java Community Process（JCP）？

作为虚拟机，Dalvik的实现方式与JVM不同，所以从法律上来说，Dalvik没有义务服从Java规范。Dalvik延用了Java的语法规则，但是 Sun Microsystems没有为Java的语法规则申请专利，所以，Sun Microsystems即便有强制Dalvik服从Java规范的愿望，也没有法理上说得通的理由。

Sun Microsystems控制不住Android，要不要参加自然由Google自己作主。问题是，为什么Google不主动参与Java Community Process （JCP)，借这个渠道力推Dalvik成为下一代JVM的标准，从而扩大Android的市场份额呢？

最可靠的答案，估计只有Google高管才知道。坊间的说法有两个版本，1. Google难得理会JCP拖沓扯皮的民主协商。2. Google推广Android的战略不同于Sun Microsystems推广Java的战略。下面详细解说第二个版本。

比较老蒋和老毛，撇开政治理想不谈，两个人都想统一中国，但是战略不同。1920年代，老蒋正式登上政治舞台时，中国当时的局面是军阀混战，势均力敌。老蒋的战略是拉一派打一派，合纵连横，通过权谋先实现名义上的统一，然后徐而图之，通过各种手段逐个打击异己，壮大嫡系，期望最后达成真真正正意义上的统一。而老毛的战略是从建立根据地入手，搞武装割据，然后寻找机会扩大根据地，最后农村包围城市，打过长江去，解放全中国。

Sun Microsystems力求尽快推广Java，所以以它为盟主，设立了JCP这个机制，通过各方妥协，制订出行业标准。一方面借JCP推广Java和 JVM，另一方面，Sun Microsystems私底下的小算盘是，鉴于自己在OS方面，尤其是虚拟机方面的技术优势，在JCP这个貌似各方平等的委员会，自己可以掌控更大的话语权，从而保障自己的利益。

而Google呢？凭借Android的技术优势，凭借把整个Android源代码统统公开的骑士风范，通过 Open Handset Alliance（OHA）争取更多手机制造厂商，采用Android作为它们手机的OS。同时，借助Dalvik，吸引广大的Java程序员，为这些手机开发更多的应用程序，从而促成手机制造商和应用开发商双赢的局面。一旦这个双赢的局面成为现实，就会有更多的手机制造商，和Java程序员入盟。最后，与Symbian等等外强中干的对手决一雄雌。

比较这两种策略，谁能最终一统江山呢？老蒋名言，“是非审之于己，毁誉听之于人，得失安之于数”，所谓“数”就是天命。
