第1章 GWT入门
1.1 GWT概述
1.1.1 AJAX简介
AJAX全称为Asynchronous JavaScript and XM1(异步JavaScript和XM1),是指一种创建交互式网页应用的网页开发技术。
传统的Web应用往往是一个“提交一等待一重新显示”的过程。比如,用户填写表单(form),当提交表单时就向Web服务器发送一个请求,服务器接收并处理传来的表单,然后返回一个新的网页。这种做法浪费了许多带宽,因为在前后两个页面中的大部分HTM1代码往往是相同的。由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得多,并且给用户一种停停走走的感觉,极大地影响了用户体验。
与此不同,AJAX应用可以仅向服务器发送并取回必需的数据,并在客户端采用JavaScript处理来自服务器的响应。因为在服务器和浏览器之间交换的数据大量减少,结果我们就能看到响应更快的应用。同时很多的处理工作可以在发出请求的客户端上���成,所以W曲服务器的处理时间也减少了。
AJAX应用程序的优势表现在以下方面。
1)通过异步模式,提升了用户体验,可以达到类似桌面应用程序的效果。
2)优化了浏览器和服务器之间的传输,减少不必要的数增往返,减少了带宽占用。
3)AJAX引擎在客户端运行,承担了一部分本来由服务籍承担的工作,从而减少了大用户量下的服务器负载。
2005年初,许多事件使得AJAX被大众所接受。Goog1e在它**的交互应用程序中使用了异步通信,如大名鼎鼎的Goog1e Map、Goog1e Groups、Gmai1等。自此不仅Goog1e公司,小到个人网站,大到门户网站都或多或少地使用了AJAX技术,互联网世界迅速掀起了一场Web 2.0风暴。这时还出现了大量的用AJAX技术开发的纯Web 2.0网站,如F1ickr、YouTube、Di99等。这些Web 2.0网站在给用户带来全新的用户体验的同时,也创造了丰厚的利润,一时间,Web 2.0成为了互联网产业的一个新的金矿。 GWT是Google Web Toolkit的缩写,它是搜索引擎巨头Google公司发布的基于Java语言开发AJAX应用的开发工具包。使用GWT可以通过编写Java代码和传统的HTML页面来构造AJAX应用界面,并与服务器实现异步通信。
借助于GWT,***可以使用Java代码来开发AJAX Web应用程序,然后通过GWT提供的编译器将Java代码转换为JavaScript代码,从而大大简化了复杂的AJAX开发工作,并且提高了AJAX应用程序的浏览器兼容性。由GWT编写的应用程序可以支持Intemet Explorer、Mozilla、Opera和Safari等主流浏览器。
GWT通过Java语言编写AJAX应用,其设计参考JavaAWT包设计,类命名规则、接口设计、事件监听等都和JavaAWT非常类似,使***在学习和使用GWT时有一种轻车熟路的感觉,熟悉JavaAWT的***不需要花费多大的力气就能够快速地理解GWT开发过程。
在用户界面方面,GWT通过Widget封装了大量常用的Web组件和常见的AJAX组件,如Menu、TabBar和Tree等,并通过各种Panel为这些Widget提供页面布局方式,从而降低了AJAX页面开发的难度,提高了开发效率。
GWT中提供了一种JSNI技术,它类似于Java中的JNI技术。JSNI技术可以在GWT的Java代码中嵌入JavaScript代码,因此已有的JavaScript组件可以被无缝地嵌入到GWT应用当中,使GWT拥有极大的扩展性。
GWT封装了RPC(远程过程调用)机制,***可以方便地使用RPC完成异步通信,从而提供给用户丰富的Web 2.0应用体验。
本书结合大量实例全面介绍了GWT技术,全书共分13章,章节安排如下:
第1章讲解GWT的基础知识。介绍了GWT的特点、发展历程、基础知识以及如何创建GWT工程,使读者对GWT有一个初步了解。
第2章讲解事件和监听器。AJAX应用重要的一环是对复杂用户事件的处理。介绍了GWT如何触发浏览器事件。
第3章讲解如何用Widget构建用户界面。介绍了GWT中提供的大量Widget,通过这些Widget,***可以构建基本的AJAX用户界面。
第4章讲解Image Bundle的使用方法。在构建用户界面的工程中,可能需要大量的图片,而这些图片可能e,很z琐碎,并可能会影响到AJAX应用程序的性能。介绍了如何使用Image Bundle技术来处理这些小图片。
第5章讲解如何用Panel实现UI布局。Panel用于为各种Widget提供页面布局,Widget和Panel的结合使用才能形成完整的用户界面。介绍了GWT提供的常用Panel。
第6章讲解GWT中的RPC机制。RPC是AJAX技术实现异步通信的主要方式之一。介绍了GWT中如何使用RPC机制。
第7章讲解国际化的知识。GWT提供的国际化策略可以让程序为不同**或地区的用户选择当地.的语言浏览页面。
第8章讲解GWT中的JSNI技术。JSNI是GWT中非常有用的技术之一,通过它***可以将GWT与任何现有的JavaScript库整合,从而使GWT具有很强的扩展性,并提高了开发效率。详细介绍了GWT中的JSNI技术。
第9章讲解如何将GwT与JUnit进行整合。JUnit是Java领域使用的重要的单元测试技术之一。介绍了GWT如何与JUnit整合,并且介绍如何用JUnit进行异步测试。
第10章讲解使用RequestBuilder传输数据的方法。RequestBuilder是GWT中另外一种客户端与服务器端通信的方式。介绍了RequestBuilder的使用方法。
第11章讲解如何在GWT中使用JSON.JSON是一种客户端与服务器端交换数据的方式,介绍了如何在GWT中使用JSON。
第12章讲解跨越同源策略。同源策略是现代浏览器的一种**机制,但在Aiax应用中并不是什么时候都需要这种**机制,有时候需要越过它来实现某种特殊的页面功能。介绍了跨越同源策略的几种方法。
第13章全面理解GWT。当了解了GWT中的全部技术之后,有必要回过头来重新理解一下GWT的运行机制。总体介绍了GWT的运行机制,并且介绍了如何将GWT工程部署到Web服务器。
本书由吉融编著,读者可以通过电子邮件的方式与作者联系、交流,电子邮件地址为gwtbook@163.com。
由于作者水平有限,书中遗漏和不足之处在所难免,敬请广大读者批评指正。