Google Web Toolkit (GWT) 译作Google 网页工具包,是一种开源 Java 软件开发框架,允许开发人员使用 Java 编程语言快速构建和维护复杂但性能高的 JavaScript 前端应用程序,从而降低了开发难度,尤其是与 Eclipse Google 插件结合使用时,优势更明显。
google web_GOOGLE WEB TOOLKIT -简介
GOOGLE WEB TOOLKIT
Google Web Toolkit (GWT) 译作Google 网页工具包,是一种开源Java软件开发框架,可以使不会使用第二种浏览器语言的开发人员编写Google 地图和Gmail等 AJAX应用程序时更加轻松。如今,编写动态网络应用程序是一个单调乏味且易于出错的过程;您需要花费 90% 的时间来处理网络浏览器和平台之间细微的不兼容性问题,而且由于 JavaScript 尚不完善,使得AJAX 组件的共享、测试和重复使用变得困难且不可靠。
GWT 可在使您避免这些麻烦的同时,还为您的用户提供同样的与标准兼容的动态体验。您只需使用 Java 编程语言编写您的前端,GWT 编译器会将您的 Java 类转换为与浏览器兼容的JavaScript和HTML。
google web_GOOGLE WEB TOOLKIT -工作原理
有了 Google 网页工具包 (GWT),可以使用 Java 编程语言编写 AJAX 前端,然后 GWT 会交叉编译到优化的 JavaScript 中,而 JavaScript 可以自动在所有主要浏览器上运行。在开发过程中,您可以用 JavaScript 按照您习惯的相同“编辑 - 刷新 - 查看”循环快速反复,还有另一个好处就是能够调试和逐行单步调试 Java 代码。准备好进行部署后,GWT 会将 Java 源代码编译到优化且独立的 JavaScript 文件中。使用 Google 网页工具包可以轻松地为现有网页或整个应用程序构建一个 Widget。
使用 Java 语言编写 AJAX 应用程序,然后编译为优化的 JavaScript
与仅在文本级别运行的 JavaScript Minifier 不同,GWT 编译器会在整个 GWT 代码库中执行综合性静态分析和优化,通常生成的 JavaScript 加载和执行均比等效手写的 JavaScript 更快。例如,GWT 编译器可以安全地消除无用代码 -- 极大的减少不使用的类、方法、字段甚至方法参数 -- 以确保您编译的脚本尽可能最小。另一个示例:GWT 编译器选择性地内联方法,消除方法调用的性能开销。
交叉编译提供了开发所需的可维护的抽象方法和模块性,而不会导致运行时性能损失。
google web_GOOGLE WEB TOOLKIT -开发工作流程
编辑 Java 代码,然后立即查看更改而无需重新编译
在开发过程中,使用 GWT 的托管模式浏览器可以立即查看代码更改。无需汇编译为 JavaScript 或部署到服务器。只需进行更改,然后在托管模式浏览器中单击“刷新”。
使用 Java 调试器逐步调试当前 AJAX 代码
在生产过程中,可以将代码编译为纯 JavaScript,但是在开发阶段,代码将在 Java 虚拟机中作为字节码运行。这意味着,当代码执行处理鼠标事件等操作时,将进行功能完整的正常 Java 调试。Java 调试器可以执行的任何操作也应用于 GWT 代码,所以自然也可以执行断点和单步调试等操作。了解详情
编译和部署优化的、跨浏览器的 JavaScript
准备好进行部署后,GWT 会将 Java 代码编译成独立的纯 JavaScript 文件,任何网页服务器都支持该文件。此外,GWT 应用程序可自动支持 IE、Firefox、Mozilla、Safari 和 Opera,而无需在代码中进行浏览器检测或特殊封装。编写相同的代码后,GWT 会根据每个用户的特殊浏览器将其转换为最有效的 JavaScript。
google web_GOOGLE WEB TOOLKIT -功能
通过非常简单的 RPC 与服务器通信
GWT 支持一组开放的传输协议,例如JSON 和 XML,但 GWT RPC 使所有 Java 通信都特别轻松且有效。类似于传统 Java RMI,只需创建一个用于指定您要调用的远程方法的接口。从浏览器调用远程方法时,GWT RPC 将自动对参数进行序列化,并调用服务器上的适当方法,然后对客户端代码的返回值进行反序列化。GWT RPC 也将非常成熟,它可以处理多态类层次结构、对象图循环,甚至可以跨网引发异常。
根据用户个人资料优化 JavaScript 脚本下载
延时绑定是 GWT 的一种功能,可以生成许多版本的编译代码,而在运行时自引导期间仅其中一个版本需要由特殊客户端载入。每个版本均以浏览器为基础生成,并带有应用程序定义或使用的任何其他轴。例如,如果要使用 GWT 的国际化模块来国际化应用程序,GWT 编译器可能会根据每个浏览器环境(例如“英文版 Firefox”、“法文版 Firefox”、“英文版 Internet Explorer”等)来生成各个版本的应用程序。因此,部署的 JavaScript 代码非常紧凑并且下载比您在 JavaScript 中编写 if/then 语句更快。
跨项目重复使用 UI 组件
通过组合其他 Widget 来创建可重复使用的 Widget,然后轻松地在面板中自动对他们进行布局。GWT 展示应用程序可以提供 GWT 中各种 UI 功能的概述。要在其他项目中重复使用 Widget 吗?只需将其打包以便他人在 JAR 文件中使用。
使用其他 JavaScript 库和本机 JavaScript 代码
如果 GWT 的类库不能满足您的需要,则可以使用 JavaScript 本机接口 (JSNI) 在 Java 源代码中加入手写的 JavaScript。使用 GWT 1.5,现在就可以为 GWT JavaScriptObject (JSO) 类创建子类,以便在任意 JavaScript 对象上创建 Java“类覆盖”。因此,可以获得将 JS 对象比拟为适当的 Java 类型(例如代码完成、重构、内联)而无需另外占用内存或速度的好处。通过这一功能,您能够以最佳方式使用 JSON 结构。
轻松支持浏览器的后退按钮和历史记录
不,AJAX 应用程序无需破坏浏览器的后退按钮。使用 GWT,您可以轻松地为浏览器的后退按钮历史记录添加状态,来使您的站点更便于使用。
高效地对应用程序进行本地化
使用 GWT 功能强大的延时绑定技术来轻松创建高效的国际化应用程序和库。此外,从 1.5 版起,标准 GWT Widget 开始支持文字左到右和右到左的双向性。
使用选择的开发工具提高生产力
由于 GWT 使用 Java,因此您可以使用所有喜欢的 Java 开发工具(Eclipse、IntelliJ、jprofiler、JUnit)来进行 AJAX 开发。这样,通过自动 Java 重构和代码提示/完成,网络开发人员可以提高生产率。此外,Java 语言的静态类型检查使开发人员可以在编写代码时而非运行时找出一类 JavaScript 错误(输入错误、类型不匹配),在减少错误的同时提高生产率。而且不会再有会被用户发现的变量意外赋值。最后,您可以利用基于 Java 的面向对象设计模式和抽象方法,由于编译器已优化,使得这种模式和抽象方法易于理解和维护,而用户不需要承担任何运行时的性能损失。
使用 JUnit 测试代码
GWT 与 JUnit 直接集成,使您可以在调试器和浏览器中进行单元测试,并且您甚至可以对异步 RPC 进行单元测试。
扩展或投稿 - Google 网页工具包是一种开源软件
使用 Apache 2.0 许可,可获取所有 GWT 代码。如果您对投稿感兴趣,请访问进一步完善 GWT。
google web_GOOGLE WEB TOOLKIT -优势
Google 网页工具包 (GWT) 允许开发人员使用 Java 编程语言快速构建和维护复杂但性能高的 JavaScript 前端应用程序,从而降低了开发难度,尤其是与 Eclipse Google 插件结合使用时,优势更明显。
google web_GOOGLE WEB TOOLKIT -使用入门
安装 Google 网页工具包
使用Eclipse进行安装
如果您使用 Eclipse IDE,则可以使用Eclipse Google 插件安装 Google 网页工具包。重新启动 Eclipse 后,便可以创建新的 GWT 应用程序了。
不使用 Eclipse 进行安装
如果您还没有 Java SDK,可以安装Java SDK。
Mac 用户注意事项:GWT 托管模式使用 32 位SWT绑定,并且需要 32 位JVM。不过,用于 Mac 的Java 6使用 64 位 JVM。要使用 GWT 托管模式,您需要继续使用 Java 5。在本常见问题解答中,您可以进一步了解 32 位要求。
如果您还没有Apache Ant,可以下载 Apache Ant 并解压。
下载 Google 网页工具包并解压。
在 Windows 上,可以从压缩文件夹 gwt-windows-1.6.4.zip 中解压出这些文件(或使用 WinZip 之类的程序解压出这些文件)。在 Mac 或 Linux 上,您可以使用类似于以下所示的命令来解压包:
tar zxvf gwt-mac-1.6.4.tar.gzGWT 没有安装程序应用程序,运行和使用 GWT 所需的所有文件都位于解压的目录中。使用 GWT 所需的主要应用程序是 webAppCreator,我们将会在下文中进行介绍。先构建 GWT 随附的一个示例应用程序,学习起来可能会更容易。
构建示例应用程序
所有示例应用程序均位于 GWT 包中的 samples/ 目录中。每个示例都有一个 Ant 构建脚本 build.xml,您可以在托管模式下启动该脚本,也可以将其编译为 JavaScript 和 HTML 以在网页模式下运行。
Mail 应用程序
在托管模式下运行
要在托管模式下运行 Mail 示例,请导航至 samples/Mail/ 目录并执行以下命令: ant hosted
该命令会执行 samples/Mail/build.xml 中“hosted”Ant 目标,这样会打开 GWT 浏览器且在浏览器内部运行 Mail 应用程序:如右图
由于您是在托管模式下运行,因此应用程序会在 Java 虚拟机 (JVM) 中运行。这是调试应用程序时通常使用的模式。
在网页模式下运行
要在网页模式下运行应用程序,请执行以下命令编译应用程序: ant build
GWT 编译器
Ant 的执行目标“build”会调用 GWT 编译器,GWT 编译器根据 samples/Mail/war/ 子目录中的 Mail Java 源代码生成若干 JavaScript 和 HTML 文件。要查看该应用程序,请在您喜欢的网页浏览器中打开 samples/Mail/war/Mail.html 文件。
由于您已编译该项目,因此现在运行的是真正的 JavaScript 和 HTML,它们在 IE、Firefox、Safari 或 Opera 中都可以运行。如果您要将 Mail 示例项目部署到实际应用中,则应将 samples/Mail/war/ 目录中的文件分发到网页服务器上。
进行少许更改
Mail 的源代码位于 samples/Mail/src/ 子目录中。请关闭浏览器窗口,然后在文本编辑器中打开 samples/Mail/src/com/google/gwt/sample/mail/client/Shortcuts.java 文件。该文件的第 54 行是构建“Mail”标签的代码。
add(images, new Mailboxes(images), images.mailgroup(), "Mail");将最后的参数 "Mail" 更改为 "My Mail":
“My Mail”
add(images, new Mailboxes(images), images.mailgroup(), "My Mail");现在,保存文件并在托管模式应用程序中点击“刷新”便可看到刚才所做的更改了。如果您先前已关闭了托管模式,请重新运行 ant hosted 进入该模式。第一个标签现在应该已变为“My Mail”,而不再是“Mail”了。
从头开始创建应用程序(不使用 Eclipse)
GWT 附带了一个命令行实用工具,名为 webAppCreator。该实用工具可以自动生成启动 GWT 项目所需的所有文件,还可以生成 Eclipse 项目文件和启动配置文件,便于在托管模式下调试,具体情况如下所述。
您可以使用以下命令创建新的应用程序 MyApplication:
webAppCreator -out MyApplication com.mycompany.MyApplicationwebAppCreator 脚本会在 MyApplication/ 中生成若干文件,包括 MyApplication/src/com/mycompany/client/MyApplication.java 类中的某些“Hello, world”基本功能。该脚本还会生成 Ant 构建脚本 MyApplication/build.xml,就像上述示例应用程序一样。
webAppCreator
要在托管模式下运行新建的应用程序,请转到 MyApplication/ 目录并执行以下命令: ant hosted
请尝试编辑 MyApplication/src/com/mycompany/client/MyApplication.java 和 MyApplication/war/MyApplication.html 文件,看看它们使应用程序发生哪些变化。
从头开始创建应用程序(使用 Eclipse)
使用插件
Eclipse Google 插件包含用于创建 GWT 应用程序的向导。安装该插件并重新启动 Eclipse 后,请执行以下创建启动程序应用程序的步骤。
在工具栏中,点击“新建网络应用程序项目”按钮。
填写项目详细信息:
输入项目名称“MyApplication”。
输入包“com.mycompany”。
确保已选中“Use Google Web Toolkit”且选择了“Use default SDK (GWT)”。
(可选步骤)如果您使用的是Google App Engine,请确保已选中“Use Google App Engine”且选择了“Use default SDK (App Engine)”。
如果您在安装 Eclipse Google 插件时没有安装 SDK,则应点击“Configure SDKs...”以指定 GWT(和 App Engine SDK)解压后所在的目录。
点击“Finish”按钮。
不使用插件
如果您不想使用 Eclipse Google 插件,可以导入使用上文所述的使用 webAppCreator 创建的项目。要在 Eclipse 中打开项目,请执行以下操作:
Eclipse 工作空间
从“File”菜单中,选择“Import...”菜单选项。
通过“常规”>“将现有项目导入工作空间”来选择导入源。点击“Next”按钮。
浏览至使用 webAppCreator 创建的 MyApplication 目录,将其用作根目录。点击“Finish”按钮。
GWT 项目便会载入到 Eclipse 工作空间中: 如右图
只需点击窗口顶部的绿色“运行”按钮,便可在托管模式下启动您的项目了。