写点什么

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

  • 2008-09-04
  • 本文字数:1949 字

    阅读完需:约 6 分钟

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

2008-09-04 01:18690
用户头像

发布了 88 篇内容, 共 264.2 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

长三角生物医药产业加速跑,飞桨螺旋桨为创新药企、医药技术伙伴装上AI大模型引擎

飞桨PaddlePaddle

飞桨 生物医药

2023高质量Java面试题集锦:高级Java工程师面试八股汇总

采菊东篱下

Java 面试

直播预告 | 博睿学院:全面升级自适应AIOps

博睿数据

可观测性 AIOPS 智能运维 博睿数据 博睿学院

今日分享丨5分钟快速了解Containerd

inBuilder低代码平台

云原生

基于 TiDB + Flink 实现的滑动窗口实时累计指标算法

PingCAP

MySQL 数据库 开源 分布式 TiDB

长三角生物医药产业加速跑,飞桨螺旋桨为创新药企、医药技术伙伴装上AI大模型引擎

飞桨PaddlePaddle

飞桨 科学计算 飞桨螺旋桨 文心生物计算大模型

QUIC协议在天翼云CDN全站加速产品中的应用

天翼云开发者社区

云计算 QUIC

开源家装小程序

源字节1号

开源 软件开发 前端开发 后端开发 小程序发开

急吗?光急可没用呀!满满干货,两小时速成,别搁那干瞪眼了!

加入高科技仿生人

低代码 数字化 OA 数字转型

分享:两年两度升级数据库,我们经历了什么

OceanBase 数据库

数据库 oceanbase

百度王海峰团队荣获吴文俊人工智能科技进步奖特等奖,成果已应用于文心一言

飞桨PaddlePaddle

应用在虚机和容器场景下如何优雅上下线

华为云开源

微服务 云原生

极狐(GitLab)重磅发布新产品「极狐星」,让研发效能看得清,算得准,成就企业精英效能管理

极狐GitLab

DevOps 研发管理 研发效能 极狐GitLab 研发效能度量

PostgreSQL-HA 高可用集群在 Rainbond 上的部署方案

北京好雨科技有限公司

postgresql Kubernetes 云原生 rainbond 企业号 5 月 PK 榜

二层交换机和三层交换机到底区别在哪?

wljslmz

交换机 三周年连更

您的数据可以压缩吗?

ScaleFlux

存储成本 存储技术 数据压缩

DPDK与ScaleFlux CSD 3000:金融数据处理的创新组合

ScaleFlux

DPDK 存储技术 数据压缩 金融开源

数据不只是数字:描述、分析、展示呈现数据的故事

Data 探险实验室

数据分析 数据 数据可视化 数字 可视化分析

天翼云“息壤”荣膺第六届数字中国建设峰会“十大硬核科技”称号

天翼云开发者社区

云计算 算力 超算

一文读懂 DNS 解析

火山引擎边缘云

DNS 域名解析 火山引擎 边缘云

ScaleFlux压缩存储产品通过 PolarDB-PG社区版和PolarDB-X 开源版认证

ScaleFlux

开源数据库 数据压缩 数据库技术 企业数据

【修复问题】HBuilder打包编译报错汇集(持续更新)

红泥

滋灌中小企业,分销伙伴和华为来做“送水人”

脑极体

分销

今天开讲,6 大演讲主题、5 位技术大咖!龙蜥大讲堂 5 月精彩直播预告抢先看

OpenAnolis小助手

开源 操作系统 内核 龙蜥社区 龙蜥大讲堂

CCIG 2023 百度飞桨分论坛:大模型时代的图象图形技术变革与实践

飞桨PaddlePaddle

解析内存中的高性能图结构

NebulaGraph

数据结构 图数据库

可计算存储技术全面升级CSD 3000存储体验

ScaleFlux

人工智能 机器学习 计算与存储 数据压缩

「MIAOYUN」:降本增效,赋能传统企业数字化云原生转型 | 36kr 项目精选

MIAOYUN

云原生 数字化转型 智能运维 降本增效 36氪

解决Centos7 yum 出现could not retrieve mirrorlist 错误

北桥苏

Centos 7 linux\

【涨知识】PCB板为什么多是绿色的?

华秋PCB

PCB PCB电路板 电路板 PCB设计 显影

RDMA网络实践

天翼云开发者社区

云计算 存储 RDMA

GWT 1.5: 支持Java 5、性能改进及JavaScript增强_Java_Ryan Slobojan_InfoQ精选文章