BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Ryan Slobojan 关注 0 他的粉丝 ,译者 张龙 关注 12 他的粉丝 发布于 2008年9月5日. 估计阅读时间: 6 分钟 | 都知道硅谷人工智能做的好,你知道 硅谷的运维技术 也值得参考吗?QCon上海带你探索其中的奥义

用来创建基于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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT