每当我们要学习一种新的技术首先要搞明白他是干什么的对自己有什么用处把相关情况弄清楚以后才能决定去不去学习他在学习JavaFX之前下面几个问题我觉得应该先搞清楚
一什么是 Rich Internet Applications ?
Rich Internet Applications 缩写RIAs翻译过来是富客户端应用程序或者富互联网应用程序他是从网络下载到本机可以在浏览器中运行的一种应用程序当然也可以脱离浏览器直接在操作系统下运行相对于传统的的Web应用富客户端应用程序主要特点是丰富的界面效果
说白了RIAs就是把原来在桌面上跑的应用程序放到浏览器中去跑
二富客户端是不是为了取代传统 Web 应用的界面?
目前来说我觉得他们互为补充传统 Web 应用特别是企业级应用主要突出数据的存储检索和管理重点在业务和逻辑而不在界面而RIAs主要突出用户的体验和交互性二者如何结合应该根据实际情况来你要在浏览器中玩扫雷游戏当然得富客户端如果是个搜索引擎传统的 Web 界面足以如果是个银行账户查询界面可能可以把二者结合起来
三富客户端出现的目的到底是什么?
可能有人问说了半天富客户端即不是取代传统 Web 界面也可以在桌面上直接运行那还用得着费那么大的劲把它放到浏览器里面吗?
回答是很用得着目的有两个跨平台易于发布
想想不管是电脑还是手机不管是WindowsLinuxWindows Mobile塞班或者 Google 的手机操作系统哪个里面没有浏览器?只要有浏览器你写的程序就可以在任何物理平台任何操作系统下运行这是多么棒的一件事情啊!
四当前主流的富客户端技术有哪些?他们的优缺点是什么?
基于 AJAX 技术的富客户端比如 ExtJS
优点纯基于浏览器不需要安装插件
缺点个人观点毕竟中间多了一层浏览器速度和功能可能稍差一点
微软的 SilverLight
优点()他是微软的技术
()基于Net 框架和 WPF功能强大
()最重要的一点Net 框架和 SilverLight 插件必定会成为微软新的操作系统的一部分在新操作系统中你的 SilverLight 程序不用安装插件就可以直接运行了
缺点()还是这一条他是微软的技术
Adobe 的 Flex
优点底层基于 Flash以 Flash 的形式发布想一下我们重新装完系统打开浏览器进入一个门户网站一般会做什么事?当然是安装 Flash 插件了只要联了因特网的机器还有几台没装 Flash插件的呢?这就为 Flex 程序的发布扫清了一个很大的障碍只要程序能满足需求用什么平台开发用户一般不会很介意但是动不动就安装插件那可真的很烦而 Flash 已经被广泛接受了
缺点又要重新学习一套新的语言规则一套新的 Framework真的很累啊
Sun 的 JavaFX
优点
()对传统 Java 的继承JavaFX 主要突出的是界面和交互性这一块剩下的功能依然调用传统的 Java 包这种既有创新又有继承的思路降低了学习难度这样我们可以用以前熟悉的 Java 方式开发程序的模型层然后用 JavaFX 设计视图层
()同一个程序 Build 以后会产生两个包一个是在浏览器中运行的一个是在桌面直接运行的当然Flex 也可以Silverlight 则可以直接变成 WPF 再变成 exe所以这点可能算不上什么优点但是话说回来对于桌面 Java仅仅一个发布问题当初就曾经吓退多少想入门的新手?不信你 Google 一下 java 打包!
缺点
()虽然 JRE 现在以插件的形式发布了但是除了 Java 开发人员普通用户安装的毕竟还是少数大型的 Java 程序很多都自带 JRE 也可以反映出这个问题
()浏览器中程序的启动速度要比 Flash 和 SilverLight 慢许多可能是要从 Sun 官网下载很多 JS 脚本文件这么多客户同时访问官网能不慢吗?应该想办法改进一下
()桌面运行包的扩展名是 jnlp只要你安装了 JRE 插件运行它就像运行 exe 程序一样双击就可以了这本来是一种很绿色的发布方式但实际上不是这样每当你运行一个新的桌面版 jnlp 程序以后再打开控制面板的添加删除程序看看都给你安装进去了!如果你直接删除了这个 jnlp 程序控制面板里的信息就留在里面删不掉了这种发布细节问题应该可以改进
五RIAs 可以和服务器通信吗?
传统的 CS 客户端都可以RIAs当然更没问题了不但可以通信而且 Silverlight 支持 AspNet Flex 支持 PHPASPJSP等常见的服务器技术比如在服务器端有个 Loginphp 文件你可以用 Flex 把用户名和密码 Post 给它里面对应的处理函数然后由 PHP 脚本完成数据库查询和登录等逻辑再返回相应的数据用来刷新界面
注意这里用到了刷新而不是跳转这就是富客户端和传统 Web 界面的重要区别整个过程传统的 Web 程序区别不是很大当然数据在传输中的格式一般都是基于 XML 的
至于 JavaFX 还没有看到相关资料至少会支持 JSP 吧
六到底选哪一个
如果你是一个年轻人精力充沛学习劲头足那么套用一句老话全面撒网重点钓鱼如果你像我一样是个老人家了脑子越来越不好使那么选一个对你来说能最快上手的吧附带说一句Flex 和 JavaFX 都是开源的
七一个小例子
下面一个简单的 Java 类功能是返回程序运行时刻的时间这个类用 JavaFX 调用然后打包并通过互联网发布出去可以在浏览器或者桌面里面运行
第一步用 Netbeans 创建一个 JavaFX 空项目然后项目中添加一个 Java 类
packagejavafxapplication;
importjavautilDate;
publicclassHello{
publicStringgetTime(){
Dated=newDate();
returndtoString();
}
}
第二步在项目中添加一个 JavaFX Stage 文件并在 Scene 中加入一个 Text看代码吧
packagejavafxapplication;
importjavafxsceneScene;
importjavafxscenetextFont;
importjavafxscenetextText;
importjavafxstageStage;
importjavafxapplicationHello;
vard=newHello();
varstr:String=dgetTime();
Stage{
title:Applicationtitle
width:
height:
scene:Scene{
content:Text{
font:Font{
size:
}
x:
y:
content:bindstr
}
}
};
Build 以后就可以在桌面运行了如图
下面是我把它发布到服务器上当你浏览这个页面的时候程序就在你的浏览器中运行了
如果没有安装 JRE 运行时系统会提示你安装浏览器弹出的对话框都点确定或者允许就可以测试完了以后如果不喜欢可以将 Jre 从控制面板卸载如果你一直从开始看下来没注意到这里的程序是怎么加载的可以刷新一下
Java needed Click for details
下载到本机运行点击