Java PK Flash

时间:2022-10-02 10:58:23

JaVaFX能够在开发更为web化的界面时,平衡现有的J8Va代码,J8Va2D和Java Web start技术。

很久以前,在Internet还年轻的那段岁月里,Java语言的火热使得财富杂志将Scott McNealy设为封面人物,还穿着超级英雄的服装,上面写着“Java Man”。Java跨平台的能力将重新构建计算机世界并且将成为计算机世界中的默认操作系统。

尽管Java在教育、科学计算和服务器场等领域已经取得了空前的成功,但是它却没能在桌面领域走的太远。

Java applet虽然能够嵌入到任何Web站点中,但是却无法和Flash的平滑动画和抗锯齿能力相抗衡。Microsoft用动态HTML进行回击,而动态HTML现在重生为AJAX,而且applet对微软在Web方面的霸主地位的威胁也在逐渐消失。

时间已经过去了11年,Sun公司打算锻造另一个杀手锏,即用户级别的交互。这是一项更为艰巨的任务,因为Adobe拥有AIR以及Flex和Flash,这些略有区别的工具可以提供比HTML和JavaScipt更多的功能。

Flash自身也经历了10个版本,并且比以往具备了更多的功能。这还仅仅是故事的开始:Microsoft开发出SflverUght,Apple还在兜售QuickTime,AJAX也总是能提供一些动画上的乐趣。所有这些工具都有可能竞争成为主流的工具,来向那些挑剔的用户呈现一些栩栩如生的小窗口,假如这些用户希望在例如发送Email等过程中能在屏幕上显示一些起舞的、扭动的和动感的图形。

Java的新包装

Sun公司对于这场战役准备的稍微好一些。它们有一个丰富而且稳定的用于动画的类库,包括与Adobe共同开发的广受好评的Java 2D,用于模拟PostScipt的大量计算性结构。

这很重要,因为有人指出Flash之所以能够在Web动画上击败Java applet主要原因在于Flash能够提供平滑的抗锯齿功能。如果Java 2D还不够用的话,还可以利用已开发好的海量开源代码库,基本上程序员的所有需求都能够满足。

Sun的问题在于如何给这瓶旧酒换个新瓶子。尽管这些技术部件对于Web艺术家们来说早就能派上用场了,但是艺术家们似乎还没有为此准备好。某些悟性较高的艺术家们能够写一些用于创建Flash的脚本,但是让他们写纯Java代码就显得勉为其难了。所以Sun公司开发了一个新的语言,这可不仅仅是在Java上增加一些语法的花样而已。Sun公司希望开发人员能够喜欢这种新语言,并且为此使用一个新的称为javafxc编译器,来将该语言编译成JVM的Java字节码。哦!Java有了新的包装。

Web调酒术

但是渐渐地,我又开始喜欢上这个新的语法了。它最主要的优点似乎在于一个页面的所有内容都被扔进了同一个文件。布局对象、样式和动画效果都被放在了一块儿。没必要分割CSS、HTML和JavaScript文件。

但是新的语法并没有强制要求一定要将以上这些放在同一个文件中实际上,还有一些机制鼓励程序员将一个项目分割成几个可以重用的模块。

这种混合的方法是好还是不好?某些严格的功能分离主义者,例如哪些强调要将模型、视图和控制分开的人,他们可能要愁眉苦脸了。MVC的簇拥们一直认为:将文件按照不同的任务进行分离的方法有利于文件的维护。将所有的一切杂糅在一个JavaFX文件中的做法将使得很难将一个CSS文件发给某个设计人员,并且将一个JavaScript文件发给一个AJAX程序员。是的,这没错。但是有时候这些内容结合的如此紧密,以至于对这些文件进行分割的工作将变得非常繁重,例如首先给某个div一个id,然后为这个id赋予某个样式,接着再定义某个id的行为等等。如果代码不是太复杂的话,为什么不将它们放在一块儿呢?设计人员还是可以通过剪切黏贴大段代码的办法来避开编程人员的内容。这样的话,将任务分割给不同人员就不成问题了,因为人员之间的差别被抹平了。

