锁定老帖子 主题:Google GWT 简介
精华帖 (0) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-20
最后修改:2008-12-20
如今,编写网络应用程序是一个单调乏味且易于出错的过程。开发人员可能要花费 90% 的时间来处理浏览器行话。此外,构建、重复使用以及维护大量 JavaScript 代码库和 AJAX 组件可能困难且不可靠。Google Web 工具包 (GWT) 通过允许开发人员用 Java 编程语言快速构建和维护复杂但高性能的 JavaScript 前端应用程序来减轻该负担。
Google Web 工具包工作原理有了 Google Web 工具包 (GWT),可以使用 Java 编程语言编写 AJAX 前端,然后 GWT 会交叉编译到优化的 JavaScript 中,而 JavaScript 可以自动在所有主要浏览器上运行。在开发过程中,您可以用 JavaScript 按习惯的相同“编辑 - 刷新 - 查看”循环快速反复,还有另一个好处就是能够调试和逐行单步调试 Java 代码。准备好进行部署后,GWT 会将 Java 源代码编译到优化且独立的 JavaScript 文件中。使用 Google Web 工具包可以轻松地为现有网页或整个应用程序构建一个 Widget。 使用 Java 语言编写 AJAX 应用程序,然后编译为优化的 JavaScript与仅在文本级别运行的 JavaScript Minifier 不同,GWT 编译器会在整个 GWT 数据库中执行综合性静态分析和优化,通常生成的 JavaScript 加载和执行均比等效手写的 JavaScript 更快。例如,GWT 编译器可以安全地消除无用代码 -- 极大的减少不使用的类别、方法、字段甚至方法参数 -- 以确保您编译的脚本尽可能最小。另一个示例:GWT 编译器选择性地内联方法,消除方法调用的性能开销。 交叉编译提供了开发所需的可维护的提取和模块性,而不会导致运行时性能损失。
开发工作流程编辑 Java 代码,然后立即查看更改而无需重新编译在开发过程中,使用 GWT 的托管模式浏览器可以立即查看代码更改。无需汇编译为 JavaScript 或部署到服务器。只需进行更改,然后在托管模式浏览器中单击“刷新”。 使用 Java 调试器单步调试当前 AJAX 代码在生产过程中,可以将代码编译为纯 JavaScript,但是在开发阶段,代码将在 Java 虚拟机作为字节码运行。这意味着,当代码执行处理鼠标事件等操作时,将获得功能完整的 Java 调试。Java 调试器可以执行的任何操作也应用于 GWT 代码,所以也可以执行断点和单步调试等自然操作。 编译和部署优化的、跨浏览器的 JavaScript准备好进行部署后,GWT 会将 Java 代码编译成独立的纯 JavaScript 文件,任何网络服务器都支持该文件。此外,GWT 应用程序可自动支持 IE、Firefox、Mozilla、Safari 和 Opera,而无需在代码中进行浏览器检测或特殊封装。编写相同的代码后,GWT 会根据每个用户的特殊浏览器将其转换为最有效的 JavaScript。
功能通过非常简单的 RPC 与服务器通信GWT 支持一组开放的传输协议,例如 JSON 和 XML,但 GWT RPC 使所有 Java 通信都特别轻松且有效。类似于传统 Java RMI,只需创建一个用于指定您要调用的远程方法的接口。从浏览器调用远程方法时,GWT RPC 将自动串行化参数,并调用服务器上的适当方法,然后反串行化客户端代码的返回值。GWT RPC 也将非常成熟,其可以处理多态类层次结构、对象图循环,甚至可以跨网抛出异常。 根据用户个人资料优化 JavaScript 脚本下载延时绑定是 GWT 的一种功能,可以生成许多版本的编译代码,而在运行时自引导期间仅其中一个版本需要由特殊客户端载入。每个版本均以浏览器为基础生成,并带有应用程序定义或使用的任何其他轴。例如,如果要使用 GWT 的国际化模块来国际化应用程序,GWT 编译器可能会根据每个浏览器环境生成各个版本的应用程序,例如“英文版 Firefox”、“法文版 Firefox”、“英文版 Internet Explorer”等,因此,部署的 JavaScript 代码非常紧凑并且下载比在 JavaScript 中编码然后声明更快。 跨项目重复使用 UI 组件通过合成其他 Widget 来创建可重复使用的 Widget,然后轻松地在面板中自动对他们进行布局。GWT 展示应用程序可以提供 GWT 中各种 UI 功能的概述。要在其他项目中重复使用 Widget 吗?只需将其打包以便他人在 JAR 文件中使用。 使用其他 JavaScript 库和本机 JavaScript 代码如果 GWT 的类库不能满足您的需要,则可以使用 JavaScript 本地接口 (JSNI) 在 Java 源代码中加入手写的 JavaScript。使用 GWT 1.5,现在就可以为 GWT JavaScriptObject (JSO) 类创建子类以将 Java“类覆盖”创建到任意 JavaScript 对象上。因此,可以获得将 JS 对象比拟为适当的 Java 类型(例如代码完成、重构、内联)而无需另外占用内存或速度的好处。此功能可以优化使用 JSON 结构。 轻松支持浏览器的后退按钮和历史记录不,AJAX 应用程序无需破坏浏览器的后退按钮。使用 GWT,您可以通过轻松地为浏览器的后退按钮历史记录添加状态,来使您的站点更加有用。 有效的本地化应用程序使用 GWT 功能强大的延时绑定技术来轻松创建有效的国际化应用程序和库。此外,从 1.5 版起,标准 GWT Widget 开始支持双向性。 使用选择的开发工具提高生产力由于 GWT 使用 Java,您可以使用所有喜欢的 Java 开发工具(Eclipse、IntelliJ、JProfiler、JUnit)来进行 AJAX 开发。这使网络开发人员可以控制自动化 Java 重构和代码提示/完成的生产效率。此外,Java 语言的静态类型检查使开发人员可以在编写代码时而非运行时找出一类 JavaScript 错误(输入错误、类型不匹配),在减少错误的同时提高生产率。没有临时变量发现的更多用户。最后,则可以利用基于 Java 的 OO 设计模式和提取,由于编译器优化,模式和提取易于理解和维护而无需用户承担任何运行时性能损失。 使用 JUnit 测试代码GWT 与 JUnit 直接集成,使您可以在调试器和浏览器中进行单元测试,并且您甚至可以对异步 RPC 进行单元测试。
GWT概述: http://code.google.com/intl/zh-CN/webtoolkit/overview.html 起步指南: http://code.google.com/intl/zh-CN/webtoolkit/gettingstarted.html
自己试了一下,感觉比较慢,估计不会有广泛应用。这种东西必须有好用的IDE等工具的支持才行啊。
<!----><!----><!----> 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-12-21
上次在google开发者日上听说google自己用这个都不是很多……
真的感觉flex还是挺不错的选择。 |
|
返回顶楼 | |
发表时间:2008-12-24
instantiations公司的windowbuilder早就很好的支持gwt界面了。
|
|
返回顶楼 | |
发表时间:2008-12-24
GWT首次加载会比较慢,和flex一个毛病;执行的时候主要看浏览器到js解析、运行速度。
因为chrome、firefox不断优化js的执行性能,所以我个人觉得未来GWT比flex有不少优势。 |
|
返回顶楼 | |
发表时间:2008-12-24
最后修改:2008-12-24
我曾经幻想过:通过GWT将一些java程序转化成js版本。
但是,最后还是放弃了。 理由是: 1.代码不具备可读性 也许设计的时候,就没考虑这个问题。 2.代码量庞大。 “根据用户个人资料优化 JavaScript 脚本下载”,优化去吧,反正水分大大的,优化空间很大很大。 3.代码组织方式怪异 很多代码都是放在iframe里面载入,当能,他有它这么设计的理由。 |
|
返回顶楼 | |
发表时间:2008-12-24
netbeans也有相应工具~~~
GWT会因JBoss更好的推广,至少很多人相信了这个 |
|
返回顶楼 | |
发表时间:2008-12-24
看过了不少GWT(含GWT-Ext)和flex比较的文章,好像最后的结论都是倾向于flex好些。
不过我感觉flex的学习、开发成本都不小啊,GWT不应该差才对。 |
|
返回顶楼 | |
发表时间:2008-12-24
GWT界面(含GWT-Ext)虽然是使用swing类似的布局管理,但是还没有一个好的免费的界面开发工具,不能不说是其一个软肋啊!flex呢!虽然沿袭了类java的语言,但是毕竟还是一门新的语言,需要花点时间来学习。
|
|
返回顶楼 | |
浏览 9478 次