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