Eclipse Ganymede:深入RAP
作為即將到來的計劃于6月25日發布的Eclipse Ganymede的一部分,InfoQ的報道將會覆蓋一系列Eclipse的子項目。今天,主角是RAP(Rich Ajax Platform),它正好發布了1.1版。InfoQ采訪了Jochen Krause以更多地了解RAP以及它所提供的功能。
為了描述RAP給Eclipse帶來的功能,Krause首先把Eclipse的用戶分成了兩類:一類是使用Eclipse IDE以及其工具來進行開發,一類是使用基于Eclipse平臺的應用。krause表示,對于IDE及工具用戶來說,開發工具將只會暴露RAP本身,而RAP的功能對于他們是透明的。與此不同的是,對于使用基于Eclipse平臺應用的用戶來說,他們現在將有能力運用基于OSGi的Eclipse插件開發模型,JFace以及Web版的SWT來構建支持AJAX的富Web應用。RAP的意圖類似于Eclipse富客戶端項目(RCP),主要的區別在于更精簡的API以及為Web應用的多用戶特性所做的增補。相對于RAP 1.0,1.1版擴展了API,引進了一系列諸如SWT的鼠標事件,JFace的圖像裝飾器以及工作臺的增強等等新特性——同時它也包含了Eclipse 3.4的新功能,比如安全的增強和widgets的阿爾法著色。
當被問到RAP將如何與諸如Dojo,GWT,OpenLaszlo等AJAX框架相搭配,krause談到:
RAP是一個專注于服務器端的AJAX框架并與OSGi,Equinox和Eclipse平臺有著緊密的關系。要與其它的框架相比并不容易,因為他們的關注點有所不同。Dojo,GWT,OpenLazlo的widgets工具箱非常出色,但卻不能提供一個廣泛的應用平臺。我們并不將其視為競爭對手,相反的是,他們或許將成為RAP后續版本客戶端表現的附加選項。RAP現有的客戶端表現是基于qooxdoo的,這同樣是個強大的AJAX框架。RAP和GWT都支持開發者用Java編寫,但其運行時模型卻大不相同,GWT是整個在瀏覽器執行的,而RAP的執行被分成了服務器端和客戶端兩部分。
Krause同時提到了RAP能夠將單一的代碼源(codebase)編譯成AJAX應用,或者編譯成RCP應用,并表示這并不像看上去那么復雜。編譯是針對于同樣的工作臺,JFace和SWT APIs來完成的,但當以Web應用來運行時,這些庫的常規版本都被替換成了其支持Web的版本。在運行時,這些應用的代碼都跑在服務器上,并有一個基于JavaScript的UI來向服務器傳送事件和向客戶端傳送結果。然而,Krause也指出了RAP開發者必需引起注意的三件事:
- Web是一個多用戶環境,所以在一個靜態對象中(如singleton)保持應用狀態是有可能引起問題的。
- 現有的RAP是RCP的一個子集——如果期望得到超出RAP支持的RCP附加功能,這里推薦的做法是通過插件來引入它們。
- 因為應用是在服務器上執行,開發者不應給每個用戶分配大量的內存(這同樣也是桌面應用的***實踐)
作為下一代SWT的一部分,RAP計劃提供完全基于AJAX的SWT實現。Krause指出并不是所有的平臺都支持SWT API,并且SWT是為桌面應用而設計的。盡管大多數的SWT API都能被實現,但像在畫布上描繪以及探測鼠標移動等功能還有待于瀏覽器在這些方面的進一步改善和提高。目前還欠缺的像拖拽和鍵監聽器等API已計劃在RAP的下一發布版本中,并將包含來自其它團隊的技術,例如SWT的用于StyledText widget等復雜組件的Java/Flex 交叉編譯。
關于RAP的遠景規劃,Krause表示將著力于兩個主要的領域:擴展RAP API以實現更多的RCP API,以及利用Eclipse平臺讓用戶從Web的視角獲得更加自然的用戶體驗。Krause進一步闡釋了第二點,RAP通過與可用性專家緊密協作,分析用戶交互,以解決來自易用性的挑戰。Krause同時看到了Web應用和桌面應用通過AJAX和RIA的融合將帶來的好處,并提到研究表明在Web環境里通過基于Eclipse Draw2D API來提供圖形編輯器是可行的。
當問到RAP將如何與E4集成并影響E4,Krause表示:
在瀏覽器運行IDE這一用例對我來說沒什么吸引力。JDT在我的機器上表現非常出色,我相信大多數開發者都有同樣的感覺。但這并不表示沒有Web技術讓我們變得更方便的用例。看一看需求,任務管理或是開發流程管理。這是我所能預見RAP在未來將會發揮作用的領域。但回到這個問題。Eclipse平臺團隊和RAP團隊在08年的EclipseCon上共同宣布了e4,并即將在Ganymede發布之后開始在這一平臺上的工作。RAP將會是眾多使應用具備Web能力的技術中的一分子,但并不會是其唯一的可能。我們同樣需要支持其它的附加于Eclipse平臺的web/JavaScript技術。我期待著孕育出更多的跨(領域)合作。RAP團隊將提供實現以及平臺對多用戶的專門技術支持,SWT團隊對諸如Flex/Silverlight等RIA平臺的交叉編譯進行了研究。更優化的風格是我們合作的另一關鍵領域。還有更多的東西沒有被提到,但那理應再對E4本身進行一次采訪了。
【編輯推薦】