您所在的位置:IT专家堂 > 数据库 > JavaFX重装上阵 加强Web领域开发

JavaFX重装上阵 加强Web领域开发

2009-03-03 16:36 java060515 java060515 字号:T | T
一键收藏,随时查看,分享好友!

Sun公司的JavaFX是一种脚本,以简单的方式利用现有的Java语言、Java 2D和Java Web Start技术实现Web富客户端界面。

AD:

Sun公司的JavaFX是一种脚本,以简单的方式利用现有的Java语言、Java 2D和Java Web Start技术实现Web富客户端界面。

很久以前,当Internet还很年轻的时候,Java语言曾经很受青睐,以至于《财富》杂志将Scott McNealy(Sun公司董事会主席及Sun 联邦公司主席,他是Sun公司联合创始人)评为封面人物,以超级英雄装扮,冠以“Java Man”的称号。Java跨平台的能力使得计算机世界大为震惊,成为计算机世界默认的编程语言。

尽管Java在教育、科学计算、服务器领域取得巨大的成功,但是在桌面应用程序方面却没有那么成功。另外,对于能够嵌入在任何Web站点的Java applet来说,是不能和动画流畅、图形保真度很高的Flash匹敌的。Microsoft曾经力推的动态HTML,后来复兴的Ajax,都使得Java applet 在Web领域的优势逐渐消失。

现在11年过去了,Sun想重新赢回自己的用户。不过目前看来,这个任务变得艰难许多,因为Adobe公司不仅有AIR,还有Flex和Flash。单独Flash就发行到第10个版本了,并且比以前的版本有了更多的功能。这仅仅是一个Adobe,另外,Microsoft推出的Silverlight,Apple仍旧推动QuickTime的发展,另外AJAX技术呼声也不小。它们之间的竞争欲演欲烈,谁都想成为占绝对优势的技术,满足对动画口味要求越来越高的用户。

Java重装上阵

Sun现在对这场战斗准备得更好些。Sun现在有丰富的程序库供动画制作使用,包括很受看中的Java 2D, Java 2D是与Adobe公司一起开发的,模仿PostScript的计算结构。有人说在Web动画方面,Flash之所以胜过Java applet是因为Flash提供了平滑的反混叠算法。如果Java 2D API不够的话,会有大量的开源程序库开发出来,供开发者使用。

现在看来,Sun跟以前相比,对这场战斗确实准备得好一些,但留给Sun的问题是如何解决新瓶装旧酒。虽然工具已经给Web美工设计人员准备好了,但是Web美工设计人员对如何使用工具却没有准备好。一些Web美工设计人员能写Flash的脚本,但是使用纯粹的Java还欠功力。因此Sun需要创建一个新的语言,并且希望Web开发者能够喜欢并且使用新的编译器将之变成字节码,运行在Java虚拟机上。

Sun确实也推出了新的语言JavaFX,我已经花了几天来试验新的语言,我得出的结论是JavaFX的成功或者失败主要取决于用户的体验。新的语法隐藏了一些Java中讨厌的语法限制,最大范围了满足需求,让用户使用起来更加自由,忽略了一些标点符号。关于颜色和布局的设计细节混合在代码中,写出来的代码有些像CSS、HTML和JavaScript的混合体。新的语言有许多内置的功能来处理最为常见的任务,例如加载远程文件。

使用的这个语言的便利是要付出代价的:需要学习一个新的语言,记住另一套方式来构成一个Web应用程序。老的关键字“void”重新规定为“Void”,V要大写,但是这些关键字的定义会自动从函数中得来,不用显式的敲出来,这还是很方便的。除此之外,还有一些好的语法。

经过一些实验,我发现对有些方面受不了。开始问自己为什么Sun不使用Groovy,使用一些简洁语言来进行Java富Web客户端程序设计?或者使用JavaScript?在浏览器中的JavaScript层和JavaFX applet之间有许多灵巧的钩子。或者使用原始的Java?我曾经想对于Java程序员来说,一些本可以拿Java本身表达的XML或者Properties文件不去表达,而非要掌握一个新的语言是否是一件明智的事情。

Java Web“混合酒调制术”

很快,我逐渐喜欢这种语法。最大的好处就是所有的东西都在一个文件。布局对象、风格、动画效果都混个在一起。不需要区分CSS、HTML、JavaScript文件。实际上将所有的文件混合成一个文件并不是提倡的,许多机制鼓励程序员将项目细分成模块化。

混合是不是一件坏事?一些喜欢严格划分功能(如模型、视图、控制)的程序员就觉得此举简直不可理喻。将文件分成不同部分管理起来更加容易。将所有的文件混合在一起,放在一个JavaFX文件中就不容易将CSS文件给设计人员,不容易将JavaScript文件给AJAX程序员。没错,这么认为是对的。但是集成度这么高,利于不同文件的页面调度,给一些div一个id,接着赋予这个id一些风格,设置id如何动作。如果代码不是那么复杂,为什么不将他们混合起来呢?对于设计人员来说可以绕开程序员剪切和粘贴足够的代码。这么一来进行文件的分离并不是什么问题。

这种争论是不必要的,如果希望的语言有自己的方式来完成分离的工作。程序的皮肤由美工设计人员放到CSS文件中,而与此同时程序员可以专注于脚本的编写。对于美工设计人员来说,我猜想JavaFX比JavaScript和其它的一些语言更加容易上手。我也肯定有许多关于如何正确组织应用程序的争论。

