首页>参考读物>计算机科学与技术>综合

GWT揭秘
作者 : 徐彬 著
出版日期 : 2009-12-29
ISBN : 978-7-111-29401-6
定价 : 49.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 326
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书主要分为5个部分:准备篇介绍了开发环境的搭建以及能让读者迅速上手的HelloWorld应用;基础篇介绍了应用GWT时必须掌握的各种必备知识,如GWT的主要模块和控件、GWT与JavaScript对象的交互、在XML中操作GWT、GWT-RPC和GWT-EXT等;实战篇以一个完整的报销审批系统的全程开发为主线,将前面的理论知识贯穿于其中,同时也能让读者自己动手开发一个完整的GWT应用;高级篇是全书内容的升华,包含与热门技术Flex的整合、图片缓存、本地化、动画、历史管理、延时/等待/分片执行等高级话题。附录介绍了大量与GWT开发相关的第三方资源,能为GWT开发者带来很大的帮助。

图书特色

RIA带来了全新的Web用户体验,同时也简化了传统的Web开发模式。以JavaScript为基础的AJAX技术与现有HTML技术一脉相承,便于与第三方技术相整合,开发效率高,技术起点低,是RIA领域中当之无愧的王者。
然而,AJAX并非没有缺陷。对于开发中小型项目来说,JavaScript有易用性、灵活性等优势,但是对于开发大型项目来说,它也存在着不少问题:代码编写具有随意性,不便于维护和团队合作;IDE无法完整地实现智能提示;变量类型和函数参数等的错误在运行时才会暴露出来;浏览器对JavaScript执行错误的提示简单且含糊,不便于调试和纠错;在不同的浏览器上存在着兼容性问题,开发人员必须针对不同的浏览器分别进行开发、调试和测试,工作量大······GWT完美而彻底地解决了JavaScript的这些弊端,为RIA开发注入了全新的活力。

为何白宫采用GWT技术构建OpenForQuestions网站?为何JBoss将GWT作为其中间件的核心组成部分?为何Seam集成GWT?为何Google Wave完全采用GWT开发?
在JSNI中如何轻松地访问GWT函数?外部JavaScript如何直接访问GWT函数?
如何在GWT中高效地使用正则表达式?如何在GWT中操作XML和JSON格式的数据?如何在GWT中使用XPath?
如何根据实际项目的需要开发出有特色的自定义GWT控件?如何使用GWT-RPC的方式与服务器交互?它与使用UrlEncode、XML、JSON等方式与服务器交互有何不同?GWT-RPC如何与Hibernate整合?
没有美术功底的开发者如何使用EXT GWT开发出漂亮的用户界面?为何EXT GWT能完全利用GWT的编译优势?
GWT如何与JavaScript和Flex交互?GWT如何与jQuery、Ext JS、jBPM相整合?
如何利用GWT的动画功能轻松实现各种自定义的动画特效?
如何通过GWT 2.0中新增的UIBinder使用XML布局定义组件和实现与组件的交互?
GWT 2.0为何要新增代码分割功能?如何开发支持本地化的GWT应用?
在GWT中如何利用CSS Sprite技术实现图片缓存,从而提高网站的访问速度?
GWT内部运行机制是什么?如何提高GWT应用的性能?
······
徐彬 资深软件工程师、项目经理和系统架构师,从业10余年,实战经验丰富。精通C++(CSDN论坛C++版专家)以及GWT等AJAX技术,擅长C#、Java、JavaScript开发,对Oracle也有深入研究。多年来一直从事国土和规划领域的政府单位的信息化建设,曾负责过西安、南京、乌鲁木齐、杭州、义乌等城市的国土局项目,以及浙江省国土资源厅、上海房地局、重庆房地局、沈阳房地局、上海环保局、杭州规划局等单位的项目。

图书前言

