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