使用 Google Web Toolkit 和 Eclipse Galileo 进行高性能 Web 开发
2009-12-13 00:00:00 来源:WEB开发网现在,我们将更改来自 GWT start 项目的代码(如清单 4 所示)。
清单 4. 原始 GWT start 项目代码final TextBox nameField = new TextBox();
nameField.setText("GWT User");
现在,我们将使用 Person 对象替代上面显示的硬编码字符串。这个更改如清单 5 所示。
清单 5. 修改为使用 Personfinal TextBox nameField = new TextBox();
final Person user = new Person("GWT", "User");
nameField.setText(user.getName());
这个更改很简单,但很显然这是一个对应用程序有用的抽象。但是,这可能会以牺牲性能为代价,对象创建和方法分配都可能会存在开销。让我们看看 GWT 编译器是如何提供帮助的。清单 6 显示原始代码的编译版本。
清单 6. 原始代码,编译为 JavaScriptnameField = $TextBox(new TextBox());
nameField.element['value'] = 'GWT User' != null?'GWT User':'';
现在,让我们看看清单 5 编译为 JavaScript 将会怎样,如清单 7 所示。
清单 7. 修改后的代码,编译为 JavaScript user = $Person(new Person(), 'GWT', 'User');
$setText_1(nameField, user.firstName + ' ' + user.lastName);
第一行代码调用 Person 类的 JavaScript 构造器,这是对 Java 代码的直接转换。第二行代码有一些变化,没有对 Person 实例调用 getName() 方法,而是将其内联到代码中。也就是说,对方法的调用已被方法本身所代替。这是许多编译器 — 过去的 C/C++ 和 Java 编译器 — 经常实施的优化,但 GWT 编译器充分利用了这种技巧来生成快速 JavaScript。
更多精彩
赞助商链接