JavaScript的银弹
  1995年底,Netscape发布了Navigator 2.0版本,它加入了一个重要的特性:可以在页面中嵌入JavaScript语言。在Navigator 2.0发布前,Netscape将这种新语言命名为LiveScript,但最终发布时却使用了JavaScript这个名字,因为Netscape想借助Java这门当时最炙手可热的语言迅速走红。Navigator 2.0发布后,Web程序员们立刻喜欢上了这门新语言。使用JavaScript能够在网页中实现用户输入信息的校验工作,比如检查E-Mail的地址格式是否正确,核对密码和校验密码是否一致等。在当时那个网络带宽只有28.8kBps的年代,能在浏览器端验证这些信息,无疑是Web开发界的一次重大变革。在JavaScript出现之前,如果用户在浏览器端输入一个错误信息,往往需要等待10多秒钟才能收到从服务器端发回的反馈,这对用户来说简直是不可接受的。JavaScript出现以后,很好地解决了这个问题,Web应用的用户体验有了一个质的飞跃,嵌有JavaScript的Web应用备受用户青睐。
  1996年8月,微软发布了Internet Explorer 3.0。那时,微软在浏览器市场上还只是个跟随者。为了能兼容大量嵌入JavaScript的网页,Internet Explorer 3.0也提供了对JavaScript的支持。微软将他们的语言命名为JScript,以避免版权和商标上的麻烦。
  微软为JScript加入了一些新的特性,但这导致JavaScript和JScript出现了兼容性问题。为避免这一问题继续扩大,Netscape把JavaScript语言规范提交给ECMA(European Computer Manufacturing Association,欧洲计算机制造协会),申请制定JavaScript语言标准。1997年年中,ECMA正式制定了ECMA-262标准。从此,JavaScript又被称为ECMAScript。
  随着PC计算能力的增强,JavaScript不再满足于完成验证用户输入这样的简单工作。2005年,AJAX进入程序员的视野。AJAX把页面的逻辑全部搬到了浏览器端,仅把数据留在服务器上。网页不再需要刷新,用户能够在浏览器中享受和桌面应用程序一样的流畅体验。
  然而,事物总是具有两面性。JavaScript 作为一种动态语言,在验证用户输入和实现一些网页特效方面有得天独厚的优势。但是,对于开发需要多人合作的大型项目来说,它却存在着以下问题:
  第一,动态语言的代码编写具有随意性和自由性。对于一个需要长期维护、多人参与的大型项目开发来说,JavaScript在代码维护、团队合作、编码规约、技术交流上存在着诸多不利因素。
  第二,动态语言的状态属性需要在运行时才能确定,IDE无法完整地实现智能提示。
  第三,JavaScript是解释运行的,变量类型和函数参数的错误只有在运行时才能暴露。
  第四,浏览器对于JavaScript执行错误的提示简单且含糊,这给JavaScript的调试和纠错工作带来了很大的难度。对于IE以外的浏览器来说,目前的IDE无法进行集成调试。
  第五,JavaScript作为一种非面向对象语言,只能模拟出面向对象的继承性和多态性。对于多人团队来说,至关重要的封装性是无法模拟出来的。在一个多人团队中,开发人员水平参差不齐。类库没有封装性,就很难保证类库的内部实现在运行时不被改变。在项目进行到后期时,这对项目团队来说将是一个严峻的挑战。
  最后,JavaScript/CSS/HTML在不同的浏览器上存在兼容性问题,开发人员要针对不同的浏览器分别进行开发、调试、测试等工作,工作量可想而知。
  随着AJAX应用规模的扩大,JavaScript渐渐成为AJAX应用的一个限制。
  Google是目前世界上最大的网络公司。Google的在线产品都是基于AJAX技术开发的,它比谁都了解这一问题的严重性。2006年5月,Google推出Google Web Toolkit(GWT)以解决这一问题。
  GWT是一个开源的Java软件开发框架,允许Web开发人员用Java语言创建和维护复杂的JavaScript应用。GWT由JAVA交叉编译器和一系列类库组成,能够将标准的JAVA项目编译成JavaScript。同时GWT还提供受控模拟运行环境(GWT Hosted Web Browser)用于调试GWT项目。使用GWT的好处在于:
  q 使用JAVA语言进行项目开发,开发团队可以使用OOAD(面向对象的分析和设计)的方法进行项目开发,OOAD已被证明能够有效提高多人团队项目的开发效率。
  q 使用Eclipse等集成开发环境来提高编码的效率,方便代码重构。
  q JAVA是编译语言,开发人员在项目编译时就能发现一些潜在的类型错误问题。
  q 开发人员可以方便地在Eclipse等集成开发环境中调试AJAX项目。
  q 通过JAVA这一面向对象的语言,开发团队可以将功能模块或界面模块封装起来,然后以Jar的形式分发给其他开发人员或团队。
  q GWT支持IE/Firefox/Safari/Opera/Chrome等主流浏览器,帮助开发人员轻松完成跨平台开发这样的艰巨任务。
  用GWT编写AJAX应用的好处不言而喻。可以预言用GWT开发AJAX应用必将取代直接使用JavaScript开发AJAX应用这一开发模式。如同C语言和汇编语言的关系,如果把JavaScript语言看成是浏览器的汇编语言,它存在着诸多不便之处,而GWT正是解决这些问题的“银弹”。
