複製鏈接
請複製以下鏈接發送給好友

GWT

鎖定
Google Web Toolkit(GWT Web Toolkit,簡寫:GWT) [1]  ,是一種允許開發人員使用 Java 編程語言快速構建和維護複雜但性能高的 JavaScript 前端應用程序的工具集,能夠降低開發難度,尤其是與 Eclipse Google 插件結合使用時,優勢更明顯。有了 GWT可以使用 Java 編程語言編寫 AJAX 前端,然後 GWT 會交叉編譯到優化的JavaScript 中,而 JavaScript 可以自動在所有主要瀏覽器上運行。 [2] 
有了 Google Web Toolkit工具包 (GWT),可以使用 Java 編程語言編寫 AJAX 前端,然後 GWT 會交叉編譯到優化的JavaScript 中,而 JavaScript 可以自動在所有主要瀏覽器上運行。在開發過程中,您可以用 JavaScript按習慣的相同“編輯 - 刷新 - 查看”循環快速反覆,還有另一個好處就是能夠調試和逐行單步調試Java 代碼。準備好進行部署後,GWT 會將Java源代碼編譯到優化且獨立的 JavaScript 文件中。使用 Google Web 工具包可以輕鬆地為現有網頁或整個應用程序構建一個Widget。
中文名
Google網頁工具包 [1] 
外文名
Google Web Toolkit [2] 
縮    寫
GWT
運行平台
所有主要瀏覽器
公    司
谷歌

GWT項目信息

使用 Java 語言編寫 AJAX應用程序,然後編譯為優化的 JavaScript
與僅在文本級別運行的JavaScript Minifier 不同,GWT編譯器會在整個 GWT 數據庫中執行綜合性靜態分析和優化,通常生成的JavaScript 加載和執行均比等效手寫的 JavaScript 更快。例如,GWT編譯器可以安全地消除無用代碼 --極大的減少不使用的類別、方法、字段甚至方法參數 -- 以確保您編譯的腳本儘可能最小。另一個示例:GWT編譯器選擇性地內聯方法,消除方法調用的性能開銷。
交叉編譯提供了開發所需的可維護的提取和模塊性,而不會導致運行時性能損失。

GWT運行環境

GWT應用程序有兩種方式運行:
HostedModel
在Hosted Model方式下,Java程序並不會被編譯成JavaScript,GWT只是創造了一個類似瀏覽器的環境,直接運行使用GWT開發的程序。
這種模式最具生產力(這種模式下可以Debug所有的Java代碼), 所以開發環境通常使用Hosted Model,但是真正的程序執行不使用這種模式。
WebModel
WebModel就是將使用GWT編寫的Java程序整整編譯成JavaScript,在Web容器上運行,使用瀏覽器訪問的模式,這種方式只有在測試或者運行的時候才使用,每次對Java類的修改必須重新編譯這些Java類,之後重新部署應用。
所以生產力比較低。

GWT開發流程

編輯 Java 代碼,然後立即查看更改而無需重新編譯
在開發過程中,使用 GWT 的託管模式瀏覽器可以立即查看代碼更改。無需彙編譯為 JavaScript 或部署到服務器。只需進行更改,然後在託管模式瀏覽器中單擊“刷新”。
使用 Java 調試器單步調試當前 AJAX 代碼
在生產過程中,可以將代碼編譯為純 JavaScript,但是在開發階段,代碼將在 Java虛擬機作為字節碼運行。這意味着,當代碼執行處理鼠標事件等操作時,將獲得功能完整的 Java 調試。Java調試器可以執行的任何操作也應用於GWT 代碼,所以也可以執行斷點和單步調試等自然操作。
編譯和部署優化的、跨瀏覽器的 JavaScript
準備好進行部署後,GWT 會將 Java 代碼編譯成獨立的純 JavaScript 文件,任何網絡服務器都支持該文件。此外,GWT應用程序可自動支持IE、Firefox、Mozilla、Safari 和 Opera,而無需在代碼中進行瀏覽器檢測或特殊封裝。編寫相同的代碼後,GWT會根據每個用户的特殊瀏覽器將其轉換為最有效的 JavaScript。

