• 媒体品牌
    爱范儿
    关注明日产品的数字潮牌
    APPSO
    先进工具,先知先行,AIGC 的灵感指南
    董车会
    造车新时代,明日出行家
    玩物志
    探索城市新生活方式,做你的明日生活指南
  • 知晓云
  • 制糖工厂
    扫描小程序码,了解更多

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

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

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

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

正在加载中

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

本篇来自栏目

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