28/05/2005

Java 做的 Smart Client

最近這一年來,與 Rich Client 相關的技術字眼層出不窮,像是 Rich Internet Application(RIA)、Smart Client、Ajax 等等。一切的一切,似乎召告企業運算的戰場,正朝著 Flash、Javascript + XML、PHP,或是微軟的 Smart Client 的方向前進。而 Java 呢? 倒像是躲在角落的灰姑娘了。

但事情的進展,總開始於不顯眼的地方。我們部門最近將一個傳統的 Client/Server socket 程式作適度的更改:Socket 伺服器改成 Tomcat (或任何的 J2EE Web Container) HTTP 伺服器,Socket 連線改成 HTTP Object Stream。而 Client 端自動更新機制改成 Java Web Start。

結果呢? 我們創造了一個不折不扣的 Java 版 Smart Client。引用自「Smart client有多Smart?」Smart client 有下列特色:



* 使用區域端的資源:這裡指的包含硬體與軟體的資源,可能是利用區域端的CPU計算能力、記憶體,將生產力軟體連接至企業營運系統,或是所連接的裝置,如PDA、電話、RFID接收器…等。

* 連接:Smart client應用程式通常是大型分散式系統的一部分。例如,應用程式可能跟一系列的Web services溝通,不僅可以維護程式,也能提供部署與更新服務。

* 離線的能力:由於可善用區域資源,此類應用程式可讓使用者在缺乏網路連線或是不穩定的狀況下仍可運作。不論是出差需求或是移動工作者,利用桌上型電腦、筆記型電腦或PDA,都能在離線時持續運作,而當連線時,也可智慧的自動擷取或更新資料。

* 智慧型安裝與更新:這是與傳統Rich client最大的差別。以.NET framework為例,系統管理者便可透過檔案複製、下載,或是利用HTTP部署應用程式,同時可以保持自動更新版本的能力。

* 用戶端裝置的彈性:隨著數位裝置的蓬勃發展,不論是手機、PDA、遊戲機、車用電腦等,新的技術平台也將提供其支援Smart client應用程式架構的能力。


我們的 Swing 程式,的確是使用區域端的資源,進行一些計算與操作。而由於 Client 與 Server 俱使用 Java 開發,兩者間採用 Object Stream 溝通訊息的方式,比 Web Service 方便太多。至於離線的能力,傳統的 Swing 程式,本來就可以獨立於 Server、Browser 而存在。智慧型安裝與更新,那更是 Java Web Start 的強項。至於用戶端裝置的彈性,先不談跨裝置吧,我們的產品至少是跨作業平台的。

近來在 java.net Weblogs 上看到 J2SE 6.0 Mustang 的更新特性,以及 J2EE 將對 Ajax 提供的支援,Sun 在 JVM 改良上所下的用心(如 MVM)…在在令我繼續燃燒著對 Java 的熱情。希望 Java 越來越好!

順帶提一點:其實我對微軟所宣稱的 "ASP.NET Server Control" 可達到 "用戶端裝置的彈性" 是持保留態度的。設計過手機或 WAP 程式的人都知道,除非你的頁面極其簡單,否則是不太可能把同一組 ASP.NET 網頁,透過不同的 XSLT 或其他方式轉換,同時顯示在電腦螢幕及手機螢幕上。簡而言之,不同的使用介面,操作設計與邏輯完全不同,這不是只轉換顯示方式就能解決的問題。