编译
此时,你已经完成了 StockWatcher 的初始实现。到目前为止,你一直在开发模式下运行 StockWatcher。在开发模式下,你可以立即看到代码更改的效果,并使用 IDE 的调试工具。编译 StockWatcher 后,你可以在生产模式下运行和测试它。当应用程序在生产模式下运行时,它以纯 JavaScript 的形式存在,但不需要任何浏览器插件或 Java 虚拟机 (JVM)。
在本节中,你将
你还会了解延迟绑定,GWT 的一种机制,它根据浏览器或可选的其他因素(如区域设置)提供仅需要的代码。
将 Java 编译为 JavaScript
要将 Java 源代码编译为 JavaScript,你将使用 GWT 编译器。
编译 StockWatcher 应用程序(使用 Eclipse)
- 在“包资源管理器”视图中,选择 StockWatcher 项目。
- 在工具栏中,单击“GWT 编译项目”按钮 。
- 确认编译器选项,然后单击“编译”按钮。
在 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 应用程序
- 切换到 StockWatcher 目录。
- 执行:
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 的更多功能,请从以下教程中选择