GWT简介

原创 2013年12月04日 09:17:18

1.1  GWT的定义

GWT是GoogleWeb Toolkit的简称。GWT是一个开源的以Java语言为工具,以类似Swing的方式编写UI组件,之后通过GWTCompiler进行编译,它是一个开发 Ajax应用的框架,它使程序员用Java同时开发客户端和服务器端的代码。GWT的编译器会把用于开发客户端的Java代码转化成Javascript 和html,而程序员不用关心这一转换过程.


1.2  GWT的特性介绍

  1.动态,可重用的UI组件

  GWT提供的组件库使用户可以很容易的开发出漂亮的UI, 每个组件对应于GWT的一个类。

  2.简单的RPC调用

使用GWT,可以方便的实现客户端和服务器端的通信,特别是使得异步通信变的非常简单。

  3.更加方便的调试

  由于在开发阶段不需要生成HTML页面,用户开发的代码实际上是在JVM上运行的,这样用户就可以用传统的调试Java代码的方法对程序进行调试,从而加快了调试的速度,减少了软件开发的时间。

  4.浏览器兼容性

  在大多数情况下,用GWT开发出来的程序会支持IE、Firefox、Mozilla、Safari和Opera,用户在开发的时候不必担心浏 览器的兼容性问题。而浏览器的兼容性问题也是用直接用Javascript进行Ajax应用开发所面临的一个另程序员棘手问题。

  5.可扩展性

如果你觉得GWT提供的API不能满足需求,你可以利用JSNI将Javascript语句直接嵌入至Java代码中。

 

1.3  GWT的运行环境

   GWT应用程序有两种方式运行:

HostedModel

  在Hosted Model方 式下,Java程序并不会被编译成JavaScript,GWT只是创造了一个类似浏览器的环境,直接运行使用GWT开发的程序。这种模式最具生产力(这种模式下可以Debug所有的Java代码), 所以开发环境通常使用Hosted Model,但是真正的程序执行不使用这种模式。

WebModel 

  就是将使用GWT编写的Java程序编译成JavaScript,在Web容器上运行,使用浏览器访问的模式,这种方式只有在测试或者运行的时候才使用,每次对Java类的修改必须重新编译这些Java类,之后重新部署应用。所以生产力比较低。



附:GWT说明

       GWT是Google Web Toolkit的缩写,有了 GWT可以使用 Java 编程语言编写 AJAX 前端,然后 GWT 会交叉编译到优化的JavaScript 中,而 JavaScript 可以自动在所有主要浏览器上运行。GWT允许开发人员使用 Java 编程语言快速构建和维护复杂但性能高的 JavaScript 前端应用程序,从而降低了开发难度,尤其是与Eclipse Google 插件结合使用时,优势更明显。

如 今,编写网络应用程序是一个单调乏味且易于出错的过程。开发人员可能要花费 90% 的时间来处理浏览器行话。此外,构建、重复使用以及维护大量JavaScript 代码库和 AJAX 组件可能困难且不可靠。GoogleWeb 工具包 (GWT) 通过允许开发人员用Java编程语言快速构建和维护复杂但高性能的JavaScript前端应用程序来减轻该负担。

有了 Google Web 工具包 (GWT),可以使用 Java 编程语言编写 AJAX 前端,然后 GWT 会交叉编译到优化的JavaScript 中,而 JavaScript 可以自动在所有主要浏览器上运行。在开发过程中,您可以用JavaScript按习惯的相同“编辑 - 刷新 - 查看”循环快速反复,还有另一个好处就是能够调试和逐行单步调试Java 代码。准备好进行部署后,GWT 会将Java源代码编译到优化且独立的 JavaScript 文件中。使用 Google Web 工具包可以轻松地为现有网页或整个应用程序构建一个Widget。


1原理

使用 Java 语言编写 AJAX应用程序,然后编译为优化的 JavaScript与仅在文本级别运行的JavaScriptMinifier 不同,GWT编译器会在整个 GWT 数据库中执行综合性静态分析和优化,通常生成的JavaScript 加载和执行均比等效手写的 JavaScript 更快。例如,GWT编译器可以安全地消除无用代码---极大的减少不使用的类别、方法、字段甚至方法参数 -- 以确保您编译的脚本尽可能最小。另一个示例:GWT编译器选择性地内联方法,消除方法调用的性能开销。交叉编译提供了开发所需的可维护的提取和模块性,而不会导致运行时性能损失。


