作為即將到來的計劃於月日發布的Eclipse Ganymede的一部分InfoQ的報道將會覆蓋一系列Eclipse的子項目今天主角是RAP(Rich Ajax Platform)它正好發布了版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 版擴展了API引進了一系列諸如SWT的鼠標事件JFace的圖像裝飾器以及工作台的增強等等新特性——同時它也包含了Eclipse 的新功能比如安全的增強和widgets的阿爾法著色
當被問到RAP將如何與諸如DojoGWTOpenLaszlo等AJAX框架相搭配krause談到
RAP是一個專注於服務器端的AJAX框架並與OSGiEquinox和Eclipse平台有著緊密的關系要與其它的框架相比並不容易因為他們的關注點有所不同DojoGWTOpenLazlo的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 DrawD API來提供圖形編輯器是可行的
當問到RAP將如何與E集成並影響EKrause表示
在浏覽器運行IDE這一用例對我來說沒什麼吸引力JDT在我的機器上表現非常出色我相信大多數開發者都有同樣的感覺但這並不表示沒有Web技術讓我們變得更方便的用例看一看需求任務管理或是開發流程管理這是我所能預見RAP在未來將會發揮作用的領域但回到這個問題Eclipse平台團隊和RAP團隊在年的EclipseCon上共同宣布了e並即將在Ganymede發布之後開始在這一平台上的工作RAP將會是眾多使應用具備Web能力的技術中的一分子但並不會是其唯一的可能我們同樣需要支持其它的附加於Eclipse平台的web/JavaScript技術我期待著孕育出更多的跨(領域)合作RAP團隊將提供實現以及平台對多用戶的專門技術支持SWT團隊對諸如Flex/Silverlight等RIA平台的交叉編譯進行了研究更優化的風格是我們合作的另一關鍵領域還有更多的東西沒有被提到但那理應再對E本身進行一次采訪了
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28053.html