2006 年 2 月 20 日 Eclipse SWT(標(biāo)準(zhǔn)部件工具包)發(fā)展迅速,以其良好的性能和漂亮的外觀,已逐漸成為JAVA桌面應(yīng)用開發(fā)的首選控件包。一直以來SWT都是用來開發(fā)桌面應(yīng)用的,那這個(gè)優(yōu)秀的工具包能否直接用于開發(fā)WEB應(yīng)用呢?如今SmartSWT技術(shù)可以讓這個(gè)想法成為現(xiàn)實(shí),這對(duì)SWT來說,無疑又多了一個(gè)用武之地。 為了提高傳統(tǒng)WEB應(yīng)用的界面表現(xiàn)能力,RIA技術(shù)應(yīng)時(shí)而生,各種RIA平臺(tái)通過各種手段來提高豐富的圖形界面。如Bindows,它使用動(dòng)態(tài)HTML技術(shù)模擬Windows控件,還有Flex,直接使用Flash做為WEB應(yīng)用的表現(xiàn)層,以彌補(bǔ)DHTML技術(shù)的不足。 而SmartSWT則是基于SWT的RIA發(fā)布平臺(tái)。它可以將普通的SWT的應(yīng)用直接發(fā)布成為一個(gè)可通過客戶端瀏覽器訪問的WEB應(yīng)用,這樣就使通過SWT直接開發(fā) 富UI的WEB應(yīng)用成為了現(xiàn)實(shí)。不僅如此,基于SWT擴(kuò)展的許多擴(kuò)展包也大都可以直接使用,如JFace、GEF等。 SmartSWT和SmartClient不一樣,它并不是將SWT應(yīng)用程序下載到客戶端來運(yùn)行,而是和B/S模式的WEB應(yīng)用一樣,整個(gè)應(yīng)用程序是運(yùn)行在服務(wù)端的,只是運(yùn)行過程中將圖形界面實(shí)時(shí)顯示于客戶端的瀏覽器中,并將客戶端的操作事件自動(dòng)實(shí)時(shí)返回服務(wù)端,觸發(fā)服務(wù)端原SWT應(yīng)用的事件處理代碼進(jìn)行處理。服務(wù)端的SWT應(yīng)用所進(jìn)行的數(shù)據(jù)庫(kù)操作和文件操作都是相對(duì)于服務(wù)器端進(jìn)行的,而不像C/S應(yīng)用那樣,需要客戶端自己將數(shù)據(jù)按自定義的通訊協(xié)議傳回服務(wù)端再進(jìn)行處理。 SmartSWT底層的通訊是加密而且高效的,在內(nèi)網(wǎng)的客戶端打開服務(wù)端的SWT應(yīng)用,和原來直接在本機(jī)使用相比相差不多。相當(dāng)于將您機(jī)器的CPU降一檔后運(yùn)行應(yīng)用程序的感覺。 SmartSWT目前測(cè)試版本是3.1,表示支持SWT3.1的兼容應(yīng)用程序。 下圖是一個(gè)SWT應(yīng)用(SWT Control Example)在SmartSWT平臺(tái)部署后,客戶端通過IE瀏覽器訪問的效果: ![]()
SmartSWT的測(cè)試版僅支持Windows系統(tǒng),根據(jù)其用戶手冊(cè)的說明,它的服務(wù)端正式版將支持Linux、Unix等系統(tǒng)。SmartSWT安裝運(yùn)行非常簡(jiǎn)單,從www.smartswt.com下載SmartSWT31壓縮包并解壓,在解壓目錄下有三個(gè)子目錄SmartSWTClient、SmartSWTServer和WEB。 1. 打開SmartSWTClient目錄,運(yùn)行Setup.exe安裝客戶端,該程序?qū)⒃诳蛻舳税惭b一個(gè)定制的小型JAVA虛擬機(jī)。 2. 打開SmartSWTServer目錄,運(yùn)行Startup.bat,將運(yùn)行SmartSWT服務(wù)端,SmartSWT使用自帶的JAVA虛擬機(jī),所以您不用預(yù)先準(zhǔn)備它。 3. 如果您的客戶端和服務(wù)端都在同一臺(tái)機(jī)器,則直接進(jìn)入WEB子目錄,用IE打開index.htm文件,大約15秒鐘左右即可在IE瀏覽器中啟動(dòng)SmartSWT桌面,您這時(shí)可以通過Start菜單,啟動(dòng)內(nèi)置的DEMO程序體驗(yàn)一番。
開發(fā)SmartSWT應(yīng)用基本上和開發(fā)普通的SWT應(yīng)用相同。您可以使用Eclipse的SWT可視化插件來幫助創(chuàng)建一個(gè)SWT應(yīng)用程序,比較好的有Designer及Eclipse的VisualEditor等。 用于部署到SmartSWT服務(wù)器的SWT應(yīng)用在開發(fā)時(shí)有些小的限制,幸好這些通常都只是舉手之勞: 1. Display的獲取必須統(tǒng)一使用Display display = Display.getDefault()方法,不能使用new Deisplay()創(chuàng)建,SmartSWT目前尚不支持多Display的應(yīng)用,對(duì)大多數(shù)應(yīng)用來說這不是問題; 2. 創(chuàng)建的Shell最好必須調(diào)用shell.setSize()對(duì)其尺寸進(jìn)行初始化,否則在SmartSWT將默認(rèn)呈最小化狀態(tài); 3. 盡量不要使用非公開的API,因?yàn)橛猩倭糠枪_API,可能SmartSWT并沒有實(shí)現(xiàn)它; 4. 盡量不要使用其它JNI技術(shù)和ActiveX控件,不要使用SWING和AWT等非基于SWT的控件; 5. 避免初始化時(shí)一次創(chuàng)建幾十上百個(gè)控件,這樣會(huì)造成啟動(dòng)時(shí)間較長(zhǎng),應(yīng)在需要顯示時(shí)創(chuàng)建控件。
SmartSWT的部署一樣很簡(jiǎn)單,只需將調(diào)試通過的SWT程序的類文件,按包名目錄結(jié)構(gòu)原封不動(dòng)拷貝至SmartSWTServer的swtapps目錄,然后在SmartSWTServer.xml文件中按以下格式注冊(cè)一下,最后重啟SmartSWTServer,你就可以通過客戶端瀏覽器啟動(dòng)SmartSWT桌面,在Start->Programs菜單里啟動(dòng)它:
SmartSWT: RIA平臺(tái)的強(qiáng)有力競(jìng)爭(zhēng)者 SmartSWT同其它RIA平臺(tái)比較有一些獨(dú)特的優(yōu)勢(shì)。首先它是基于SWT的RIA平臺(tái),依托強(qiáng)大的Eclipse陣營(yíng),有許多擴(kuò)展技術(shù)可用,如JFace、GEF、EMF等,像UML設(shè)計(jì)器、報(bào)表、動(dòng)畫這樣的復(fù)雜圖形應(yīng)用都可以通過SWT實(shí)現(xiàn)后,發(fā)布到SmartSWT,從而在WEB上很輕松地使用這些桌面應(yīng)用獨(dú)有的表現(xiàn)技術(shù)。還有OpenGL、RCP這類應(yīng)用也有可能在將來得到支持,而且Eclipse不斷發(fā)展中,SWT相關(guān)技術(shù)的不斷成熟,都將以最快的速度同時(shí)運(yùn)用于WEB應(yīng)用。而且多年來用積累的用SWT開發(fā)的軟件,不需要修改,或只需少量的修改,即可同時(shí)擁有WEB版本。 其次,很多JAVA應(yīng)用開發(fā)者往往只對(duì)JAVA服務(wù)端的技術(shù)感興趣,而對(duì)表現(xiàn)層采用的HTML、JS、JSP這類標(biāo)簽語(yǔ)言和腳本技術(shù)并不喜歡。而事實(shí)上兼通JAVA技術(shù)、HTML和腳本技術(shù)的程序員也是少之又少。這也是造成許多傳統(tǒng)J2EE應(yīng)用的界面表現(xiàn)不佳的原因。由于SmartSWT直接采用了SWT,使的整個(gè)應(yīng)用的開發(fā)完全是純JAVA技術(shù)的開發(fā)過程,開發(fā)者不再需要與非面向?qū)ο蟮腍TML、JS、JSP等標(biāo)簽語(yǔ)言和腳本技術(shù)打交道,整個(gè)開發(fā)過程完全是桌面應(yīng)用的開發(fā)模式,基于事件驅(qū)動(dòng)。這使得應(yīng)用開發(fā)在技術(shù)人員的配備上要容易得多。 此外,發(fā)布到SmartSWT的SWT應(yīng)用,客戶端通過瀏覽器使用時(shí),仍然具有和原SWT一樣的具有Windows本地風(fēng)格的界面,具有和真正桌面應(yīng)用一樣的表現(xiàn)能力和事件機(jī)制,其表現(xiàn)能力和功能是Bindows以及Flex等技術(shù)無法真正模擬的。
盡管SmartSWT有諸多好處,但也存在一些局限性。 由于技術(shù)實(shí)現(xiàn)的原因,對(duì)網(wǎng)絡(luò)傳輸速度要求較高。SmartSWT在內(nèi)網(wǎng)內(nèi)訪問時(shí),其使用效果和本機(jī)上直接使用相差不多,但在外網(wǎng)上卻幾乎不具可用性。這決定了SmartSWT只能用于開發(fā)企業(yè)內(nèi)網(wǎng)應(yīng)用。 另外,和Flex類似,F(xiàn)lex要求客戶端的瀏覽器安裝一個(gè)Flash ActiveX控件,SmartSWT也有類似要求。SmartSWT客戶端需要在瀏覽器中實(shí)時(shí)表現(xiàn)服務(wù)端SWT應(yīng)用的圖形界面,并對(duì)用戶操作做出響應(yīng),這就需要在客戶端安裝一個(gè)特制的小型JAVA虛擬機(jī),并以ActiveX控件的形式在IE中使用。某些政府機(jī)關(guān)的敏感部門對(duì)這種方式 可能比較反感。
是否選擇SmartSWT,取決于您的軟件應(yīng)用范圍和客戶。如果您的軟件是內(nèi)網(wǎng)的企業(yè)應(yīng)用,您的用戶日常辦公使用的是Windows系統(tǒng),而且對(duì)客戶端安裝一個(gè)小小的虛擬機(jī)不介意的話,選擇SmartSWT無疑是上佳選擇 。它將使您的WEB應(yīng)用開發(fā)充分享受SWT開發(fā)的各種便利性和各方的豐富技術(shù)支持,完成普通WEB無法完成的功能。SWT界面的表現(xiàn)力和操作便利性,也會(huì)使客戶滿意度大大提高。 |
聯(lián)系客服