还有人真的在乎桌面Java吗?

Does Anyone Really Care About Desktop Java?

July 17, 2008

 

    要是我没记错的话,在JavaOne大会上今年被定为“JavaFX年”。我们本该会叹服JavaFX的智能和简练性。然而在Blog圈子里却显得震耳欲聋的安静(意为不同意或缺乏热诚 译者注)。

Java UI的历史无不充斥着极其糟糕的决定。首先是AWTAbstract Windowing Toolkit),由于语言设计者们并没有计划将UI(用户界面)作为Java一个重要组件考虑进去(不必惊讶),它是在最后一秒钟才诞生的。据说AWT从产生概念到完成只用了一个月时间。而AWT的结果—Bug成堆且在所有平台表现平平重创了所有人在Java UI上的信心。后来的Swing,历经年复一年的考验,也只是挽回了一些丢掉的颜面。而怀有这样长久的第一印象,用户们当然仍将Java和劣质的用户界面画上等号。因此对他们来说,热气腾腾的咖啡杯里似乎有别的什么东西在冒着热气。

之后,Java又坚决拒不支持组件和事件模型。Java Beans也不例外,它的出现只是为了弥补这个缺陷而作的一次尝试。真正的组件和事件模型可不是需要程序员或环境实现大量代码来效仿它的。如果它能解决所有问题,我们就不必需要抽象(abstractions)概念了,更可以说一个基本的图灵机就能解决所有问题。

Swing程序设计不但不简单,还很凌乱、复杂。虽然时不时会出现让Java UI编程变得和Visual Basic一样简单的声音,在这一点上Sun甚至也提出了VB引入计划,但最后都搁浅了。没有底层基础架构的支持这些都不可能实现。最终你还是会产生大量UI代码的。

JavaUI编程基本上都是“马后炮”,不情愿地接受却又从未真正支持过。因此如今人们对Java FX所持有的观望态度也就不足为怪了。

著名的Java桌面程序有哪些呢?恩,Eclipse,一个开发环境,由于那时Java还不能满足用户需要,它就成为了创建自己的UI库的工具。NetBeans,另一个开发环境,使得Swing如今依赖于任务了。还有Intelli J,也是一个开发环境。可是我还不知道有哪个通用桌面程序是Java写的,即使是付费的也没有。

人们不用Java来创建个人或商用桌面程序的原因也许就是它在UI上的失败。

我已经断断续续学了几年Flex,仍认为它是UI的最佳解决方案,特别是在后台逻辑上未局限于使用一种语言的时候。Flex是完全作为一种用户界面语言而设计,并且在作为多种语言的UI解决方案上将继续大有作为,因为人们一直在为他们钟爱的语言建立AMFActionScript消息格式)桥。

AMF由于其异步性而成为一种理想格式,和UI样式表也有良好的兼容性。总之你不会看到执行需要多长时间,异步方法可以保证你的UI在任何情况下总是处于响应状态。

我在这篇文章里给出了PyAMF的一个例子。PyAMF项目总是看起来十分活跃且势头良好,还为Python桌面程序提供了一个创建UI的简单方法。

RubyAMF也是一个很活跃的项目。它为Ruby on Rails程序提供了Flex用户界面。但在最近的RailsConf大会上出现了有关“Rails下的AIR程序”的报告。因此看来它还将支持桌面程序。

还有一个基于PHP的AMFPHP项目,尽管并不是桌面解决方案。

Java-Flash remoting的OpenAMF项目也似乎中止了。它最近的一次1.0版本发布还是在064月份。它的产品并没有使用更近一点的Java版本,更不用说维护了。有意思的是理论上讲Java应该有更广泛的基础且有一群人在支持它。而且由于开源的BlazeDS包含了创建JavaAMF的核心代码(BlazeDS本身只是为Javaweb程序服务的)也更凸现了这一点。

虽然不很确信,但我想从某种角度上说在基于BlazeDS连接JavaFlexAdobeSun伸出了橄榄枝。可通常Sun会本着“非此处发明(not invented here)” 的态度(即不愿意用外人发明的东西译者注)将其拒绝并创建“更好”的东西出来。所以现在看大家都在观望着,想看看JavaFX到底是否会成为“期待中的又一个世界上最好的语言”(或许在和微软的无数次较量中Sun已经学会了太多的营销方面实践技巧了)。

我所希望看到的是Adobe能够为桌面应用程序创建并维护一个Java-AMF桥。但也许Adobe认为Java只是一个服务器上的工具,无论什么时候Java支持的桌面应用似乎永远不会出现(我对此十分惊讶)。他们所重视的是与Silverlight的竞争(我对Silverlight确实持观望态度。微软做出的允诺不少,实际做到的却常常大相径庭看看Vista吧)。

所以如果人们真的对桌面Java感兴趣,马上尝试一下吧。找出开源BlazeDS上实现过的代码,创建一个桌面Java-AMF桥,这样我们就可以在Java代码开头轻松地加入AIR用户接口。通过此方法现在就能很容易地创建UI而不必等待JavaFX成功与否了。

 

(原文链接网址:http://www.artima.com/weblogs/viewpost.jsp?thread=234900

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值