主要关于JavaFX、Android和J2ME关系解析 在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虚拟机。 |