技术开发 频道

囧 埃里森在JavaOne上的几处错误

  【IT168 分析评论】在2009JavaOne大会上,甲骨文总裁拉里 埃里森发表了鼓舞人心的演讲,表达了甲骨文未来对Java、JavaFX和移动开发市场的承诺。甲骨文能够看到Java平台在其整体战略中的重要性,这当然是一件好事情。但是,Nexaweb公司首席技术官Jeremy Chone认为,关于Java、JavaFX和Android之间的关系,甲骨文这个未来的Java所有者还存在很多误解,例如埃里森提到Android设备基于Java,以及施瓦茨所说的数十亿手机用户属于Java社区,以及对Java与JavaFX关系的误解。以下是其中一些澄清。

  图:拉里·埃里森在JavaOne大会演讲

  1、JavaFX不是Java

  很明显,从营销的角度来讲,JavaFX被打上Java品牌的烙印;但是从技术上讲,JavaFX本身是一个语言,它被编译成Java字节码并运行在Java虚拟机上。JavaFX与Groovy或JRuby类似,只是去除了动态部分。举例来说,从Java中检查一个JavaFX对象需要一些技巧,因为JavaFX对象/类的定义不能与Java对象/类直接对应。(注:Sun一直在试图把JavaFX打造成一个不仅仅是语言的平台,但是迄今为止多数开发者依然把JavaFX看作一个语言)

  2、JavaFX不是一个脚本语言

  尽管人们称其为JavaFX Script,但JavaFX不是一个脚本语言。JavaFX代码在设计时被编译成Java字节码。因此,JavaFX与Flex类似(XML-UI部分除外)。需要指出的是,JavaFX最初在Sun实验室中是作为一个脚本语言来出现的,但是它随后迅速变成一个编译语言(或许是因为性能原因)。Sun一直使用“JavaFX Script”术语来将语言从JavaFX品牌中区分出来,并尽量避免使用“language(语言)”一词,这无疑清楚的说明JavaFX完全是另一种类型的语言。

  3、Android并非基于Java

  这是拉里的主题演讲中又一个令人困惑之处。

Ellison's parting words of wisdom: "I'm reading a lot in the newspaper about devices based on Java that are  Android devices. That is very exciting."

  有人可能相信Android是基于Java的,因此它可以运行Java。但是,Android并不是基于Java的;而是基于Linux的。Google Android SDK可以交叉编译Java代码为Android本身字节码(类似于编译Java代码到JavaScript/AJAX的GWT)。因此虽然开发者使用Java编写代码,但是该平台并不直接运行Java。尽管一个Android手机能够拥有Java虚拟机,一个使用Android SDK创建的应用软件在该设备上执行时却不是直接运行在Java上。顺便提一句,我至今未在我的谷歌手机上发现Java虚拟机。

  4、没有Java虚拟机,JavaFX不能运行在Android上

  我希望有人能通过一个例子来证明这个观点是错误的。我曾经与我的朋友讨论过关于让JavaFX在Android运行这个问题。简而言之,在Android上使用JavaFX唯一实用的方式就是在Android上运行一个Java虚拟机。Android的交叉编译特点将非常复杂的扩展到JavaFX。如上所述,JavaFX不仅仅是一个库,而是一个完全不同的被编译成Java字节码的语言。因此,Android编译器将不得不进行大量的工作来将一个Java/JavaFX应用程序移动到一个非Java虚拟机上。这并非不可能,但是却很难。因此,简单重申一下,你可以在Android上运行JavaFX,但是你需要一个Java虚拟机

  5、并非绝大多数设备都支持Java

  Sun喜欢自称Java已经在数十亿设备上使用。尽管单纯从数学角度讲着可能是真的,但实际上并没有这么多的开发者真正关注移动Java。现在到处是iPhone、Android、Plam Pre和移动Web。这些大名鼎鼎的手机多数并不默认支持Java,安装一个Java运行时环境可能是一件比较麻烦的事情。举例来说,以下手机就没有确定的Java虚拟机支持:iPhone、Android G2/HTC-Magic和Treo 750 WinMobile(至少我在自己老版本的Tre 750 WinMobile上没有发现它)。而J2ME市场相当分散。当你在手机开发一个Java应用时,很难测量它究竟可以用在哪些手机上。具有讽刺意味的是,由于JavaFX需要运行最近、最庞大的Java虚拟机,它甚至不能运行在众多J2ME设备上。(对此持不同观点的朋友可能会说诺基亚和多数索爱手机都支持Java)

  作为一个软件架构师/企业家,我的确喜欢使用Java,但是我讨厌夸大事实。我非常希望Java和JavaFX能够在移动和PC市场上都取得成功,但是作为一个社区,如果希望达到目标,我们需要客观的认清当前的实际情况。在这一方面我同意斯科特的观点:如果拉里设法说服苹果总裁乔布斯让iPhone支持Java,它肯定将是一个游戏改变者(然而,这可能有悖苹果的“围墙”策略。)

  原文地址:http://openwebdeveloper.sys-con.com/node/994363

 

0
相关文章