posts - 48,comments - 156,trackbacks - 0

                說明:本文版權(quán)歸原作者左洸,僅供個人學(xué)習(xí)和交流使用,任何個人或媒體,沒有經(jīng)過本人許可,不得轉(zhuǎn)載此文,更不得用于任何商業(yè)用途和非法用途。

               每當(dāng)我們要學(xué)習(xí)一種新的技術(shù),首先要搞明白他是干什么的,對自己有什么用處,把相關(guān)情況弄清楚以后,才能決定去不去學(xué)習(xí)他。在學(xué)習(xí)JavaFX之前,下面幾個問題我覺得應(yīng)該先搞清楚:

               一、什么是 Rich Internet Applications ?

               Rich Internet Applications ,縮寫RIAs,翻譯過來是富客戶端應(yīng)用程序,或者富互聯(lián)網(wǎng)應(yīng)用程序。他是從網(wǎng)絡(luò)下載到本機(jī),可以在瀏覽器中運(yùn)行的一種應(yīng)用程序。當(dāng)然也可以脫離瀏覽器,直接在操作系統(tǒng)下運(yùn)行。相對于傳統(tǒng)的的Web應(yīng)用,富客戶端應(yīng)用程序主要特點(diǎn)是豐富的界面效果。

               說白了,RIAs就是把原來在桌面上跑的應(yīng)用程序放到瀏覽器中去跑。

           

               二、富客戶端是不是為了取代傳統(tǒng) Web 應(yīng)用的界面?

               目前來說我覺得他們互為補(bǔ)充,傳統(tǒng) Web 應(yīng)用,特別是企業(yè)級應(yīng)用,主要突出數(shù)據(jù)的存儲、檢索和管理,重點(diǎn)在業(yè)務(wù)和邏輯,而不在界面。而RIAs主要突出用戶的體驗(yàn)和交互性。二者如何結(jié)合應(yīng)該根據(jù)實(shí)際情況來,你要在瀏覽器中玩掃雷游戲,當(dāng)然得富客戶端,如果是個搜索引擎,傳統(tǒng)的 Web 界面足以。如果是個銀行賬戶查詢界面,可能可以把二者結(jié)合起來。

           

               三、富客戶端出現(xiàn)的目的到底是什么?

               可能有人問:說了半天,富客戶端即不是取代傳統(tǒng) Web 界面,也可以在桌面上直接運(yùn)行,那還用得著費(fèi)那么大的勁把它放到瀏覽器里面嗎?

               回答是很用得著,目的有兩個:1、跨平臺;2、易于發(fā)布。

               想想,不管是電腦還是手機(jī),不管是Windows、Linux、Windows Mobile、塞班或者 Google 的手機(jī)操作系統(tǒng),哪個里面沒有瀏覽器?只要有瀏覽器,你寫的程序就可以在任何物理平臺、任何操作系統(tǒng)下運(yùn)行,這是多么棒的一件事情啊!

           


               四、當(dāng)前主流的富客戶端技術(shù)有哪些?他們的優(yōu)缺點(diǎn)是什么?

               

               1、基于 AJAX 技術(shù)的富客戶端,比如 ExtJS。

                    優(yōu)點(diǎn):純基于瀏覽器,不需要安裝插件。

                    缺點(diǎn):個人觀點(diǎn),畢竟中間多了一層瀏覽器,速度和功能可能稍差一點(diǎn)。

           

               2、微軟的 SilverLight。

               優(yōu)點(diǎn):
                    (1)他是微軟的技術(shù)。
                    (2)基于.Net 框架和 WPF,功能強(qiáng)大。
                    (3)最重要的一點(diǎn),.Net 框架和 SilverLight 插件必定會成為微軟新的操作系統(tǒng)的一部分。在新操作系統(tǒng)中,你的 SilverLight 程序不用安裝插件就可以直接運(yùn)行了。

               缺點(diǎn):
                    (1)還是這一條:他是微軟的技術(shù)。


               3、Adobe 的 Flex

               優(yōu)點(diǎn):底層基于 Flash,以 Flash 的形式發(fā)布。想一下,我們重新裝完系統(tǒng),打開瀏覽器,進(jìn)入一個門戶網(wǎng)站,一般會做什么事?當(dāng)然是安裝 Flash 插件了,只要聯(lián)了因特網(wǎng)的機(jī)器,還有幾臺沒裝 Flash插件的呢?這就為 Flex 程序的發(fā)布掃清了一個很大的障礙。只要程序能滿足需求,用什么平臺開發(fā)用戶一般不會很介意,但是動不動就安裝插件那可真的很煩。而 Flash 已經(jīng)被廣泛接受了。

               缺點(diǎn):又要重新學(xué)習(xí)一套新的語言規(guī)則,一套新的 Framework,真的很累啊。

           

               4、Sun 的 JavaFX
               優(yōu)點(diǎn):
                    (1)對傳統(tǒng) Java 的繼承。JavaFX 主要突出的是界面和交互性這一塊,剩下的功能依然調(diào)用傳統(tǒng)的 Java 包。這種既有創(chuàng)新又有繼承的思路,降低了學(xué)習(xí)難度。這樣,我們可以用以前熟悉的 Java 方式開發(fā)程序的模型層,然后用 JavaFX 設(shè)計視圖層。
                    (2)同一個程序 Build 以后會產(chǎn)生兩個包,一個是在瀏覽器中運(yùn)行的,一個是在桌面直接運(yùn)行的。當(dāng)然,F(xiàn)lex 也可以,Silverlight 則可以直接變成 WPF 再變成 exe。所以這點(diǎn)可能算不上什么優(yōu)點(diǎn)。但是話說回來,對于桌面 Java,僅僅一個發(fā)布問題,當(dāng)初就曾經(jīng)嚇退多少想入門的新手?不信你 Google 一下 "java 打包"!

               缺點(diǎn):
                    (1)雖然 JRE 現(xiàn)在以插件的形式發(fā)布了,但是除了 Java 開發(fā)人員,普通用戶安裝的畢竟還是少數(shù)。大型的 Java 程序很多都自帶 JRE 也可以反映出這個問題。
                    (2)瀏覽器中,程序的啟動速度要比 Flash 和 SilverLight 慢許多。可能是要從 Sun 官網(wǎng)下載很多 JS 腳本文件,這么多客戶同時訪問官網(wǎng),能不慢嗎?應(yīng)該想辦法改進(jìn)一下。
                    (3)桌面運(yùn)行包的擴(kuò)展名是 .jnlp,只要你安裝了 JRE 插件,運(yùn)行它就像運(yùn)行 .exe 程序一樣,雙擊就可以了。這本來是一種很綠色的發(fā)布方式,但實(shí)際上不是這樣,每當(dāng)你運(yùn)行一個新的桌面版 .jnlp 程序以后,再打開控制面板的添加刪除程序看看,都給你安裝進(jìn)去了!如果你直接刪除了這個 .jnlp 程序,控制面板里的信息就留在里面刪不掉了。這種發(fā)布細(xì)節(jié)問題,應(yīng)該可以改進(jìn)。

           

               五、RIAs 可以和服務(wù)器通信嗎?

               傳統(tǒng)的 CS 客戶端都可以,RIAs當(dāng)然更沒問題了。不但可以通信,而且 Silverlight 支持 Asp.Net, Flex 支持 PHP、ASP、JSP等常見的服務(wù)器技術(shù),比如在服務(wù)器端有個 Login.php 文件,你可以用 Flex 把用戶名和密碼 Post 給它里面對應(yīng)的處理函數(shù),然后由 PHP 腳本完成數(shù)據(jù)庫查詢和登錄等邏輯,再返回相應(yīng)的數(shù)據(jù)用來刷新界面。

               注意:這里用到了刷新,而不是跳轉(zhuǎn),這就是富客戶端和傳統(tǒng) Web 界面的重要區(qū)別。整個過程傳統(tǒng)的 Web 程序區(qū)別不是很大,當(dāng)然,數(shù)據(jù)在傳輸中的格式一般都是基于 XML 的。

               至于 JavaFX 還沒有看到相關(guān)資料,至少會支持 JSP 吧。

           

               六、到底選哪一個

               如果你是一個年輕人,精力充沛,學(xué)習(xí)勁頭足,那么套用一句老話,全面撒網(wǎng),重點(diǎn)釣魚。如果你像我一樣是個老人家了,腦子越來越不好使,那么選一個對你來說能最快上手的吧。附帶說一句,F(xiàn)lex 和 JavaFX 都是開源的。

           

               七、一個小例子

               下面一個簡單的 Java 類,功能是返回程序運(yùn)行時刻的時間,這個類用 JavaFX 調(diào)用,然后打包并通過互聯(lián)網(wǎng)發(fā)布出去,可以在瀏覽器或者桌面里面運(yùn)行。

               第一步:用 Netbeans 創(chuàng)建一個 JavaFX 空項(xiàng)目,然后項(xiàng)目中添加一個 Java 類:

          Code

           

                第二步:在項(xiàng)目中添加一個 JavaFX Stage 文件,并在 Scene 中加入一個 Text,看代碼吧:

           

          Code

           

           Build 以后就可以在桌面運(yùn)行了,如圖:

           

               

               下面是我把它發(fā)布到服務(wù)器上,當(dāng)你瀏覽這個頁面的時候,程序就在你的瀏覽器中運(yùn)行了。

               如果沒有安裝 JRE 運(yùn)行時,系統(tǒng)會提示你安裝,瀏覽器彈出的對話框都點(diǎn)確定或者允許就可以,測試完了以后如果不喜歡可以將 Jre 從控制面板卸載。如果你一直從開始看下來,沒注意到這里的程序是怎么加載的,可以刷新一下。

           

          下載到本機(jī)運(yùn)行:下載

          posted on 2009-03-07 23:04 左洸 閱讀(2042) 評論(2)  編輯  收藏 所屬分類: JavaFX 深入淺出

          FeedBack:
          # re: JavaFX 深入淺出(一)富客戶端應(yīng)用程序 RIAs
          2009-03-09 14:07 | bera
          刷新了下才知道最后這東西加載了這么久....  回復(fù)  更多評論
            
          # re: JavaFX 深入淺出(一)富客戶端應(yīng)用程序 RIAs
          2009-03-11 10:18 | lveyo
          看來這個很難與flex爭奪市場了  回復(fù)  更多評論
            
          主站蜘蛛池模板: 界首市| 海伦市| 望谟县| 永顺县| 祁连县| 汨罗市| 荔浦县| 周宁县| 屏东县| 通河县| 隆子县| 化隆| 金溪县| 蕲春县| 博白县| 微博| 扎鲁特旗| 昌黎县| 汉寿县| 玉环县| 稷山县| 高淳县| 恭城| 泸西县| 奉节县| 衡东县| 浦县| 阿尔山市| 额尔古纳市| 阜城县| 乐山市| 乐安县| 栾城县| 阆中市| 准格尔旗| 金华市| 岫岩| 巴林左旗| 台江县| 青海省| 台北县|