GWT功能

通過非常簡單的 RPC 與服務器通信
GWT支持一組開放的傳輸協議,例如 JSON 和 XML,但 GWT RPC 使所有 Java 通信都特別輕鬆且有效。類似於傳統JavaRMI,只需創建一個用於指定您要調用的遠程方法的接口。從瀏覽器調用遠程方法時,GWT RPC將自動串行化參數,並調用服務器上的適當方法,然後反串行化客户端代碼的返回值。GWT RPC也將非常成熟,其可以處理多態類層次結構、對象圖循環,甚至可以跨網拋出異常
GWT-根據用户個人資料優化 JavaScript腳本下載
延時綁定是 GWT的一種功能,可以生成許多版本的編譯代碼,而在運行時自引導期間僅其中一個版本需要由特殊客户端載入。每個版本均以瀏覽器為基礎生成,並帶有應用程序定義或使用的任何其他軸。例如,如果要使用 GWT 的國際化模塊來國際化應用程序,GWT編譯器可能會根據每個瀏覽器環境生成各個版本的應用程序,例如“英文版 Firefox”、“法文版 Firefox”、“英文版 InternetExplorer”等,因此,部署的 JavaScript 代碼非常緊湊並且下載比在 JavaScript 中編碼然後聲明更快。
跨項目重複使用 UI 組件
通過合成其他 Widget 來創建可重複使用的 Widget,然後輕鬆地在面板中自動對他們進行佈局。GWT 展示應用程序可以提供 GWT 中各種 UI 功能的概述。要在其他項目中重複使用 Widget 嗎?只需將其打包以便他人在 JAR 文件中使用。
GWT-使用其他 JavaScript 庫和本機 JavaScript 代碼
如果 GWT 的類庫不能滿足您的需要,則可以使用 JavaScript 本地接口 (JSNI) 在 Java源代碼中加入手寫的JavaScript。使用 GWT 1.5,現在就可以為 GWT JavaScriptObject (JSO) 類創建子類以將Java“類覆蓋”創建到任意 JavaScript 對象上。因此,可以獲得將 JS 對象比擬為適當的Java類型(例如代碼完成、重構、內聯)而無需另外佔用內存或速度的好處。此功能可以優化使用 JSON 結構。
輕鬆支持瀏覽器的後退按鈕和歷史記錄
不,AJAX應用程序無需破壞瀏覽器的後退按鈕。使用 GWT,您可以通過輕鬆地為瀏覽器的後退按鈕歷史記錄添加狀態,來使您的站點更加有用。
有效的本地化應用程序
使用 GWT 功能強大的延時綁定技術來輕鬆創建有效的國際化應用程序和庫。此外,從 1.5 版起,標準 GWT Widget 開始支持雙向性。
使用選擇的開發工具提高生產力
由於 GWT 使用 Java,您可以使用所有喜歡的 Java 開發工具(Eclipse、IntelliJ、JProfiler、JUnit)來進行AJAX 開發。這使網絡開發人員可以控制自動化 Java 重構和代碼提示/完成的生產效率。此外,Java語言的靜態類型檢查使開發人員可以在編寫代碼時而非運行時找出一類 JavaScript錯誤(輸入錯誤、類型不匹配),在減少錯誤的同時提高生產率。沒有臨時變量發現的更多用户。最後,則可以利用基於 Java 的 OO設計模式和提取,由於編譯器優化,模式和提取易於理解和維護而無需用户承擔任何運行時性能損失。
使用 JUnit 測試代碼
GWT 與 JUnit 直接集成,使您可以在調試器和瀏覽器中進行單元測試,並且您甚至可以對異步 RPC 進行單元測試。
擴展或投稿 - Google Web 工具包是一種開源軟件
使用 Apache 2.0 許可,可獲取所有 GWT 代碼。如果您對投稿感興趣,請訪問使 GWT 變得更好。

GWT應用

GWT的應用還不是特別廣泛,包括google自己的gmail等系統都不是用GWT開發。但是在這一些電子領域裏GWT已經有廠商使用GWT開發設備上的用户界面,從而實現遠程本地一套代碼的效果。
參考資料