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

公司

2009-03-05 11:32

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 等等外强中干的对手决一雄雌。

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

登录,参与讨论前请先登录

评论在审核通过后将对所有人可见

正在加载中

移动互联网的围观者、起哄者、以及肇事者。

本篇来自栏目

解锁订阅模式,获得更多专属优质内容