然而这种杂糅的方式并不是必须的,因为这个新语言依然提供了按照用户所需将内容进行分割的方法。杂糅的文件可以被分割成需要设计人员完成的CSS文件,和需要编程人员完成的脚本。

然而,我猜测,对于设计人员来说,JavaFX比起JavaScript或是其他的语言来说要更容易理解。而且我也确信关于如何正确地架构一个应用程序的问题将会引来无数的争论。

JavaFX的高级市场经理Param Singh表示,Sun觉得最早能接受JavaFX的人群应当大部分由Java开发人员构成,还包括一些领悟能力较强的设计人员。

Singh解释道今后会出现一些面向设计人员的可视化工具时,同时还会出现用于在移动设备上开发JavaFX应用程序的工具,他说:“这些工具肯定会放在IDE中,所以你需要首先熟悉一个IDE,”

我在想这些工具会不会也是免费的,或者至少比Adobe的工具要便宜的多。编程人员已经从开源的浪潮中获益匪浅,而且目前也有大量的免费工具可用。假如设计工具真的比Adobe的工具便宜得多的话,JavaFX有可能在年轻的开发人员群体中打开市场。

我不知道这些是不是足够使得JavaFX能够在与Flash、AIR或者其他的工具的市场竞争中分到一杯羹。编程人员总是喜欢按照他们已习惯的方式干活。但是这将使得Java程序员能够完成一些新的任务,也使得这门语言在屏幕上占据更多的地盘。Java程序员能够更方便地分发代码。

传统势力

JavaFX应用程序可以包含任意的Java类库,所以完全可以在一个图形界面的背后加上一个非常智能、庞大且计算密集型的后台。我无法想象用Flash的ActionScript来写这类程序的情景。这些为开发人员设计的工具无法处理大规模的项目。要是这些工具能够处理多线程又能带上个性能评测工具那就好了。

或许JavaFX真正的影响将来源于那些Java社区中的中坚分子,他们想要寻求更好的部署应用程序的可选方法。

例如,一个程序员演示了如何将JavaFX代码与桌面的拖动模型进行整合。这段代码将直接通过Java Web Start进行部署,别人如果安装了Java最新版的话,就可以点开一个应用程序,然后从本机上接收文件了。对于一个企业、一个开源项目,或者任何不想直接付钱的人来说,这是非常好的部署模型。JavaFX有可能最终作为Swing的良好替代品,帮助Java开发人员以类HTML组件的方式,而不是Swing的方式,来建立他们自己的用户界面。JavaFX不仅仅能够让Web页面翩翩起舞,它还是提供了一种正确的机制来部署桌面应用程序。

JVM的速度现在已经非常快了,类库也已经很庞大了而且为安全漏洞做好了充足的防范。而且,最新版的JVM已经安装在8千万台桌面上了。JavaFX的登场已经是时候了。

剩下的与美感有关的问题就不那么容易解决了。Adobe将Flash和AIR打造成非常漂亮的工具,但是它们的价格也同样不菲。JavaFX可能会吸引一些年轻的,荷包不是很鼓的设计人员,他们没那么多钱来买Adobe的一堆东西。

然而想让JavaFX完全成功就更困难了。它会取代Flash、Silverlight或其他工具吗?眼下不会,尤其是当微软目前竭力想揽下一些大订单,例如2008年奥运会的时候。但是我认为只要有Java代码存在的地方,而且这些代码需要看上去更美、更容易分发,那么它就具有足够的吸引力能招募到一些真正的粉丝,并且在粉丝心中赢得一个坚实的位置。它给了Java一个机会来掠夺桌面的地盘。

(编译 张祥)

上一篇:用时间赢得竞争优势 下一篇:敏捷开发正走向成熟