为什么写这本书
  2006年5月GWT发布第一个版本,至今已过去整整三个年头了。在国外,GWT已经被越来越多的开发人员所接受。JBoss将GWT作为其中间件产品的核心组成部分;Seam 2.1框架将集成GWT;白宫网站使用GWT框架来建设OpenForQuestions子站。ExtJS发布基于GWT的GXT框架库。jQuery宣布将开发基于GWT的jQuery版本。这些信息明确表达出GWT被越来越多的主流厂商和AJAX社区所接受。
  相对于国外的火爆,GWT在国内还未被大多数Web开发人员所认识。通过百度搜索GWT关键字,我们只得到大约76 400个结果。中文学习资料的缺乏,给想学习GWT的开发人员带来不便。GWT是一种令人心动的技术,希望国内开发者不要错过。本书就是在这种情况下编写的,希望本书能够为正在使用GWT的开发人员和想学习GWT的开发人员提供帮助。
本书面向的读者
  本书适合所有具备一定Java基础的Web开发人员阅读。
如何阅读本书
  本书分为四个部分共15章。这四个部分分别是:准备篇、基础篇、实战篇和高级篇。
  准备篇介绍如何搭建GWT的开发环境,并通过一个入门示例解析GWT项目的创建、运行调试、测试和发布的过程。
  基础篇介绍开发GWT应用的基础知识。讲解GWT模块的概念、作用以及配置方法;GWT如何与JavaScript对象交互;JavaScript本地接口的三种使用方式;GWT中操作XML的方法;控件的介绍、使用及自定义控件的开发;调用远程服务器方法,使用Hibernate对数据库进行CURD操作等几个知识面。基础篇的最后一章引入EXT框架的GWT版本(EXT-GWT),并详细介绍EXT-GWT的使用方法。
  实战篇介绍两个例子:俄罗斯方块和报销审批应用。通过俄罗斯方块这个例子开发人员可以学到使用GWT开发实时对战游戏的一些技巧。报销审批应用的开发分为创建工作列表、申请表单制作、申请提交和审批四个步骤。对jBPM工作流引擎感兴趣的开发人员能从本章学习到jBPM相关的开发知识。
  高级篇介绍GWT的一些高级技巧。包括GWT与Flex的整合、图片资源缓存、本地化、AJAX动画、历史管理、延迟执行、等待执行、分片执行、代码分割和UiBinder等高级技巧。
  考虑到本书发行时,GWT 2.0的发布时间还很短,所以本书同时涵盖了GWT 1.x和2.0的内容,并在书中明确指出哪些是GWT 2.0的新特性。另外,本书选择Eclipse做为集成开发环境,书中的例子都是在Windows平台下开发的,但对于使用Linux或者其他环境的开发人员来说,开发过程没有本质上的区别。
  对于没有接触过GWT的开发人员,建议从头开始阅读本书。已经掌握一定GWT基础知识的读者可以选择自己关心的章节阅读。本书每一章节都相对独立。
  最后,我要感谢在本书写作过程中给予帮助的朋友们。其中有机械工业出版社华章分社的杨福川编辑,是他不断为我鼓劲,他的细心的校稿和耐心的帮助指导使我最终得以完成本书。当然还有我的妻子朱海玲,在这几个月中我一直忙于工作和写作,家里的大小家务都是由她承担起来的。最后还有尹劲峰、孙俊、王晓宏等提到名字和没提到名字的朋友们,在这里表示最衷心的感谢。

