關鍵字有 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