InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

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

作者 Ryan Slobojan 译者 张龙 发布于 2008年9月4日

领域
语言 & 开发
主题
JavaScript ,
Web框架 ,
Java ,
编译器
标签
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

译者 张龙 热衷于编程,乐于分享,对新技术有强烈的探索欲,对Java轻量级框架有一定研究。

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffrey Richter:Windows 8是微软的重中之重

Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。