编译

此时,你已经完成了 StockWatcher 的初始实现。到目前为止,你一直在开发模式下运行 StockWatcher。在开发模式下,你可以立即看到代码更改的效果,并使用 IDE 的调试工具。编译 StockWatcher 后,你可以在生产模式下运行和测试它。当应用程序在生产模式下运行时,它以纯 JavaScript 的形式存在,但不需要任何浏览器插件或 Java 虚拟机 (JVM)。

在本节中,你将

  1. 编译 Java 源代码。
  2. 在生产模式下测试 StockWatcher。
  3. 将 StockWatcher 部署到 Web 服务器。

你还会了解延迟绑定,GWT 的一种机制,它根据浏览器或可选的其他因素(如区域设置)提供仅需要的代码。

将 Java 编译为 JavaScript

要将 Java 源代码编译为 JavaScript,你将使用 GWT 编译器。

编译 StockWatcher 应用程序(使用 Eclipse)

  1. 在“包资源管理器”视图中,选择 StockWatcher 项目。
  2. 在工具栏中,单击“GWT 编译项目”按钮 icon
  3. 确认编译器选项,然后单击“编译”按钮。

在 Eclipse 控制台中,你将看到 GWT 编译器的输出,例如:

Compiling module com.google.gwt.sample.stockwatcher.StockWatcher
   Compiling 6 permutations
      Compiling permutation 0...
      Compiling permutation 1...
      Compiling permutation 2...
      Compiling permutation 3...
      Compiling permutation 4...
      Compiling permutation 5...
   Compile of permutations succeeded
Linking into war/stockwatcher.
   Link succeeded
   Compilation succeeded -- 30.504s

编译 StockWatcher 应用程序(不使用 Eclipse)

你可以直接从命令行编译 StockWatcher 应用程序

  1. 切换到 StockWatcher 目录。
  2. 执行:ant build

如果从命令行运行 GWT 编译器,可以通过修改 StockWatcher/build.xml 文件来指定 JavaScript 的样式、日志记录详细程度以及覆盖其他默认行为。

在生产模式下测试

编译应用程序后,可以通过在新的浏览器窗口中打开 StockWatcher.html 来在生产模式下运行它。StockWatcher 的外观和行为与开发模式下完全相同。真正的区别隐藏在幕后。现在,当你与 StockWatcher 交互时,它在浏览器中执行 JavaScript 代码,而不是在 JVM 中执行 Java 字节码。

提示:如果你启动了开发模式服务器,可以在生产模式下运行你的应用程序(在编译它之后),方法是在加载应用程序之前从 URL 中删除gwt.codesvr 参数。

将应用程序部署到 Web 服务器

此时,你可以简单地将 StockWatcher 部署到公共 Web 服务器,方法是上传输出目录中的文件。此初始版本不需要以任何方式与服务器通信;因此,它不需要 Web 服务器的任何特殊设置。任何可以提供静态网页的服务器都可以。

编译器输出

查看 GWT 编译器生成的的文件。在输出目录 StockWatcher/war/stockwatcher 中,你将看到一组类似于以下文件的 文件

1FCB598BF80A779999FF8774CEE9E224.cache.js
3880B6B217AFC67D6029EEBC02BDA651.cache.js
91F9F6B3066965A37C6ABEB2C3F0DE8C.cache.js
clear.cache.gif
compilation-mappings.txt
F22DFAA06F25138FB07D27BA32BBE3F1.cache.js
F90AE9A800297A50E40A5072EB33B368.cache.js
gwt
stockwatcher.devmode.js
stockwatcher.nocache.js

除了 StockWatcher/war 中的静态资源(如 HTML 主机页面、样式表和图像目录)之外,请注意其他文件名包含 GUID。这些文件包含 StockWatcher 的各种 JavaScript 实现。GWT 为你的应用程序生成多个实现,每个支持的 Web 浏览器都有一个唯一的排列。

使用延迟绑定优化运行时

在运行时,GWT 使用称为延迟绑定的机制来加载适合最终用户浏览器的正确排列。延迟绑定仅提供用户需要的代码,而不会提供更多代码。延迟绑定的好处是什么?由于每个排列都经过精心设计,以解决目标 Web 浏览器的错误和特性,因此使用延迟绑定可以

  • 对用户来说速度更快。你的应用程序下载不包含任何不必要的字节。应用程序不需要嗅探浏览器或为每个浏览器提供多个分支。
  • 对您来说速度更快。GWT 负责为每个浏览器生成正确的 JavaScript,这样您就不必花太多时间处理浏览器之间的差异。

除了浏览器检测之外,延迟绑定还可以为任意数量的其他变量生成应用程序的自定义版本。一个非常常见的例子是国际化。使用延迟绑定,GWT 为每种语言生成应用程序的单独实现,因此,例如,英语用户不必下载法语文本(反之亦然)。

你可以在教程 国际化 GWT 应用程序 中亲自尝试。

接下来做什么?

此时,你已经在开发模式和生产模式下测试了 StockWatcher。到目前为止,你应该对如何从头到尾开发一个仅具有客户端功能的 GWT 应用程序有了很好的了解。

要构建 StockWatcher 的初始实现并学习 GWT 的更多功能,请从以下教程中选择