作為一種使基于 Web 的應(yīng)用程序更加生動(dòng)的方法,Asynchronous JavaScript + XML (Ajax) 和 Web 2.0 的概念已經(jīng)在開發(fā)社區(qū)中廣泛應(yīng)用,而且相對(duì)Web 1.0,Web 2.0 在用戶體驗(yàn)方面帶來了巨大提升,我們已經(jīng)很難接受瀏覽器從服務(wù)器上接受消息顯示的時(shí)候?qū)⒄麄€(gè)頁面重新加載一遍,即使是只需要更新小小的一塊區(qū)域也要重新加載,在網(wǎng)速慢時(shí),中間會(huì)出現(xiàn)白屏,這簡(jiǎn)直會(huì)讓人抓狂。隨著AJAX的出生和應(yīng)用,提交信息到服務(wù)器并顯示反饋的信息是,只需要上面的小圈轉(zhuǎn)幾圈,不需要刷新整個(gè)頁面,就能立刻看到結(jié)果了。
在AJAX應(yīng)用方面,Google應(yīng)該算是先行者了,Google的大多數(shù)服務(wù)都基于AJAX應(yīng)用的,比如GMail,GDoc,還有搜索框的動(dòng)態(tài)提示等。Google也推出了自己的AJAX框架,那就是GWT了,全名是Google Web Toolkit,采用了一種不尋常的方式進(jìn)行 Web 應(yīng)用程序開發(fā),它沒有采用客戶端和服務(wù)器端代碼庫的普通隔離,而是提供了一個(gè) Java API,這樣的話可以讓GWT支持用 Java 開發(fā)和調(diào)試 Ajax 應(yīng)用,該 API 允許創(chuàng)建基于組件的 GUI,GWT 支持 java.lang 和 java.util 包的子集,還支持 GWT 自身提供的 API。編譯后的 GWT 應(yīng)用程序由 HTML、XML 和 JavaScript 片段組成,從而在用戶的 Web 瀏覽器上顯示它們,與一般的 Web 應(yīng)用程序開發(fā)體驗(yàn)相比,使用 GWT 更接近于使用 Swing 或 SWT 進(jìn)行開發(fā)(其實(shí)風(fēng)格更偏向與Swing),它還試圖將 HTTP 協(xié)議和 HTML DOM 模型抽象出去。實(shí)際上,應(yīng)用程序最終幾乎總是會(huì)呈現(xiàn)在 Web 瀏覽器中。
GWT能如此引起大家的注意,我認(rèn)為由以下幾大方面的特性:GWT提供的組件庫使用戶可以很容易的開發(fā)出漂亮的UI;使用GWT,可以方便的實(shí)現(xiàn)客戶端和服務(wù)器端的通信,特別是使得異步通信變的非常簡(jiǎn)單;提供更方便的調(diào)試功能,可以使用Eclipse的Debug功能調(diào)試代碼;最吸引人的莫過于用戶在開發(fā)的時(shí)候不必?fù)?dān)心瀏覽器的兼容性問題,因?yàn)槭褂?/font>GWT開發(fā)出來的程序會(huì)支持IE、Firefox、Mozilla、Safari和Opera
我們可以在Google Code網(wǎng)站上下載最新的GWT開發(fā)工具包,截止目前為止,最新的GWT工具包為:gwt-windows-1.6.4,現(xiàn)在有一個(gè)Cypal Studio for GWT的插件,可以簡(jiǎn)化GWT開發(fā),而且值得一提的是Instantiations公司也就是開發(fā)SWT-Designer的那家公司提供了GWT-Designer開發(fā)工具,支持可視化開發(fā),非常的方便,又興趣開發(fā)GWT應(yīng)用的朋友可以嘗試一個(gè)GWT-Designer看看,個(gè)人覺得非常的棒。不過現(xiàn)在GWT Desinger不支持最新的1.6.*版本。
Gwt-windows工具包附帶了幾個(gè)GWT的Demo,在解壓目錄下的index.html文件中。打開index.html文件的最下面可以看到一下幾個(gè)Demo的鏈接
/GWT-Samples.JPG)
例子有入門級(jí)的Hello World,也有復(fù)雜的控件展示例子,我們來看一下用GWT開發(fā)的Mail例子:
例子提供了源代碼,我們可以將他們放入到Eclipse的工作區(qū)來研究,如果我們按照了GWT-Desinger插件的話,可以新建一個(gè)GWT 工程,系統(tǒng)會(huì)自動(dòng)創(chuàng)建一個(gè).gwt.xml文件,里面可以配置負(fù)責(zé)模塊啟動(dòng)的啟動(dòng)類,如果未按照GWT開發(fā)插件,也可以新建一個(gè)Java工程,然后將源代碼按照路徑復(fù)制到工程中,手工添加一個(gè).gwt.xml文件,再添加那些GWT的jar包到工程的構(gòu)建路徑上。
我們來研究一個(gè)GWT的配置文件,比如這里的com.google.gwt.sample.mail包下面的Mail.gwt.xml文件,內(nèi)容很簡(jiǎn)單,只是配置了模塊的啟動(dòng)類:
<module rename-to="mail">
<inherits name='com.google.gwt.user.User'/>
<entry-point class='com.google.gwt.sample.mail.client.Mail'/>
</module>
inherits name指定啟動(dòng)模式,這里是客戶端模式,entry-point就是這個(gè)模塊的啟動(dòng)類,這個(gè)指定的啟動(dòng)類必須實(shí)現(xiàn)EntryPoint接口,并實(shí)現(xiàn)onModuleLoad方法,這個(gè)方法在模塊啟動(dòng)時(shí)調(diào)用,我們可以在這個(gè)方法編寫創(chuàng)建界面的代碼。
在Mail.gwt.xml文件上右鍵彈出菜單選擇Run As -> GWT Hosted Mode Application,啟動(dòng)GWT應(yīng)用:
之后就能看到運(yùn)行結(jié)果了。
用了GWT后發(fā)現(xiàn),單純用GWT來開發(fā)系統(tǒng)的話比較的麻煩,畢竟正如它的名字一樣,這只是一個(gè)工具,還缺少一個(gè)框架的設(shè)計(jì)經(jīng)驗(yàn),如果能夠結(jié)合Struct或者JSF的話,估計(jì)發(fā)展?jié)摿?yīng)該不錯(cuò),畢竟GWT的背后是財(cái)大氣粗的Google和一伙天才。