2开发流程

编辑 Java 代码,然后立即查看更改而无需重新编译

在开发过程中,使用 GWT 的托管模式浏览器可以立即查看代码更改。无需汇编译为 JavaScript或部署到服务器。只需进行更改,然后在托管模式浏览器中单击“刷新”。

使用 Java 调试器单步调试当前 AJAX 代码

在生产过程中,可以将代码编译为纯 JavaScript,但是在开发阶段,代码将在 Java虚拟机作为字节码运行。这意味着,当代码执行处理鼠标事件等操作时,将获得功能完整的 Java 调试。Java调试器可以执行的任何操作也应用于GWT 代码,所以也可以执行断点和单步调试等自然操作。

编译和部署优化的、跨浏览器的JavaScript

准备好进行部署后,GWT 会将 Java 代码编译成独立的纯 JavaScript 文件,任何网络服务器都支持该文件。此外,GWT应用程序可自动支持IE、Firefox、Mozilla、Safari 和 Opera,而无需在代码中进行浏览器检测或特殊封装。编写相同的代码后,GWT会根据每个用户的特殊浏览器将其转换为最有效的 JavaScript。


3功能

通过非常简单的 RPC 与服务器通信

GWT支持一组开放的传输协议,例如 JSON 和 XML,但 GWT RPC 使所有Java 通信都特别轻松且有效。类似于传统JavaRMI,只需创建一个用于指定您要调用的远程方法的接口。从浏览器调用远程方法时,GWT RPC将自动串行化参数,并调用服务器上的适当方法,然后反串行化客户端代码的返回值。GWT RPC也将非常成熟,其可以处理多态类层次结构、对象图循环,甚至可以跨网抛出异常

GWT-根据用户个人资料优化 JavaScript脚本下载

延时绑定是 GWT的一种功能,可以生成许多版本的编译代码,而在运行时自引导期间仅其中一个版本需要由特殊客户端载入。每个版本均以浏览器为基础生成,并带有应用程序定义或使用的任何其他轴。例如,如果要使用GWT 的国际化模块来国际化应用程序,GWT编译器可 能会根据每个浏览器环境生成各个版本的应用程序,例如“英文版 Firefox”、“法文版 Firefox”、“英文版InternetExplorer”等,因此,部署的JavaScript 代码非常紧凑并且下载比在JavaScript 中编码然后声明更快。

跨项目重复使用 UI 组件

通过合成其他 Widget 来创建可重复使用的 Widget,然后轻松地在面板中自动对他们进行布局。GWT 展示应用程序可以提供 GWT 中各种 UI 功能的概述。要在其他项目中重复使用 Widget 吗?只需将其打包以便他人在 JAR 文件中使用。

GWT-使用其他 JavaScript 库和本机 JavaScript 代码

如果 GWT 的类库不能满足您的需要,则可以使用 JavaScript本地接口 (JSNI) 在 Java源代码中加入手写的JavaScript。使用 GWT 1.5,现在就可以为 GWT JavaScriptObject (JSO)类创建子类以将Java“类覆盖”创建到任意JavaScript 对象上。因此,可以获得将 JS 对象比拟为适当的Java类型(例如代码完成、重构、内联)而无需另外占用内存或速度的好处。此功能可以优化使用 JSON 结构。

轻松支持浏览器的后退按钮和历史记录

不,AJAX应用程序无需破坏浏览器的后退按钮。使用 GWT,您可以通过轻松地为浏览器的后退按钮历史记录添加状态,来使您的站点更加有用。

有效的本地化应用程序

使用 GWT 功能强大的延时绑定技术来轻松创建有效的国际化应用程序和库。此外,从1.5 版起,标准 GWTWidget 开始支持双向性。

使用选择的开发工具提高生产力

