《GWT揭秘》

《GWT揭秘》

 

GWT揭秘(国内首部基于GWT 2.0的经典著作,4大专业社区一致鼎力推荐!) 

 

书名:GWT揭秘
作者:徐 彬
ISBN:9787111294016
丛书名:揭秘系列丛书
出版社:机械工业出版社
出版日期:2010 年1月
开本:16
页码:320
版次:1-1
定价:49元
豆瓣网讨论地址:http://www.douban.com/subject/4223579/
China-pub预订地址:http://www.china-pub.com/196306

 

 

国内第一本基于GWT 2.0的经典著作,4大专业社区联袂推荐,权威性毋庸置疑!


本书内容全面,不仅详细介绍了GWT的主要模块和控件、GWT与JavaScript对象的交互、在GWT中使用XML、开发自定义GWT控件、GWT-RPC和Ext GWT等必备的基础知识,而且还深入讲解了GWT与Flex整合、图片缓存、本地化、GWT动画、历史管理、延时/等待/分片执行等高级知识;本书注重实战,所有知识点都配有精心设计的范例,尤为值得一提的是,还以迭代的方式重现了经典的俄罗斯方块游戏和一个完整的报销审批系统的开发全过程,既可以以它们为范例进行实战演练,又可以将它们直接应用到实际开发中去。

 

 

 

前    言 


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的好处在于:
    *  使用JAVA语言进行项目开发,开发团队可以使用OOAD(面向对象的分析和设计)的方法进行项目开发,OOAD已被证明能够有效提高多人团队项目的开发效率。
    *  使用Eclipse等集成开发环境来提高编码的效率,方便代码重构。
    *  JAVA是编译语言,开发人员在项目编译时就能发现一些潜在的类型错误问题。
    *  开发人员可以方便地在Eclipse等集成开发环境中调试AJAX项目。
    *  通过JAVA这一面向对象的语言,开发团队可以将功能模块或界面模块封装起来,然后以Jar的形式分发给其他开发人员或团队。
    *  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基础知识的读者可以选择自己关心的章节阅读。本书每一章节都相对独立。


    最后,我要感谢在本书写作过程中给予帮助的朋友们。其中有机械工业出版社华章分社的杨福川编辑,是他不断为我鼓劲,他的细心的校稿和耐心的帮助指导使我最终得以完成本书。当然还有我的妻子朱海玲,在这几个月中我一直忙于工作和写作,家里的大小家务都是由她承担起来的。最后还有尹劲峰、孙俊、王晓宏等提到名字和没提到名字的朋友们,在这里表示最衷心的感谢。

 

 

 

目    录 


前  言


第一部分  准备篇
第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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值