學習園地

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            3 Posts :: 14 Stories :: 0 Comments :: 0 Trackbacks

          使用SWT開發WEB應用

          Eclipse SWT(標準部件工具包)發展迅速,以其良好的性能和漂亮的外觀,已逐漸成為JAVA桌面應用開發的首選控件包。一直以來SWT都是用來開發桌面應用的,那這個優秀的工具包能否直接用于開發WEB應用呢?如今SmartSWT技術可以讓這個想法成為現實,這對SWT來說,無疑又多了一個用武之地。

          SmartSWT簡介

          為了提高傳統WEB應用的界面表現能力,RIA技術應時而生,各種RIA平臺通過各種手段來提高豐富的圖形界面。如Bindows,它使用動態HTML技術模擬Windows控件,還有Flex,直接使用Flash做為WEB應用的表現層,以彌補DHTML技術的不足。

          而SmartSWT則是基于SWT的RIA發布平臺。它可以將普通的SWT的應用直接發布成為一個可通過客戶端瀏覽器訪問的WEB應用,這樣就使通過SWT直接開發 富UI的WEB應用成為了現實。不僅如此,基于SWT擴展的許多擴展包也大都可以直接使用,如JFace、GEF等。

          SmartSWT和SmartClient不一樣,它并不是將SWT應用程序下載到客戶端來運行,而是和B/S模式的WEB應用一樣,整個應用程序是運行在服務端的,只是運行過程中將圖形界面實時顯示于客戶端的瀏覽器中,并將客戶端的操作事件自動實時返回服務端,觸發服務端原SWT應用的事件處理代碼進行處理。服務端的SWT應用所進行的數據庫操作和文件操作都是相對于服務器端進行的,而不像C/S應用那樣,需要客戶端自己將數據按自定義的通訊協議傳回服務端再進行處理。

          SmartSWT底層的通訊是加密而且高效的,在內網的客戶端打開服務端的SWT應用,和原來直接在本機使用相比相差不多。相當于將您機器的CPU降一檔后運行應用程序的感覺。

          SmartSWT目前測試版本是3.1,表示支持SWT3.1的兼容應用程序。

          下圖是一個SWT應用(SWT Control Example)在SmartSWT平臺部署后,客戶端通過IE瀏覽器訪問的效果:

           

          安裝運行

          SmartSWT的測試版僅支持Windows系統,根據其用戶手冊的說明,它的服務端正式版將支持Linux、Unix等系統。SmartSWT安裝運行非常簡單,從www.smartswt.com下載SmartSWT31壓縮包并解壓,在解壓目錄下有三個子目錄SmartSWTClient、SmartSWTServer和WEB。

          1. 打開SmartSWTClient目錄,運行Setup.exe安裝客戶端,該程序將在客戶端安裝一個定制的小型JAVA虛擬機。

          2. 打開SmartSWTServer目錄,運行Startup.bat,將運行SmartSWT服務端,SmartSWT使用自帶的JAVA虛擬機,所以您不用預先準備它。

          3. 如果您的客戶端和服務端都在同一臺機器,則直接進入WEB子目錄,用IE打開index.htm文件,大約15秒鐘左右即可在IE瀏覽器中啟動SmartSWT桌面,您這時可以通過Start菜單,啟動內置的DEMO程序體驗一番。

          開發SmartSWT應用

          開發SmartSWT應用基本上和開發普通的SWT應用相同。您可以使用Eclipse的SWT可視化插件來幫助創建一個SWT應用程序,比較好的有Designer及Eclipse的VisualEditor等。

          用于部署到SmartSWT服務器的SWT應用在開發時有些小的限制,幸好這些通常都只是舉手之勞:

          1. Display的獲取必須統一使用Display display = Display.getDefault()方法,不能使用new Deisplay()創建,SmartSWT目前尚不支持多Display的應用,對大多數應用來說這不是問題;

          2. 創建的Shell最好必須調用shell.setSize()對其尺寸進行初始化,否則在SmartSWT將默認呈最小化狀態;

          3. 盡量不要使用非公開的API,因為有少量非公開API,可能SmartSWT并沒有實現它;

          4. 盡量不要使用其它JNI技術和ActiveX控件,不要使用SWING和AWT等非基于SWT的控件;

          5. 避免初始化時一次創建幾十上百個控件,這樣會造成啟動時間較長,應在需要顯示時創建控件。

          部署SmartSWT應用

          SmartSWT的部署一樣很簡單,只需將調試通過的SWT程序的類文件,按包名目錄結構原封不動拷貝至SmartSWTServer的swtapps目錄,然后在SmartSWTServer.xml文件中按以下格式注冊一下,最后重啟SmartSWTServer,你就可以通過客戶端瀏覽器啟動SmartSWT桌面,在Start->Programs菜單里啟動它:

           

          <!-- Configuration of each SWT Application
            name: the name of the SWT Application
            mainClass: the main class to start the SWT Application
            startup: will it start just after the smartswt desktop started(haven't supported)
            description: the description of the SWT Application
          -->
          <Application name="ControlExample"
          mainClass="org.eclipse.swt.examples.controlexample.ControlExample">
              <startup>false</startup>
              <description>ControlExample Application</description>
          </Application>

          SmartSWT: RIA平臺的強有力競爭者

          SmartSWT同其它RIA平臺比較有一些獨特的優勢。首先它是基于SWT的RIA平臺,依托強大的Eclipse陣營,有許多擴展技術可用,如JFace、GEF、EMF等,像UML設計器、報表、動畫這樣的復雜圖形應用都可以通過SWT實現后,發布到SmartSWT,從而在WEB上很輕松地使用這些桌面應用獨有的表現技術。還有OpenGL、RCP這類應用也有可能在將來得到支持,而且Eclipse不斷發展中,SWT相關技術的不斷成熟,都將以最快的速度同時運用于WEB應用。而且多年來用積累的用SWT開發的軟件,不需要修改,或只需少量的修改,即可同時擁有WEB版本。

          其次,很多JAVA應用開發者往往只對JAVA服務端的技術感興趣,而對表現層采用的HTML、JS、JSP這類標簽語言和腳本技術并不喜歡。而事實上兼通JAVA技術、HTML和腳本技術的程序員也是少之又少。這也是造成許多傳統J2EE應用的界面表現不佳的原因。由于SmartSWT直接采用了SWT,使的整個應用的開發完全是純JAVA技術的開發過程,開發者不再需要與非面向對象的HTML、JS、JSP等標簽語言和腳本技術打交道,整個開發過程完全是桌面應用的開發模式,基于事件驅動。這使得應用開發在技術人員的配備上要容易得多。

          此外,發布到SmartSWT的SWT應用,客戶端通過瀏覽器使用時,仍然具有和原SWT一樣的具有Windows本地風格的界面,具有和真正桌面應用一樣的表現能力和事件機制,其表現能力和功能是Bindows以及Flex等技術無法真正模擬的。

          SmartSWT的局限性

          盡管SmartSWT有諸多好處,但也存在一些局限性。 由于技術實現的原因,對網絡傳輸速度要求較高。SmartSWT在內網內訪問時,其使用效果和本機上直接使用相差不多,但在外網上卻幾乎不具可用性。這決定了SmartSWT只能用于開發企業內網應用。

          另外,和Flex類似,Flex要求客戶端的瀏覽器安裝一個Flash ActiveX控件,SmartSWT也有類似要求。SmartSWT客戶端需要在瀏覽器中實時表現服務端SWT應用的圖形界面,并對用戶操作做出響應,這就需要在客戶端安裝一個特制的小型JAVA虛擬機,并以ActiveX控件的形式在IE中使用。某些政府機關的敏感部門對這種方式 可能比較反感。

          選擇SmartSWT,還是...

          是否選擇SmartSWT,取決于您的軟件應用范圍和客戶。如果您的軟件是內網的企業應用,您的用戶日常辦公使用的是Windows系統,而且對客戶端安裝一個小小的虛擬機不介意的話,選擇SmartSWT無疑是上佳選擇 。它將使您的WEB應用開發充分享受SWT開發的各種便利性和各方的豐富技術支持,完成普通WEB無法完成的功能。SWT界面的表現力和操作便利性,也會使客戶滿意度大大提高。

          參考資料

          條評論

            posted on 2014-04-24 14:33 丘比特 閱讀(304) 評論(0)  編輯  收藏 所屬分類: Java
            主站蜘蛛池模板: 锡林浩特市| 临潭县| 全州县| 航空| 华亭县| 砚山县| 上虞市| 新龙县| 嘉定区| 沐川县| 合阳县| 岫岩| 邳州市| 开鲁县| 南康市| 仪征市| 平定县| 阿拉善右旗| 乌拉特后旗| 会昌县| 万年县| 通州区| 沾益县| 江永县| 嵊州市| 托克逊县| 会宁县| 九龙县| 海门市| 泽普县| 原平市| 桐梓县| 阳原县| 武城县| 体育| 吕梁市| 鸡西市| 厦门市| 获嘉县| 麻江县| 堆龙德庆县|