作為一種使基于 Web 的應用程序更加生動的方法,Asynchronous JavaScript + XML (Ajax) 和 Web 2.0 的概念已經在開發社區中廣泛應用,而且相對Web 1.0,Web 2.0 在用戶體驗方面帶來了巨大提升,我們已經很難接受瀏覽器從服務器上接受消息顯示的時候將整個頁面重新加載一遍,即使是只需要更新小小的一塊區域也要重新加載,在網速慢時,中間會出現白屏,這簡直會讓人抓狂。隨著AJAX的出生和應用,提交信息到服務器并顯示反饋的信息是,只需要上面的小圈轉幾圈,不需要刷新整個頁面,就能立刻看到結果了。
在AJAX應用方面,Google應該算是先行者了,Google的大多數服務都基于AJAX應用的,比如GMail,GDoc,還有搜索框的動態提示等。Google也推出了自己的AJAX框架,那就是GWT了,全名是Google Web Toolkit,采用了一種不尋常的方式進行 Web 應用程序開發,它沒有采用客戶端和服務器端代碼庫的普通隔離,而是提供了一個 Java API,這樣的話可以讓GWT支持用 Java 開發和調試 Ajax 應用,該 API 允許創建基于組件的 GUI,GWT 支持 java.lang 和 java.util 包的子集,還支持 GWT 自身提供的 API。編譯后的 GWT 應用程序由 HTML、XML 和 JavaScript 片段組成,從而在用戶的 Web 瀏覽器上顯示它們,與一般的 Web 應用程序開發體驗相比,使用 GWT 更接近于使用 Swing 或 SWT 進行開發(其實風格更偏向與Swing),它還試圖將 HTTP 協議和 HTML DOM 模型抽象出去。實際上,應用程序最終幾乎總是會呈現在 Web 瀏覽器中。
GWT能如此引起大家的注意,我認為由以下幾大方面的特性:GWT提供的組件庫使用戶可以很容易的開發出漂亮的UI;使用GWT,可以方便的實現客戶端和服務器端的通信,特別是使得異步通信變的非常簡單;提供更方便的調試功能,可以使用Eclipse的Debug功能調試代碼;最吸引人的莫過于用戶在開發的時候不必擔心瀏覽器的兼容性問題,因為使用GWT開發出來的程序會支持IE、Firefox、Mozilla、Safari和Opera
我們可以在Google Code網站上下載最新的GWT開發工具包,截止目前為止,最新的GWT工具包為:gwt-windows-1.6.4,現在有一個Cypal Studio for GWT的插件,可以簡化GWT開發,而且值得一提的是Instantiations公司也就是開發SWT-Designer的那家公司提供了GWT-Designer開發工具,支持可視化開發,非常的方便,又興趣開發GWT應用的朋友可以嘗試一個GWT-Designer看看,個人覺得非常的棒。不過現在GWT Desinger不支持最新的1.6.*版本。
Gwt-windows工具包附帶了幾個GWT的Demo,在解壓目錄下的index.html文件中。打開index.html文件的最下面可以看到一下幾個Demo的鏈接

例子有入門級的Hello World,也有復雜的控件展示例子,我們來看一下用GWT開發的Mail例子:
例子提供了源代碼,我們可以將他們放入到Eclipse的工作區來研究,如果我們按照了GWT-Desinger插件的話,可以新建一個GWT 工程,系統會自動創建一個.gwt.xml文件,里面可以配置負責模塊啟動的啟動類,如果未按照GWT開發插件,也可以新建一個Java工程,然后將源代碼按照路徑復制到工程中,手工添加一個.gwt.xml文件,再添加那些GWT的jar包到工程的構建路徑上。
我們來研究一個GWT的配置文件,比如這里的com.google.gwt.sample.mail包下面的Mail.gwt.xml文件,內容很簡單,只是配置了模塊的啟動類:
<module rename-to="mail">
<inherits name='com.google.gwt.user.User'/>
<entry-point class='com.google.gwt.sample.mail.client.Mail'/>
</module>
inherits name指定啟動模式,這里是客戶端模式,entry-point就是這個模塊的啟動類,這個指定的啟動類必須實現EntryPoint接口,并實現onModuleLoad方法,這個方法在模塊啟動時調用,我們可以在這個方法編寫創建界面的代碼。
在Mail.gwt.xml文件上右鍵彈出菜單選擇Run As -> GWT Hosted Mode Application,啟動GWT應用:
之后就能看到運行結果了。
用了GWT后發現,單純用GWT來開發系統的話比較的麻煩,畢竟正如它的名字一樣,這只是一個工具,還缺少一個框架的設計經驗,如果能夠結合Struct或者JSF的話,估計發展潛力應該不錯,畢竟GWT的背后是財大氣粗的Google和一伙天才。