好好生活,努力工作,天天向上!

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            46 Posts :: 1 Stories :: 178 Comments :: 0 Trackbacks

            RAP 可以讓開發人員使用JAVA API和按照Eclipse 插件的開發模式構建基于AJAXWeb 2.0應用程序,是的,你沒有看錯,其實RAP的工作原理是采用交叉編譯的方式將 Java 代碼生成JavaScript文件,底層基于Qooxdoo AJAX框架,這樣,我們就不必接觸JavaScriptCSS和處理Http的細節了,可以讓我們更關心程序的功能實現,想起來的覺得很幸福。

            RAPRCP 一樣,運行在Equinox框架上,EquinoxOSGI R4規范的實現,是一個非常優秀和成熟的OSGi框架,Eclipse 是通過這個框架實現靈活的擴展性和插件的熱部署。RAP也支持Eclipse的大部分擴展點,其實RAPRCP在架構上非常的類似,下圖分別為RCPRAP的架構圖:

             可以看出,這之間的整體架構差別不大,RCP是基于SWT的,RAP是基于RWT的,  RWT是實現了SWT功能的一個子集。其實這之間的使用方式都差不多。比如RWT也能和SWT一樣使用MVC的方式來創建表格。

             RAP可以使用Servlet 編譯,支持Servlet 2.32.42.5規范,并且可以通過打包成war文件部署在服務器上,客戶端通過瀏覽器直接訪問,不過這里的客戶端和服務器的實現也不一樣,。下面分別是服務器和客戶端的實現。

             服務器端:
           

          客戶端:

            

             客戶端的功能比較簡單,是通過Qooxdoo程序從服務器上更新信息并繪制出相應的組件顯示在瀏覽器中。基本上只是負責提交和更新顯示數據的功能,服務器端的功能就比較復雜,比如要管理插件的生命周期,尋找新的插件并加載和管理系統的資源,還要處理多用戶環境,在不同Sessions之間處理 OSGI bundles 的關系。

           
              RWT VS SWT

            控件:

              RWT實現了SWT 中的大部分基本控件,使用方法大同小異,也提供了CTabFolderCBanner自定義控件,RWT中的TreeTable功能和SWT的的差不多,支持排序、過濾和直接編輯單元格,使用方式也一樣的。可以直接從SWT代碼復制到RWT程序中使用。

             布局

              RWP同樣可以像SWT一樣使用布局,布局的數據在服務器上計算處理,我們基本上不用擔心跨瀏覽器出現布局混亂的問題了,目前RWP支持下面的布局:  

          1 GridLayout, 
          2 RowLayout
          3 FillLayout
          4 FormLayout
          5 StackLayout

            RWT中布局采用的計算算法和SWT一樣。

           事件處理:
            
          目前RWT支持以下事件類型: 

          1?SelectionListener
          2  ControlListener
          3?ShellListener 
          4?MenuListener
          5?ModifyListener
          6?VerifyListener ? 

           

            RWT附加功能:
            
          RWT提供了附加的API可以管理web 環境,我們可以調用RWT.javagetLifeCycle靜態方法獲得程序的生命周期控制類,直接操作程序的生命周期可以通過getResourceManager靜態方法獲得資源管理的控制類,手工管理系統資源,通過getSessionStore方法管理session資源;通過getRequest 方法處理用戶的請求getResponse處理服務器的響應。假如我們下面URL中得到請求的參數內容

          http://localhost:8080/rap?startup=foo&var1=value1&var2=value2 可以調用

          1 HttpServletRequest request = RWT.getRequest(); 
          2 String var1 = request.getParameter( "var1" ); 
          3 String var2 = request.getParameter( "var2" ); 


            RAP.JFace vs RCP.JFace

              RAPJFace實現了RCPJFace的所有視圖查看器,比如TableViewerTreeViewer等;

              支持大多數的視圖概念,像:ContentProviderLabelProviderColorProviderViewerFilterDecoratingLabelProvider

              支持文本裝飾,比如文本框前面加個小燈泡提示

              支持所有JFace的標準對話框,也支持自定義對話框。

              支持向導頁

              支持附加視圖,比如 OutlineProperties視圖

              編輯器支持:可使用多頁編輯器,支持繼承自ISaveablePart的視圖

              支持透視圖:可支持透視圖切換器,透視圖擴展點。

              支持Eclipse 3.3的菜單框架:包括CommandsHandler,支持采用表達式來控制菜單是否可見和是否可用

              支持Form表單樣式

              還有一個殺手級的特性: 支持在后臺運行Job,可以通過UI界面執行長時間任務,支持Progress View 視圖。

              如果你很喜歡RCPJFaceData Binding功能的話,在RAP中也可以實現,通過RAP的附加插件可以讓你擁有RCP的數據綁定功能,并且可以運用到目前所有的RAP控件中,

             也許你看到這里的時候,上面的信息有些過時了,那有什么辦法呢,Eclipse 組織的動作發展太快了,而且理念也非常的超前,應該聽說過E4吧,Eclipse 的下一代開發工具,可以在Web 瀏覽器中打開Eclipse 進行開發了。持續關注Eclipse的發展,希望NetBeans不要落后的太遠。
             

          posted on 2009-05-21 12:49 VWPOLO 閱讀(4042) 評論(2)  編輯  收藏 所屬分類: Web 開發

          Feedback

          # re: RAP 與 RCP的差別 2009-05-21 13:50 Oh God
          If Java is dead, then where is RAP's Server?  回復  更多評論
            

          # re: RAP 與 RCP的差別 2009-05-21 14:39 VWPOLO
          @Oh God
          我沒有希望Java掛掉,而是希望它發展的更好  回復  更多評論
            

          主站蜘蛛池模板: 辽中县| 五寨县| 岳阳市| 赤城县| 库车县| 巴东县| 泰安市| 永福县| 儋州市| 和田县| 霍林郭勒市| 射洪县| 元朗区| 昌宁县| 安阳市| 周宁县| 历史| 观塘区| 麻城市| 呼伦贝尔市| 禄劝| 资兴市| 延寿县| 白朗县| 温宿县| 常山县| 清镇市| 绥中县| 蓝山县| 旬阳县| 望奎县| 禹城市| 平罗县| 沧州市| 乌兰浩特市| 海丰县| 永顺县| 新泰市| 梁山县| 新密市| 来安县|