看板 java 關於我們 聯絡資訊
關鍵字有 link 的版本:http://blog.dontcareabout.us/2011/11/gwt.html errai 是由 JBoss 所維護的 GWT framework。 這篇的原文是張貼在 errai 的官方開發 blog 上, 內容以及基本論調與當初自己寫的〈GWT:這是什麼?幹什麼的?〉相似。 不過人家是搞 JavaEE 的 JBoss、我只是個小痞子, 所以還是翻譯一下,提供對照比較的機會。 ======== 原文網址:http://errai-blog.blogspot.com/ 2011/11/setting-record-straight-on-gwt.html 自從加入 Errai 團隊後,我對人們說了很多關於這個 project 的事。 每次在述說的時候,我發現我是在驅除人們對 GWT 的常見誤解、 以及講解 GWT 可以怎麼使用。 我也發現人們對於 GWT 的程式碼可以輕易地存取 browser 的原生環境感到驚訝, 雖然 GWT 在跨 browser 之間的實作細節處理的很好, 但 GWT 並不是建立一道高牆把你跟底層環境隔絕開來。 所以,GWT 是啥? GWT(Google Web Toolkit)是一個包含許多獨立部份的 project。 下面列出其中一部分: →一個將 Java 編譯成 JavaScript 的 compiler。 →一個 library 提供: →JavaSE 5 標準 library 的一個子集(尤其是 java.lang 與 java.util) →可程式化的 UI Framework(像 Swing 那樣) →原生 browser 功能——例如 JSON、XML 的操作、 XMLHttpRequest(AJAX 跟 Comet)、 以及 Canvas、Local storage、Audio、Video 這些 HTML5 的功能 ——的 Java wrapper。 →RPC 機制,前提是你的 application 後端是用 Java 寫的才能用。 (GWT RPC 沒辦法輕易改裝既有的 object model, 不過你可以把他用來建立 server-side 的 RPC 層) →GWT Designer,一個視覺化 layout 工具, 可產生類似 Swing 的 UI framework 程式碼。 →UiBinder,一套定義 UI 的系統。 (定義 layout 的檔案實質上是一個 XHTML,裡頭設定了 GWT 的 widget, 有命名的 element 會自動對應到 Java class 中的 field) →給 Eclipse、Maven、Ant 的 plugin, 以協助建立、測試 GWT 的 application、並除錯。 compiler 是使用 GWT 的基礎。其他的部份則不是必須的: 你用或不用、混合著用、用 3rd party 的替代方案或是自己搞一個出來用都可以。 那,GWT 不是什麼? 我們已經用清單的方式將 GWT 是什麼給凸顯出來,現在的重點是界定它不是什麼: →GWT 並沒有限定 UI 的建立方式。 尤其是用「browser 上的 Swing」思維來建立 UI,這完全不必要 ——除非你本來就想這麼作。 →GWT 不像 JSF 是 server-centric 的系統, GWT application 會編譯成一堆 HTML、CSS、圖檔、JavaScript 的靜態檔案。 application 在 browser 上頭運作,只有在需要的時候與 server 作資料傳輸。 如果你沒有用 GWT RPC,你的 application 就不用放在 Java web server 上。 →GWT 不需要任何 browser plugin (譯註:這裡是相對於 Flash 等技術實際使用時需要安裝 plugin。 雖然說開發 GWT 基本上也是可以不裝 browser plugin...... XD)。 編譯完的 application 就是一個或多個標準的 web 頁面。 →GWT 並不阻止你直接寫 JavaScript。 你可以用 JSNI的方式在 Java class 中寫 inline JavaScript、 你可以把 Java API 轉成 JavaScript、 你也可以在 Java 當中呼叫 JavaScript API。 →GWT 並沒有停止開發(譯註:我也寫了〈GWT and Dart〉的中文翻譯)。 這個謠言實在太誇張了。 如果 GWT application 只是簡化 JavaScript 跟 HTML,幹麼這麼麻煩咧? 感謝你問了這麼一個好問題。有許多令人信服的理由, 讓我在原始 HTML 與 JavaScript 上使用 GWT。 我會在未來的文章當中指出我特別喜歡的原因, 此外,我也希望你能思索一下這個問題: 「如果 GWT 把這些都處理好了,為甚麼 Errai 也要來插一腳呢? 」 -- 錢鍾書: 說出來的話 http://www.psmonkey.org 比不上不說出來的話 Java 版 cookcomic 版 只影射著說不出來的話 and more...... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.25.3.19