由于 GWT 使用 Java,您可以使用所有喜欢的 Java 开发工具(Eclipse、IntelliJ、JProfiler、JUnit)来进行AJAX开发。这使网络开发人员可以控制自动化 Java 重构和代码提示/完成的生产效率。此外,Java语言的静态类型检查使开发人员可以在编写代码时而非运行时找出一类JavaScript错误(输入错误、类型不匹配),在减少错误的同时提高生产率。没有临时变量发现的更多用户。最后,则可以利用基于 Java 的 OO设计模式和提取,由于编译器优化,模式和提取易于理解和维护而无需用户承担任何运行时性能损失。

使用 JUnit 测试代码

GWT 与 JUnit 直接集成,使您可以在调试器和浏览器中进行单元测试,并且您甚至可以对异步 RPC 进行单元测试。扩展或投稿 - GoogleWeb 工具包是一种开源软件使用 Apache 2.0 许可,可获取所有 GWT 代码。如果您对投稿感兴趣,请访问使 GWT 变得更好。


GWT UiBinder部分官方介绍的翻译

页面来源:http://code.google.com/intl/zh-CN/webtoolkit/doc/latest/DevGuideUiBinder.html 随便硬译的,没有检查,没有修改。...
  • charlv
  • charlv
  • 2011年08月16日 15:11
  • 4046

GWT运行框架简介

     GWT有3部分组成。第一部分是编译部分,它负责将java程序转换成js程序。第2部分是调试部分,该部分可以在不编译的情况下调试GWT应用程序。这2个部分都是纯java的。最后还有一部分是运行...
  • wongtseng
  • wongtseng
  • 2006年10月25日 16:16
  • 2239

GWT 实现文件上传和下载

上星期老师叫我学写一个fileupload 和 download ,琢磨了很久~~ 代码网上很多,关键跑出来有效果 是很纠结人的。。整理一下吧。upload:(推荐一本书 《Google Web To...
  • rptotal
  • rptotal
  • 2011年02月28日 16:41
  • 6846

GWT开发效率困境与解决之道

GWT开发效率困境与解决之道GWT初学的人员都觉得GWT学习曲线高,开发慢,你可能一气之下把这个IDE给扔掉冲动。根据以往的GWT培训来看,GWT的开发效率主要集中在以下几点:编译时间过长 – 每修...
  • applebomb
  • applebomb
  • 2016年09月06日 11:25
  • 1028

GWT 学习总结

最近领导让研究GWT,学习这个AJAX框架,看看对我们的系统能否集成进去,花了1周多时间研究啊。照葫芦画瓢,做了一个Demo,对这个框架也有了一个初步的认识, 感觉就是一个Web的 SWT。    ...
  • u010419967
  • u010419967
  • 2014年07月26日 15:45
  • 1493

GWT MVP 学习笔记

GWT MVP 学习笔记   在GWT的在线文档中只看 《GWT Development with Activities and Places》就可以了,这是2.1中新推出的做法,结合考虑了浏览器的...
  • u010419967
  • u010419967
  • 2014年12月26日 12:34
  • 907

GWT 2.8的调试

今天刚开始学习GWT,照着其官方网站上的教程写例子做实验。当进行到Debugging一节的时候,发现设置的断点总是不能起作用。在google上搜索,发现有人说使用SDM(Super Dev Mode)...
  • logsharp
  • logsharp
  • 2017年01月17日 10:00
  • 1078

GWT刷新当前页面

在需要刷新页面的地方添加语句:History.fireCurrentHistoryState();//重新加载当前页 ...
  • npzhaoyun
  • npzhaoyun
  • 2010年05月28日 11:23
  • 2115

GWT入门教程

GWT入门教程   准备 需要Java SDK 1.6以上的JDK。 需要Apache Ant   下载和安装 GWT SDK GWT SDK包含了核心库,编译器,和开发web应用需要的开发服务器。将...
  • kevingao
  • kevingao
  • 2014年04月06日 20:31
  • 8279

GWT开发——java 与 js 通过 jsni 相互调用

1. java通过jsni调用内部js           Button button = new Button("java调用内部jsni的js方法");       ...
  • u010419967
  • u010419967
  • 2014年09月12日 17:15
  • 1152
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:GWT简介
举报原因:
原因补充:

(最多只允许输入30个字)