posts - 48,comments - 156,trackbacks - 0

      说明:本文版权归原作者左洸,仅供个人学习和交流使用,任何个人或媒体,没有经过本人许可,不得转载此文,更不得用于任何商业用途和非法用途。

     每当我们要学习一种新的技术,首先要搞明白他是干什么的,对自己有什么用处,把相关情况弄清楚以后,才能决定去不去学习他。在学习JavaFX之前,下面几个问题我觉得应该先搞清楚:

     一、什么是 Rich Internet Applications ?

     Rich Internet Applications ,缩写RIAs,翻译过来是富客户端应用程序,或者富互联网应用程序。他是从网络下载到本机,可以在浏览器中运行的一种应用程序。当然也可以脱离浏览器,直接在操作系统下运行。相对于传统的的Web应用,富客户端应用程序主要特点是丰富的界面效果。

     说白了,RIAs就是把原来在桌面上跑的应用程序放到浏览器中去跑。

 

     二、富客户端是不是为了取代传统 Web 应用的界面?

     目前来说我觉得他们互为补充,传统 Web 应用,特别是企业级应用,主要突出数据的存储、检索和管理,重点在业务和逻辑,而不在界面。而RIAs主要突出用户的体验和交互性。二者如何结合应该根据实际情况来,你要在浏览器中玩扫雷游戏,当然得富客户端,如果是个搜索引擎,传统的 Web 界面足以。如果是个银行账户查询界面,可能可以把二者结合起来。

 

     三、富客户端出现的目的到底是什么?

     可能有人问:说了半天,富客户端即不是取代传统 Web 界面,也可以在桌面上直接运行,那还用得着费那么大的劲把它放到浏览器里面吗?

     回答是很用得着,目的有两个:1、跨平台;2、易于发布。

     想想,不管是电脑还是手机,不管是Windows、Linux、Windows Mobile、塞班或者 Google 的手机操作系统,哪个里面没有浏览器?只要有浏览器,你写的程序就可以在任何物理平台、任何操作系统下运行,这是多么棒的一件事情啊!

 


     四、当前主流的富客户端技术有哪些?他们的优缺点是什么?

     

     1、基于 AJAX 技术的富客户端,比如 ExtJS。

          优点:纯基于浏览器,不需要安装插件。

          缺点:个人观点,毕竟中间多了一层浏览器,速度和功能可能稍差一点。

 

     2、微软的 SilverLight。

     优点:
          (1)他是微软的技术。
          (2)基于.Net 框架和 WPF,功能强大。
          (3)最重要的一点,.Net 框架和 SilverLight 插件必定会成为微软新的操作系统的一部分。在新操作系统中,你的 SilverLight 程序不用安装插件就可以直接运行了。

     缺点:
          (1)还是这一条:他是微软的技术。


     3、Adobe 的 Flex

     优点:底层基于 Flash,以 Flash 的形式发布。想一下,我们重新装完系统,打开浏览器,进入一个门户网站,一般会做什么事?当然是安装 Flash 插件了,只要联了因特网的机器,还有几台没装 Flash插件的呢?这就为 Flex 程序的发布扫清了一个很大的障碍。只要程序能满足需求,用什么平台开发用户一般不会很介意,但是动不动就安装插件那可真的很烦。而 Flash 已经被广泛接受了。

     缺点:又要重新学习一套新的语言规则,一套新的 Framework,真的很累啊。

 

     4、Sun 的 JavaFX
     优点:
          (1)对传统 Java 的继承。JavaFX 主要突出的是界面和交互性这一块,剩下的功能依然调用传统的 Java 包。这种既有创新又有继承的思路,降低了学习难度。这样,我们可以用以前熟悉的 Java 方式开发程序的模型层,然后用 JavaFX 设计视图层。
          (2)同一个程序 Build 以后会产生两个包,一个是在浏览器中运行的,一个是在桌面直接运行的。当然,Flex 也可以,Silverlight 则可以直接变成 WPF 再变成 exe。所以这点可能算不上什么优点。但是话说回来,对于桌面 Java,仅仅一个发布问题,当初就曾经吓退多少想入门的新手?不信你 Google 一下 "java 打包"!

     缺点:
          (1)虽然 JRE 现在以插件的形式发布了,但是除了 Java 开发人员,普通用户安装的毕竟还是少数。大型的 Java 程序很多都自带 JRE 也可以反映出这个问题。
          (2)浏览器中,程序的启动速度要比 Flash 和 SilverLight 慢许多。可能是要从 Sun 官网下载很多 JS 脚本文件,这么多客户同时访问官网,能不慢吗?应该想办法改进一下。
          (3)桌面运行包的扩展名是 .jnlp,只要你安装了 JRE 插件,运行它就像运行 .exe 程序一样,双击就可以了。这本来是一种很绿色的发布方式,但实际上不是这样,每当你运行一个新的桌面版 .jnlp 程序以后,再打开控制面板的添加删除程序看看,都给你安装进去了!如果你直接删除了这个 .jnlp 程序,控制面板里的信息就留在里面删不掉了。这种发布细节问题,应该可以改进。

 

     五、RIAs 可以和服务器通信吗?

     传统的 CS 客户端都可以,RIAs当然更没问题了。不但可以通信,而且 Silverlight 支持 Asp.Net, Flex 支持 PHP、ASP、JSP等常见的服务器技术,比如在服务器端有个 Login.php 文件,你可以用 Flex 把用户名和密码 Post 给它里面对应的处理函数,然后由 PHP 脚本完成数据库查询和登录等逻辑,再返回相应的数据用来刷新界面。

     注意:这里用到了刷新,而不是跳转,这就是富客户端和传统 Web 界面的重要区别。整个过程传统的 Web 程序区别不是很大,当然,数据在传输中的格式一般都是基于 XML 的。

     至于 JavaFX 还没有看到相关资料,至少会支持 JSP 吧。

 

     六、到底选哪一个

     如果你是一个年轻人,精力充沛,学习劲头足,那么套用一句老话,全面撒网,重点钓鱼。如果你像我一样是个老人家了,脑子越来越不好使,那么选一个对你来说能最快上手的吧。附带说一句,Flex 和 JavaFX 都是开源的。

 

     七、一个小例子

     下面一个简单的 Java 类,功能是返回程序运行时刻的时间,这个类用 JavaFX 调用,然后打包并通过互联网发布出去,可以在浏览器或者桌面里面运行。

     第一步:用 Netbeans 创建一个 JavaFX 空项目,然后项目中添加一个 Java 类:

Code

 

      第二步:在项目中添加一个 JavaFX Stage 文件,并在 Scene 中加入一个 Text,看代码吧:

 

Code

 

 Build 以后就可以在桌面运行了,如图:

 

     

     下面是我把它发布到服务器上,当你浏览这个页面的时候,程序就在你的浏览器中运行了。

     如果没有安装 JRE 运行时,系统会提示你安装,浏览器弹出的对话框都点确定或者允许就可以,测试完了以后如果不喜欢可以将 Jre 从控制面板卸载。如果你一直从开始看下来,没注意到这里的程序是怎么加载的,可以刷新一下。

 

下载到本机运行:下载

posted on 2009-03-07 23:04 左洸 阅读(2028) 评论(2)  编辑  收藏 所属分类: JavaFX 深入浅出

FeedBack:
# re: JavaFX 深入浅出(一)富客户端应用程序 RIAs
2009-03-09 14:07 | bera
刷新了下才知道最后这东西加载了这么久....  回复  更多评论
  
# re: JavaFX 深入浅出(一)富客户端应用程序 RIAs
2009-03-11 10:18 | lveyo
看来这个很难与flex争夺市场了  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: