RIA說文解字

文章日期:12/31/2007 01:00 pm
RIA說文解字

為了盡量和Web相容,RIA最基本的作法是,將執行環境設計成瀏覽器的插件。這聽起來就像是十多年前的Java Applet,儘管當時尚未出現RIA這個流行詞彙。技術市場就是這樣,幾年之後你會看到舊的觀念和技術捲土重來,只是名字變了,但換湯不換藥。


近年來,RIA是一個相當時髦的名詞。RIA的R與A分別是Rich與Application的意思,至於I的解釋比較多種,依據各個廠商強調重點不同, I可以做Internet、Interactive或Interface解,分別強調網路連結、高互動以及美觀的介面。我認為RIA的I應該同時兼具這三者,欠缺任何一個技術,都不應該稱為RIA。

RIA是Web革命浪頭下的新技術,因此不免要和Web扯上關係。而RIA之所以強調Rich,正是因為傳統Web技術太過於Poor,畢竟以往的Web 使用被動的網路連結(採用pull技術)、互動性不佳(任何動作都要送到後端,甚至整個頁面換掉)、介面不好看(HTML是文字導向的介面語言)。

RIA是一種開發技術,而不是一種末端應用。其中,所謂的Rich是一種經過比較的結果,和靜態網頁技術相比(這裡指的靜態網頁技術,是指瀏覽器端沒有執行任何程式),Ajax稱得上Rich,因此有些人也會將Ajax歸類為RIA。但是和WPF/Silverlight、AIR/Flash等富豪之家相比,可就是小巫見大巫,Ajax只能算是家境小康。

真正Rich的應用,在RIA一詞出現之前,我們老早就看過許多。那些極度耗費3D顯示卡和處理器運算能力、聲光效果極佳、讓青少年在網咖流連忘返的線上遊戲,可說是Rich Internet/Interaction/Interface的極致,為何我們不稱這些線上遊戲為RIA?

重點在於它們沒和Web扯上關係。因此,當RIA的I被解釋成Internet時,指的可不是TCP/IP而已,而必須是標準的Web Protocol(也就是HTTP)才算是。當RIA的I被解釋成Interface時,也要盡量和Web相容。

為了盡量和Web相容,RIA最基本的作法是,將執行環境設計成瀏覽器的插件(Plug-in),讓各式各樣的應用可以在上面執行。

這聽起來根本就是十多年前的Java Applet,儘管當時尚未出現RIA這個流行詞彙。Java一開始之所以吸引大家的注意,正是因為Java Applet。但是由於諸多問題(啟動時間太長、執行效能太差、為Applet簽署太麻煩),Java Applet終究是未能在市場上大放異彩。

技術市場就是這樣,幾年之後你會看到舊的觀念和技術捲土重來,只是名字變了,但換湯不換藥。隨著Flash的成功,Adobe不滿足於Flash只能做動畫,希望讓Flash能成為有威力的程式平臺,於是他們提出RIA的觀念,並預計在2008年初推出AIR(Adobe Integrated Runtime)。事實上,AIR/Flash和Java Applet的概念是一樣的。

接著,微軟也進入RIA市場,推出WPF/Sliverlight;然後,Java也準備捲土重來,推出JavaFX。一時之間,RIA熱鬧滾滾。

這RIA三強(或者說兩強一弱)還有3個共同的特點:

● 在瀏覽器內/外皆可執行
● 上線和離線皆可執行
● 都意圖同時支援各種裝置(PC、手機……)

對於「開發者」來說,這三者共同的特點是:Client端的「GUI描述」和「程式邏輯」分開,「GUI描述」改用宣告(declarative)的方式。但是三者的開發理念仍有不同之處,從語言的角度來看,JavaFX比另外兩者先進,因為JavaFX使用DSL(Domain-Specific Language),而非XML。JavaFX是專為設計GUI而打造的語言。

目前Flash的普及率約96 %,Java約87 %。至於.NET,我找不到相關的數據,但推估應該小於50 %,因此,短期內Adobe應該還是贏家。但是,依據歷史經驗,微軟總有後發先至的本事,我估計3、5年後,WPF/Silverlight可能會勝出。至於JavaFX,雖然是好語言,但搭配不好的平臺和不好的行銷,以及落後對手的時程,未來發展恐怕不樂觀。

儘管大家都將RIA的目光放在Adobe、微軟、Java的三大技術上,但我希望大家不要忽略了一些小廠商推出的優秀RIA技術,其中,我尤其推崇 Curl(www.curl.com),我稱它為「RIA的另類療法」。

你可能會很喜歡Curl的技術,但是用Curl開發商業應用之前還是要三思。因為一旦每個新客戶都必須下載安裝Curl的執行環境,多一道手續就可能少一些客戶。另外,Curl的商業授權相當貴,這年頭敢把開發工具軟體定價這麼貴,需要相當程度的「勇氣」,或許這也反映出它們對於自己產品的信心。

你可能會納悶,為何你喜愛的某Open source語言(例如Ruby),不推出Plug-in,讓你可以寫RIA程式。重點在於,大多數open source語言沒有自己的GUI套件,都是依賴外部的套件(例如TK),這些外部GUI套件又相當龐大,根本不適合當作RIA Solution。所以,想開發RIA系統,你還是得從目前檯面上的技術中做抉擇。

蔡學鏞-專職作家
清華大學資訊工程碩士,曾任華碩集團軟體工程師、元智大學資訊系講師、美商歐萊禮出版社技術編輯、臺灣微軟特約專欄作家。