上架指导

计算机\程序设计

封底文字

RIA带来了全新的Web用户体验,同时也简化了传统的Web开发模式。以JavaScript为基础的AJAX技术与现有HTML技术一脉相承,便于与第三方技术相整合,开发效率高,技术起点低,是RIA领域中当之无愧的王者。
然而,AJAX并非没有缺陷。对于开发中小型项目来说,JavaScript存在着易用性、灵活性等优势,但是对于开发大型项目来说,它也存在着不少问题:代码编写具有随意性,不便于维护和团队合作;IDE无法完整地实现智能提示;变量类型和函数参数等的错误在运行时才会暴露出来;浏览器对JavaScript执行错误的提示简单且含糊,不便于调试和纠错;在不同的浏览器上存在着兼容性问题,开发人员必须针对不同的浏览器分别进行开发、调试和测试,工作量大······GWT完美而彻底地解决了JavaScript存在的这些弊端,为RIA开发注入了全新的活力。
如果你也在思考下面这些问题,也许本书就是你想要的!
(1)为何白宫采用GWT技术构建OpenForQuestions网站?为何JBoss将GWT作为其中间件的核心组成部分?为何Seam集成GWT?为何Google Wave完全采用GWT开发?
(2)在JSNI中如何轻松地访问GWT函数?外部JavaScript如何直接访问GWT函数?
(3)如何在GWT中高效地使用正则表达式?
(4)如何在GWT中操作XML和JSON格式的数据?如何在GWT中使用XPath?
(5)如何根据实际项目的需要开发出有特色的自定义GWT控件?
(6)如何使用GWT-RPC的方式与服务器交互?它与使用UrlEncode、XML、JSON等方式与服务器交互有何不同?GWT-RPC如何与Hibernate整合?
(7)没有美术功底的开发者如何使用EXT GWT开发出漂亮的用户界面?为何EXT GWT能完全利用GWT的编译优势?
(8)GWT如何与JavaScript和Flex交互?GWT如何与jQuery、Ext JS、jBPM相整合?
(9)如何利用GWT的动画功能轻松实现各种自定义的动画特效?
(10)如何通过GWT 2.0中新增的UIBinder使用XML布局定义组件和实现与组件的交互?
(11)GWT 2.0为何要新增代码分割功能?如何开发支持本地化的GWT应用?
(12)在GWT中如何利用CSS Sprite技术实现图片缓存,从而提高网站的访问速度?
(13)GWT内部运行机制是什么?如何提高GWT应用的性能?
······
徐彬 资深软件工程师、项目经理和系统架构师,从业10余年,经验极其丰富。精通C++(CSDN论坛C++版专家)以及GWT等AJAX技术,擅长C#、Java、JavaScript开发,对Oracle也有深入研究。多年来一直从事国土和规划领域的政府单位的信息化建设,曾负责过西安、南京、乌鲁木齐、杭州、义乌等城市的国土局,以及浙江省国土资源厅、上海房地局、重庆房地局、沈阳房地局、上海环保局、杭州规划局等单位的相关项目。

