說明:本文版權歸原作者左洸,僅供個人學習和交流使用,任何個人或媒體,沒有經過本人許可,不得轉載此文,更不得用于任何商業用途和非法用途。
每當我們要學習一種新的技術,首先要搞明白他是干什么的,對自己有什么用處,把相關情況弄清楚以后,才能決定去不去學習他。在學習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
package javafxapplication8;
import java.util.Date;
public class Hello {
public String getTime(){
Date d = new Date();
return d.toString();
}
}
第二步:在項目中添加一個 JavaFX Stage 文件,并在 Scene 中加入一個 Text,看代碼吧:

Code
package javafxapplication8;
import javafx.scene.Scene;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import javafxapplication8.Hello;
var d = new Hello();
var str :String=d.getTime();
Stage {
title: "Application title"
width: 250
height: 80
scene: Scene {
content: Text {
font : Font {
size : 16
}
x: 10,
y: 30
content: bind str
}
}
};
Build 以后就可以在桌面運行了,如圖:

下面是我把它發布到服務器上,當你瀏覽這個頁面的時候,程序就在你的瀏覽器中運行了。
如果沒有安裝 JRE 運行時,系統會提示你安裝,瀏覽器彈出的對話框都點確定或者允許就可以,測試完了以后如果不喜歡可以將 Jre 從控制面板卸載。如果你一直從開始看下來,沒注意到這里的程序是怎么加載的,可以刷新一下。
下載到本機運行:下載
posted on 2009-03-07 23:04
左洸 閱讀(2037)
評論(2) 編輯 收藏 所屬分類:
JavaFX 深入淺出