段維瀚
現任緯創軟技術經理,具有多年團隊程式開發與教學的實務經驗。專長在Internet client/Server及Windows應用程式、3G智慧型手持式行動裝置(PDA、SmartPhone)軟體開發。


今年在美國舊金山舉辦的JavaOne大會,昇陽正式公開JavaFX,特別由Java社群心目中的「神」──James Gosling介紹這個酷炫的RIA技術。當負責展示的講師,利用JavaFXPad修改了JavaFX Script程式中的字串,螢幕上的訊息立即改變了內容,沒有編譯的過程、無需重新部署,現場響起一片掌聲。

至於JavaFX Mobile,網路上甚至有人拿它開發的手機應用與iPhone比較,酷炫效果毫不遜色。但我們也在展示的過程中,看出JavaFX現階段尚未推出視覺化的介面設計工具,再加上JavaFX Script和JavaFX Mobile是與Java不同的新語言,開發者的接受程度仍有待觀察。

緯創軟體技術經理段維瀚表示:「昇陽希望利用JavaFX搶回桌面應用程式以及行動裝置的主導地位。」那麼JavaFX成熟了嗎?發展的瓶頸又何在?在以下問答中將找到全部的答案。


JavaFX是一個建構於Java技術之上的運行環境,可以應用在桌面、行動裝置及電視等各方面。


問:JavaFX分為JavaFX Script與JavaFX Mobile,可否分別說明一下兩者的差異?
答:如你所言,JavaFX分為JavaFX Script與JavaFX Mobile,但兩者的技術毫無關聯。Java Mobile是昇陽購自SavaJe,可運行於手機的腳本語言,主要的目的是希望以後所有的移動式平臺都可以基於JavaFX Mobile這個平臺,開發各種應用。

而JavaFX Script則是昇陽的RIA解決方案,昇陽當初設計JavaFX Script主要的想法,就是一定要很簡單。所以JavaFX Script的語法,比Java簡單,是一種編寫在Java環境執行的腳本語言(Script Language)。

RIA的精髓中,最重要的就是GUI(Graphic User Interface,圖形使用者介面)的編撰。以往視窗及按鈕的設計,存在固定的樣式,但誰說按鈕一定要是方形呢?透過JavaFX,開發者可以自訂按鈕的樣式。

問:行動裝置的應用,不是已經有Java ME了嗎?JavaFX Mobile與Java ME又有何不同
答:手機市場的現況,是90%以上的手機程式都不是以Java開發的,而是Symbian C++的天下。而Java ME之所以無法普及的問題在於規格太多,而手機支援的完整程度不一。舉例來說,即使手機本身具備藍牙的功能,但如果沒有支援JSR 82的話,那麼就無法利用Java自行開發藍牙相關的應用。

手機應用若要普及,多元化與多樣化的發展是很重要的關鍵。由於JavaFX Mobile的語法比Symbian C++和Java兩者都簡單,而且提供許多的視覺酷炫效果,將有助於手機應用的發展。

問:為什麼手機對JSR(Java Specification Request)的支援會不一致?JavaFX Mobile又是如何解決這個問題?
答:Java為了要維持跨平臺的特性,所以不能直接叫用手機底層的機制──也就是原生API(Native API),只能藉由ME這個平臺與手機的硬體溝通。

然而各廠牌手機支援的JSR規格並不一致,致使每個號稱支援Java的手機,可開發的應用大不相同。至於每個人持有的手機到底支援哪些Java標準,只能上原廠的網站才能查到詳細的規格。

這種現象最直接的原因是成本,因為手機廠商必須向昇陽購買個別JSR規格的授權,而這些成本就會反應在售價上。目前手機廠商只有Sony Ericsson與Nokia對JSR的支援較完整多樣。

JCP組織為了解決這個問題,甚至推出JSR 248,把所有手機相關的規格包成一個套件,只要支援JSR 248,就等於同時支援多達17項的Java手機標準。但這未必能夠徹底解決Java ME的問題,因為未來仍會推出新的標準,因而衍生出版本差異的問題。

相較之下,JavaFX Mobile則是一套完整的平臺,可以把它燒在矽晶片中,而且手機製造廠商若都支援JavaFX Mobile,未來手機之間的互動會更容易,也會擁有更多的共通性資源。不過,JavaFX Mobile也同樣需要購買授權,也與JSR 248一樣,會有版本差異的考量,所以能否解決Java ME的問題,仍有待觀察。

問:JavaFX的競爭對手是微軟的WPF/Silverlight及Adobe的AIR/Flash嗎?那麼JavaFX的優勢在哪裏?
答:目前看起來是的,但我認為技術上的對手,主要是微軟,因為Flash目前的效能還是不好;若從普及率來看,對手是Adobe,因為Flash Player的安裝率很高,這是它的優勢。

而JavaFX的優勢在於它的圖形描述不是XML,而是一種稱為DSL(Domain-Specific Language)的語言。Flash與WPF是利用XML設定圖形介面的格式,XML的樣式設定是固定的;而JavaFX利用DSL設計介面,既然DSL則是程式,那麼描述的腳本是活的,開發者可以寫程式、執行邏輯判斷、下參數、制定方法,所以使用的彈性比較大。

問:目前支援JavaFX Script的開發工具只有NetBeans嗎?有沒有圖形使用者介面的設計工具及資料繫結的機制?
答:NetBeans和Eclipse已支援JavaFX Script,不過還不包含GUI設計工具。目前有一家ReportMill的公司針對JavaFX推出GUI設計工具,功能還算陽春。

我認為沒有GUI的設計工具,對JavaFX的影響很大,因為向量圖形缺少視覺化拖拉設計的工具,只能透過參數設定,很不直覺。一定要有良好的前端設計工具,才能吸引大家加入。

而資料庫繫結要靠資料庫廠商。資料庫廠商必須也為JavaFX實作串連資料庫的函式庫(Library)才行,現階段雖然可以透過JDBC、ODBC連線,但效能不好。成熟的應用必須要有原生的支援才行。

問:長遠看來JavaFX Script的影響力何在?發展的瓶頸何在?
答:我認為JavaFX勢必衝擊RIA工程師,因為用傳統的方法,要花費很大的精神才能達到相同的效果,也就是說,利用Java SE同樣也可以自訂按鈕的樣式,或設計酷炫的視覺效果,不過採用JavaFX Script可以事半功倍。但是,這不代表JavaFX前途大好。

新的語言還在發展階段,執行效率自然不高,而且也有啟動期間過長的問題。再加上,昇陽在推廣方面,還有很大的進步空間,若要讓全世界注意到JavaFX,就要「把事情鬧大」,然後推出教育訓練課程,因為課程是延續技術的方法。

就我的觀察,目前學JSP、Servlet等Web技術的人較多,而關注AWT、Swing等桌面應用的學員很少。JavaFX希望搶攻的就是桌面應用的市場,而Java這方面的人才顯然不多。

此外,Java在影音串流方面的多媒體技術必須加強,否則難與競爭對手抗衡,而且在RIA領域缺乏視覺化的GUI設計工具,將是非常大的問題,必須盡快推出成熟的設計工具。

我認為微軟和Adobe兩者的實力不容小覷,但有競爭才有進步,所以這對昇陽而言不是阻力,反而是成長的助力,競爭將會促使JavaFX發展得更好。整理⊙李延華

熱門新聞

Advertisement