作者简介

徐彬 著:暂无简介

图书目录

前 言
第一部分 准备篇
第1章 准备开发环境 2
1.1 安装JDK 2
1.2 安装Eclipse 2
1.3 安装GWT 1.7的Eclipse插件 3
1.4 安装GWT 2.0的SDK以及Eclipse插件 4
1.5 辅助工具 5
1.5.1 Internet Explorer Developer Toolbar 5
1.5.2 Firebug 6
1.6 小结 7
第2章 Hello GWT 8
2.1 在Eclipse中创建项目 8
2.2 运行调试项目 10
2.3 JUnit测试 14
2.4 发布网站 16
2.5 ANT发布 16
2.6 小结 17
第二部分 基础篇
第3章 GWT模块 20
3.1 GWT模块详解 20
3.2 模块入口点 22
3.3 模块继承 22
3.4 附加CSS和JavaScript 23
3.5 路径配置 25
3.6 延迟绑定 29
3.7 发布JAR 33
3.8 深入研究 34
3.9 小结 37
第4章 JSNI 38
4.1 JSNI和JavaScript 38
4.2 类型映射 39
4.3 JavaScriptObject 40
4.4 JsArray 42
4.5 JSNI中的特殊变量 42
4.6 在JSNI中访问GWT函数 46
4.7 异常处理 49
4.8 外部JavaScript访问GWT函数 50
4.9 整合jQuery 51
4.10 在GWT中使用正则
   表达式 57
4.11 小结 60
第5章 在GWT中使用XML 61
5.1 XML简介 61
5.2 XML操作 62
5.2.1 XML文档 62
5.2.2 XML节点 64
5.2.3 XML元素节点 67
5.2.4 XML文本节点 68
5.3 在GWT中使用XPath 68
5.4 小结 76
第6章 GWT控件详解 77
6.1 界面对象 77
6.2 Widget 82
6.3 面板 83
6.4 控件生命周期 85
6.5 控件事件管理 87
6.5.1 注册控件事件处理句柄 87
6.5.2 阻止控件默认行为 88
6.5.3 阻止事件冒泡 89
6.5.4 onBrowserEvent 90
6.6 GWT全局类 91
6.6.1 DOM类 91
6.6.2 GWT类 92
6.6.3 Window类 94
6.7 小结 97
第7章 使用GWT控件 98
7.1 简单控件 98
7.1.1 包装已有控件 98
7.1.2 图片超链接 99
7.1.3 图片按钮 99
7.1.4 复选框 99
7.1.5 单选框 100
7.1.6 文件上传 101
7.1.7 DatePicker 103
7.2 列表和菜单 104
7.2.1 列表 104
7.2.2 带建议的输入框 105
7.2.3 树 105
7.2.4 菜单 107
7.3 面板 108
7.3.1 装饰面板 108
7.3.2 流式布局面板 108
7.3.3 水平布局面板和垂直布局面板 109
7.3.4 绝对布局面板 109
7.3.5 Tab面板 109
7.3.6 滚动面板 110
7.4 表格 111
7.4.1 简单表格 111
7.4.2 复杂表格 111
7.5 使用与自定义GWT控件 112
7.5.1 ComboInput控件结构 112
7.5.2 DataItem 113
7.5.3 ListBox 114
7.5.4 Selected事件 117
7.5.5 TriggerInput 120
7.5.6 ComboBox 122
7.6 小结 125
第8章 GWT-RPC 126
8.1 GWT中的XMLHTTPRequest 126
8.1.1 HTTPRequestImpl 126
8.1.2 RequestBuilder 127
8.1.3 请求动态数据 129
8.1.4 XML 132
8.2 JSON 134
8.2.1 JSONValue 134
8.2.2 JSONValue的派生类 135
8.2.3 完整的JSON例子 136
8.3 GWT-RPC 138
8.3.1 RPC远程接口 138
8.3.2 服务器实现 139
8.3.3 异步接口文件 140
8.3.4 在程序中使用GWT-RPC 140
8.3.5 整合Hibernate 141
8.4 小结 145
第9章 Ext GWT 146
9.1 Ext GWT简介及安装 146
9.2 Window 148
9.2.1 窗口布局 149
9.2.2 Viewport 151
9.2.3 Dialog 152
9.2.4 窗口的显示与关闭 153
9.3 数据管理 154
9.4 Grid 157
9.5 树控件 159
9.5.1 图标显示 160
9.5.2 节点选择事件 160
9.6 皮肤 161
9.7 小结 162
第三部分 实战篇
第10章 俄罗斯方块游戏 164
10.1 游戏设计 164
10.1.1 游戏简介 164
10.1.2 游戏规则 165
10.1.3 设计思路 166
10.2 编码实现 167
10.2.1 游戏场地 167
10.2.2 方块 170
10.2.3 游戏控制器 177
10.3 界面实现及操作完善 187
10.3.1 候选面板 187
10.3.2 计分与等级 189
10.3.3 增加操作便利性 191
10.3.4 界面美化 192
10.4 联机对战 193
10.4.1 原理 193
10.4.2 等待游戏开始 194
10.4.3 交换数据 198
10.4.4 胜负判定 204
10.4.5 障碍行 206
10.5 小结 209
第11章 费用申请审批流程 210
11.1 流程设计 210
11.1.1 流程简介 210
11.1.2 工作流引擎 210
11.1.3 表单 211
11.2 工作流引擎实现 211
11.2.1 环境配置 211
11.2.2 业务规则定义 214
11.2.3 jBPM数据库初始化 218
11.3 表单实现 220
11.3.1 HTML面板 220
11.3.2 表单对话框 225
11.3.3 权限控制 228
11.3.4 类型校验 232
11.4 审批流程的界面实现 233
11.4.1 AsyncCallbackEx 233
11.4.2 Outlook面板 234
11.4.3 工作列表 236
11.4.4 整体布局 241
11.4.5 用户登录 244
11.4.6 全局事件管理 247
11.4.7 遮蔽效果 249
11.4.8 实现BizzAction 250
11.5 业务流转 254
11.5.1 申请表 254
11.5.2 审批表 257
11.6 小结 261

