InfoQ

新闻

GWT 1.5: 支持Java 5、性能改进及JavaScript增强

作者 Ryan Slobojan 译者 张龙 发布于 2008年9月4日 上午1时18分

社区
Java
主题
编译器,
JavaScript,
Web框架
标签
GWT

用来创建基于JavaScript web应用的以Java为中心的编译器Google Web Toolkit(GWT),今天(8月28日)它发布了1.5版。InfoQ有幸采访了其技术领导Bruce Johnson以了解关于该发布的更多信息及增加的新特性。

GWT 1.5的主要新特性包括:

  • Java 5语言支持——支持Java 5的特性如泛型、枚举、注解、自动装箱及可变参数列表
  • 编译优化——编译后的应用的性能再一次得到改进,现有的应用使用GWT1.5重新编译后速度将有很大提升
  • JavaScript增强——JavaScript的Overlay类型及新的高性能的DOM API提供了强类型的JavaScript对象和DOM编程,而这一切无需增加运行时成本
  • 默认的可视化主题——新版本提供了几个基于CSS的UI主题以初始化应用的感官(look-and-feel)

可以在这里查看完全的变化列表及发布信息

Johnson阐述了1.5版的几个变化:

[@gwt.eventArgs以前用作]针对RPC的基于javadoc的元数据。这是一个很棒的示例,因为当升级到GWT 1.5时,大多数人一开始都会遇到这个变化。RPC现在变得更简单也更丰富,因为RPC接口可以简单地指定泛型集合。另一个值得注意的事情就是GWT 1.5现在已经完全支持“long”原始数据类型了。在GWT 1.5之前,“long”并没有得到真正支持,因为JavaScript没有64位的整数类型,因此使用本地的JS number并不能表示“long”的全部范围。在GWT 1.5中,我们通过产生额外的代码来确保long的行为是完全正确的,尽管在性能上要比GWT 1.4稍微低点。这是不可避免的:我们必须在性能和正确性上做出抉择,显然我们会选择后者。如果你在GWT 1.4中大量使用了long类型并且速度要比数字范围更加重要的话,请考虑将这些变量改为“int”或者“double”以保持与GWT 1.4一样的速度。

Johnson还详细分析了编译器的变化——以此来支持1.5版:

GWT编译器前端重用了Eclipse提供的优秀的Java编译器。它处理所有的解析和语法检查,然后构建一个抽象的语法树(abstract syntax tree,即AST)。接下来我们使用该AST进行优化并生成JavaScript输出。Eclipse编译器让我们变得更加轻松,因为它处理了大量工作。但是,寻求在JavaScript中有效地表达新概念的方式,如枚举和增强的for循环,仍然花费了我们大量的工作。新的语言特性还对GWT库起到了积极的连锁反应,最明显的就是在RPC中能够使用泛型这个新功能,我们还对注解进行了扩展以在下面这些情况中代替基于javadoc的元数据方式:国际化、图像包和基准。 

Johnson说到GWT在web开发方面的主要竞争对手可以分为三类,同时也谈到了GWT该如何使自己有别于这些竞争对手:

  1. 非DOM的UI模型,如Flex——GWT使用浏览器的DOM模型而并不想代替它,同时Johnson指出GWT已经实现了一些非常棒的Flash和DOM UI的集成
  2. 服务器端的HTML生成器,如JSF——GWT对其是个补充,因为它是纯粹的客户端技术(除了RPC之外),并且它与服务器端组件集成的很好,然而Johnson指出更加丰富、更具状态的GWT客户端代码使我们可以构建更具响应性和流畅的UI,从而降低了对服务器端的等待
  3. AJAX库,如Dojo与jQuery——这儿的主要区别在于编程语言的选择;GWT使用现有的Java开发工具和编译器功能来产生高度优化的JavaScript代码。我们可以同时使用Java和JavaScript,然而Johnson说到Java使用的越多,GWT编译器的优化程度也就越高

当被问到GWT与Google的其他工程的整合时,Johnson说到:

关键点:GWT给予你很多,但是它不想变成一个“围墙花园(walled garden)”。任何抽象都会有遗漏的东西,所以最好接受这个事实。我们有意简化该抽象,这样你就可以触及JavaScript的具体细节,那么你就可以集成你喜欢的任何其他技术了。这种灵活性对于GWT本身和其用户来说都是一种保险单:你可以确定你能将任何客户端技术与GWT集成,同时我们(GWT开发小组)也不必显式地将其与开放的东西进行集成,因为你总是可以自己完成这件事而不必等我们来完成。对于我所提到的灵活性的示例,请参考Ray Cromwell的工作——Syndroid。 

Johnson还说有很多与GWT的集成,包括将其集成到Spring、Flash以及大量的Google Code projects

当被问到GWT未来的计划时,Johnson说到:

我们将继续关注性能改进以及将要从GWT孵化器中出来的几个新widget,包括一个日历控件和几个漂亮的表格widget。我们还在着手做其它完全新鲜的东西,如声明式的基于XHTML的UI模板机制。我们尚未计划好一切,但我期望在随后一个或两个版本中能将其加进来。顺便提一下,我希望它的开发周期比GWT 1.5更短。

Johnson还希望能将GWT作为Google App Engine的一个开发环境,要是这样的话,那真是太酷了。

查看英文原文:GWT 1.5: Java 5 Support, Performance Improvements and JavaScript Enhancements

深度内容

和Google互补的搜索引擎Wolfram|Alpha

Wolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。

SOA契约成熟度模型

本文说明了所推荐的契约版本管理设计策略是如何与SOA成熟度模型发生联系的。文章目的是为实现版本管理和可组合性提供一个路线图。

数据服务简介

Vijay Narayanan在这篇文章中对数据服务的几个方面进行了介绍,它们都是SOA实践者和数据架构师感兴趣的内容。本文对数据服务的几个方面进行了介绍,包括需求定义,基本原理和好处、范围、开发以及消费模式。

分块云计算

在本文中,Jimmy Nilsson描述了一种他在过去数年间观察到的一种正在缓慢成长的架构风格,他把这种风格称为“分块云计算”。

豆瓣网技术架构变迁

罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中。在本次演讲中,豆瓣的首席架构师洪强宁将与大家一起分享从上线时的单台服务器架构开始一直到现在的豆瓣架构变迁历程。

融合思想:深入探索S#arp架构

Billy McCafferty展示了S#arp架构,它在ASP.NET MVC框架的基础上,荟萃了当今的最佳实践,应用在ASP.NET Web应用程序的架构设计中。

王雷谈开源以及新兴市场计划

中国作为新兴市场中的新兴市场,是Sun在美国之外实施SSE(SUN Startup Essentials)项目重点关注的地区。在QCon Beijing 2009期间,InfoQ中文站有幸对此项目的负责人王雷先生进行了采访,探讨了关于开源、新兴市场、SSE等话题。

使用HTML5构建下一代的Web Form

HTML5 是由 WHATWG发起的,最开始的名称叫做Web Application 1.0,而后这个标准吸纳了Web Forms 2.0的标准,并一同被W3C组织所采用,合并成为下一代的HTML5标准。