Sun宣布决定将移动版Java逐渐转向Java标准版已经有些时日了,然而开发者对此的争论仍未平息。Java开发者力守寸土,绝不愿意看到Java任何一个分支的流失,即使Sun表示这只是一种整合;而又有开发者高呼“JavaME死了”云云……惹得Java之父Gosling不得不出面大喝:“JavaME没有死!”
CSDN专家、现任某公司系统分析师、拥有多年Java开发经验的沈东良认同Gosling的观点。他认为JavaME在相当长时间内不会灭亡,在移动设备市场上JavaSE和JavaME将长期并存。
JavaME仍不可或缺
这是因为JavaME是一种以广泛的消费性产品为目标的高度优化的 Java 运行时环境,可用于寻呼机、移动电话、可视电话、数字机顶盒和汽车导航系统等设备。JavaME版本是为了适应移动设备计算资源少的硬件情况而推出的JavaSE的简化版。JavaME版本为了更少得占用资源,对JRE和Java类库都进行了瘦身。
而且JavaME是一系列功能的集合:基本核心之上是层层的可选层。每层由“Java规范请求”(JSR)来定义。具有不同计算能力的移动设备,可以根据需要分别使用CLDC和CDC进行开发。这使Java程序能够运行在大量计算资源各异的移动设备上。
但随着移动设备硬件技术的飞速发展,一些移动设备的计算能力已经可以媲美两三年前的PC了,具备了直接运行JavaSE的条件。因此未来在移动市场上,随着高端移动设备的流行,JavaSE将会逐步扩大市场份额。“但是,我们也应该看到,移动设备的种类十分繁多,不可能所有移动设备都有iPhone这样强大的计算能力。因此,在那些计算能力较弱的设备上JavaME依然是不二选择。”沈东良说。
在你看来,Sun转向Java标准版除了解决Java移动版分散性的问题外,还会给Java带来哪些好处?开发者从中受益了吗?
JavaFX的角色
那么JavaFX将在其中扮演怎样的角色呢?
JavaFX脚本语言是Sun公司进军桌面开发市场的重要产品。JavaFX不仅仅要在网页中容身于Applet中,也要开发PC上的桌面程序,还要依靠这次Sun把JavaSE推广到高端移动设备上的机会,在高档手机上开发桌面程序。
“我认为JavaFX在移动设备市场上,可能只在JavaFX Mobile系统上实现,未必会在JavaME上实现。”沈东良说。
这是因为JavaFX Mobile系统包括了几乎全部JavaSE的内容。可以直接把JavaSE上的JavaFX脚本语言移植到JavaFX Mobile上,用于高档手机的桌面程序开发。
Sun公司把JavaSE带到移动设备中,就是依靠在移动设备上推行JavaFX Mobile系统。而JavaME系统没有完整的Swing和2D类库,如果在其上实现JavaFX脚本语言,那么它使用的类库也必然需要精简。这样,JavaFX程序就不能不加修改地直接应用到移动设备上。
需要注意的是,JavaFX Mobile系统和JavaFX脚本语言其实没有任何关系;JavaFX脚本语言是一个基于Java的脚本语言,用于简化开发Java桌面程序;JavaFX Mobile系统是SUN公司在高端移动设备上提供的一整套Java运行系统。它使用的是JavaSE而不是JavaME运行环境。在其之上当然也支持JavaFX脚本语言。
观望JavaFX
JavaFX是在Java脚本引擎上催生的一种静态类型的脚本语言。它和JRuby,JPython, Groovy,BeanShell等Java平台上的脚本语言一样,实现起来并不复杂。JavaFX是一种全新的语言,可以简化Swing程序和Java2D程序的开发,虽然它的目的是为了简化GUI的开发,但它也一样可以调用所有的Java类,开发一般的Java程序。
在沈东良看来,JavaFX是SUN公司为了应对WPF/Silverlight、AIR/Flash的竞争而推出的一种专注于用户界面开发的领域语言。这是一个有益的尝试,但谈不上有多么复杂的软件开发的工作量。
“但是,对于JavaFX这种语言,我的看法是不用急着跟进,先看看它有没有生命力再说!”他说。接着沈东良做了解释:
首先,JavaFX的作用,就是使用JavaFX脚本编写GUI程序,而不是使用Java代码编写。但是,既然我直接使用Java编写的程序也一样能够达到JavaFX脚本的效果,而且对我来说并没有增加多少复杂性。那么,我又何必费心思学习JavaFX呢?
其次,JavaFX作为一种专注于GUI开发的领域语言,只能用在GUI设计时。而对于程序来说,花在GUI开发上的时间是很少的。程序最重要的还是后台业务逻辑的开发。因此,JavaFX对于Java程序员来说,没有能够节省多少时间,意义不大。
再次,JavaFX只为界面而生,未免太过狭隘。而且JavaFX的实现OpenJFX到目前为止,仅仅开发到0.2版,还太过简陋。现在就投资,为时过早。
“不过,JavaFX可以简化Swing程序的开发。这可以使Swing和Applet在和其他RIA技术竞争时增加一些砝码。”沈东良说。
Java疆土将扩大
毫无疑问,转向JavaSE可以很好地解决存在于JavaME中的一个老问题即分散性。这意味着在移动设备硬件技术飞速发展的前提下,JavaSE可以直接运行在一些高端移动设备上,大量Java程序不经修改就能直接运行在手机等移动设备上。
“届时手机将具备同笔记本电脑一样强大的功能。Java的疆土得以迅速扩大,作为Java开发者,可以从扩大了的Java市场中得到大量的机会。”
更进一步来看,沈东良认为JavaSE在高端移动设备上的流行,配合基于Unix和Linux的移动操作系统,将能够遏制住微软Windows Mobile垄断手机操作系统市场的野心,为移动设备软件市场营造出一个开放公平的竞争环境。【文:呐不喊】
沈东良简介:
沈东良,6年开发经验,现任上海交大慧谷股份公司系统分析师,对Java各方面技术均有涉猎,擅长设计模式,服务器开发,工作流和企业应用等。前一段时间写了一个开源小项目OXmlEd,这是一个“对象—XML”映射库。
博客:http://blog.csdn.net/shendl