第四部分 高级篇
第12章 GWT与Flex整合 264
12.1 Flex的优势 264
12.2 查看流程图的Flex 265
12.3 加入网页 275
12.4 与Flex交互 278
12.5 小结 283
第13章 图片缓存 284
13.1 CSS Sprite简介 284
13.2 GWT的实现 286
13.3 后端生成了什么 288
13.4 小结 288
第14章 本地化 290
14.1 GWT如何识别你的语言 290
14.2 本地化配置 291
14.3 日期格式化 294
14.4 字符串动态本地化 295
14.5 小结 296
第15章 其他高级功能 297
15.1 动画 297
15.2 历史管理 299
15.3 延时执行 301
15.4 等待执行和分片执行 301
15.5 代码分割 302
15.5.1 SOYC 304
15.5.2 初始化序列 305
15.5.3 编程模式 306
15.5.4 预加载 307
15.6 UiBinder 308
15.6.1 HTML绑定 308
15.6.2 控件绑定 310
15.6.3 CSS绑定 311
15.6.4 事件管理 313
15.6.5 资源打包 314
15.6.6 创建控件 316
15.7 小结 316

教学资源推荐
作者: 苏仕华 魏韦巍 王敬生 刘燕君 编著
作者: (美)Ramez Elmasri,A. Gil Carrick, David Levine 著
作者: (美)Lei Tang  Huan Liu 著
作者: (美)S.Brian Morriss
参考读物推荐
作者: (美)Harley Hahn
作者: (美)David Meerman Scott 著
作者: 赵国宇 孙晓云 编著