作者PsMonkey (痞子军团团长)
看板java
标题[翻译] 为 GWT 端正视听
时间Sun Nov 27 16:11:07 2011
关键字有 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