Sun花了很大的精力将JavaFX工具加入到NetBean集成开发环境中。想要调查这些平台有没有增加JavaFX最简单的方法就是下载NetBean源代码看看。NetBean集成开发环境中也有来自Adobe的Illustrator、Photoshop和 Flash的插件,这些插件能制作图形。我认为存在这么一种可能:某个勇于尝试的美工设计人员在NetBeans中随心所欲选用自己喜欢的工具进行创作,在NetBeans创建出一件形态优美的作品来。但是对于一般的美工设计人员来说,他们还是需要一些帮助的,因为JavaFX的语法中有许多的选项,这些选项无处不在,还是有些令人费解。只有程序员才能想出将if-then语句加入到一个字符串的定义,如:

var s="The world is {if (date>1492) "round" else "flat"}."; 

令人满意的结果是我们能够丢掉打括弧中Java的if-then语法,因为我们能够将其用到其它地方。

美工设计人员不需要面对这些复杂的语法,因为用那些简单的语法就能足够做许多的事情了。他们不需要思考字符串定义中的这些令人费解的事情。

Param Singh,JavaFX的高级市场经理,告诉我说Sun希望JavaFX的早期使用者是那些Java开发者和一些娴熟的美工设计人员。

Singh 说为美工设计人员准备的可视化工具,以及为移动手机开发JavaFX应用程序的工具不久将会一起发布,之后接着说某种IDE里肯定会有那些工具,因此也需要熟悉这种IDE。”

我在想这些工具也将是免费的,或者至少比Adobe的工具便宜很多。程序员将从开源革命中收益,并且有大量的免费工具可供使用。如果JavaFX比Adobe的工具便宜很多,那么有可能够吸年轻的开发者。

我不知道这是否能足以让JavaFX从Flash,AIR和其它的工具中争取到大的市场份额。程序员有他们自己的嗜好。无论如何,但是此举可以让Java程序开发者做一些新的任务,因此就能让Java有更大的使用范围。有编写大量Java代码的程序开发者将能够更轻松的掌握JavaFX.

Java如何应对老对手

我认为最常见的JavaFX用户将会是科学和金融方面的程序员,他们需要使得系统界面变得漂亮。任何Java函数库都能够被集成到JavaFX应用程序中去,这就使得在应用程序在拥有美观的图形界面后,还拥有一个非常灵巧,具有多种计算功能的后台。我不能想象这种应用程序如何用Flash的ActionScript来完成。目前对于开发者来说,目前这些工具还不具备完成大的项目的需求。

JavaFX真正的用途将还可以是作为更好的部署选择。举个例子,有一个程序员展示了如何整合JavaFX代码到拖拽模型中。这些代码将会通过Java的Web Start直接部署。对于一个公司来会所,JavaFX是一个非常好的部署模型,一个免费的开源项目。JavaFX能够很好的取代Swing,给Java开发者一个机遇来构建自己用户界面,使用去来像HTML的组件那样,而不去使用Swing。JavaFX不仅仅是让Web页面更具动画效果,也是部署桌面应用程序的好机制。

我认为美工设计人员将也会满意Sun公司这些年对Java所做的工作。Java虚拟机更新非常快,由于服务器端安装的需求,在服务器端的安装同时由一个鼠标形状变成一个沙漏,更具人性化。Java库函数也很丰富,并且很好的检查了,防止有安全漏洞隐患。另外,最新的Java虚拟机已经在8亿用户的电脑上安装了。使用JavaFX的大环境已经具备了。

但是,要想推广起来或许不是一件容易的事情。Adobe已经为Flash和AIR开发了很好的工具,但是为打造这些工具也花了重金。JavaFX或许能吸引一些年轻的,费用不是很充足的美工设计人员来使用,因为他们没有钱去购买Adobe的软件套。

不过想要阻止JavaFX的成功还是会有一些困难的。至于说将来会不会取代Flash,Silverlight或者其它的技术呢?至少不是现在的事情。但是瘦死的骆驼的马大,虽说Java 目前在界面和分布方法欠改进,但JavaFX还是会赢得一些忠实的粉丝和一席之地的,这就会让Java在桌面应用程序取得立足之地。

【编辑推荐】

  1. 初探Java企业级开源框架OSGi
  2. Java代码的静态编译和动态编译中的问题比较
  3. 成为Java高手的25个学习要点
【责任编辑:彭凡 TEL:(010)68476606】
【责任编辑:彭凡 TEL:(010)68476606】



分享到:

栏目热门

更多>>

  • 头条 使用检查约束验证SQL Server中的数据
  • 构建应用程序最关键的目标之一是确保所有进入数据库的数据都要符合你的业务规则,数据校验是应用程序的关键部分,确保你的数据满足业务分析师制定的需求。本文将给大家介绍如何使用检查约束验证SQL Server中的数据。
  1. 对话职业经理人阿朱:程序员转型期的职业选择
  2. 从检测到防护:全面打造网站安全

热点职位

更多>>

热点专题

更多>>

读书

安全模式:J2EE、Web服务和身份管理最佳实践与策
本书全面阐述Java应用安全的基本知识并介绍一种强大的结构化安全设计方法;介绍独立于厂商的安全架构;列出详细的评估核对表以及

最新热帖

更多>>

51CTO旗下网站

领先的IT技术网站 51CTO 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 51CTO学院 区块链第一聚合媒体 zhijiapro