首页>参考读物>计算机科学与技术>软件与程序设计

Java脚本编程:语言、框架与模式
作者 : Dejan Bosanac
译者 : 翟育明 俞黎敏
出版日期 : 2008-06-23
ISBN : 7-111-23849-2
定价 : 45.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 308
开本 : 16开
原书名 : Scripting in JAVA: Languages,Frameworks,and Patterns
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

发挥脚本编程在Java平台的强大力量
  学习Groovy等新鲜出炉的热门技术
  利用Java平台新的脚本支持,可以提高效率,简化开发过程,并解决从原型到Web应用程序编程的各种问题。本书涵盖了利用Java编写脚本的主要方面,包括振奋人心的新Groovy脚本语言及Java的新脚本API以及Web Scripting API。
  本书从回顾脚本语言的角色和价值入手,然后针对Java平台系统地介绍了当今最好的脚本解决方案。介绍了Java脚本框架,指明了将脚本整合到Java应用程序中去的公认模式,并展现了从单元测试到工程构建的一切实用技术。本书用大量代码实例来阐述重要的概念,示范了在现实Java工程中运行的脚本。

  本书内容包括:
  ●为什么脚本语言能为Java编程人员提供惊人的价值。
  ●在JVM内部运行的脚本语言:BeanShell、JavaScript和Python。
  ●Groovy详解:安装、配置、与Java类似的语法、Java整合及安全等。
  ●Groovy扩展:访问数据库、使用XML,并构建简单的Web应用程序和基于Swing的UI。
  ●Bean脚本框架:实现、基础抽象和使用范例。
  ●基于Java脚本的传统模式和新模式。
  ●JSR 223 Scripting API:语言绑定、发现机制、线程、可插拔的命名空间等。
  ●JSR 223 Web Scripting Framework:编写在Servlet容器内生成Web内容的脚本。

图书特色

图书前言

Java是一种优秀的面向对象编程语言。它给软件开发人员提供了许多益处,其中包括一种很好的面向对象的方法、隐式的内存管理和动态的链接。这些语言特征就是Java之所以普及和广受认可的一大原因。
  但是Java远远不只是一种编程语言,它还是一个完整的开发平台。这意味着它具备提供虚拟机的运行时环境(JRE),以及帮助开发人员完成他们想要的大多数任务的标准应用程序编程接口(API)。这种集成式运行时环境的主要好处在于它真正是平台独立的,并简化了软件开发。
  另一方面,多年来,脚本语言已经在信息技术基础结构中扮演了重要的角色。它们广泛用于各种各样的任务,从工作自动化到复杂软件项目的原型和实现。
由此我们可以得出结论,Java开发平台也可以从脚本概念和语言中受益。Java开发人员可以在公认为最适合于这项技术的领域中使用脚本语言。就像我们将看到的,Java平台与脚本语言的这种结合给整个软件开发过程增添了特别的品质。
本书讲解了脚本语言背后的概念,概括了Java开发人员可以使用的解决方案,并探讨了在Java应用程序中应用脚本语言的用例和设计模式。
  本书编排
  本书由五个部分组成。
  第一部分
  本书的第一部分有两章,概括描述了脚本语言:
 ■第1章定义了脚本语言的基本特征,并将它们与系统编程语言进行对比。
 ■第2章阐述了传统(原生)的脚本语言在整个信息技术基础结构中的作用,还讲述了随着时间的推移在不同系统中使用脚本语言的各种任务。
第二部分
讲解完脚本语言的基础概念和用法之后,我们就准备关注Java平台实际的技术和解决方案了。本书的这个部分包含了以下几章:
 ■第3章从讲解Java平台的基础元素和解释脚本语言的适用之处开始。之后,讲解了JVM(Java虚拟机)可以使用的三大流行脚本语言(BeanShell、JavaScript和Python)的主要特性以及如何用它们来与Java应用程序进行交互。本章的最后讲解了Java开发人员可以使用的其他解决方案。
 ■第4章详细讲解了Groovy脚本语言。涵盖了这种语言中内建的类似于Java的语法和所有的脚本概念,并讨论了Groovy与Java的整合,以及一些与安全性相关的问题。
 ■第5章涵盖了一些有助于日常编程任务的Groovy扩展。还解释了Java程序员如何访问数据库、创建和处理XML文件,以及如何利用第4章中所涵盖的Groovy中特定于脚本的特性,轻松地创建简单的Web应用程序和Swing用户界面。
 ■第6章讲解了一般的Java脚本框架。除了解释如何在工程中给任何兼容的脚本语言实现一般的支持之外,还讲解了在Bean Scripting Framework(BSF)中实现的一些基本抽象,并介绍了一些成功的用法。
第三部分
本书的这个部分主要关注脚本语言在实际Java项目中的使用:
 ■第7章涵盖了用脚本完成日常编程任务的话题,例如,其中有单元测试、交互式调试和项目构建。
 ■第8章讲解了涉及脚本语言的Java应用程序设计模式。介绍了如何利用脚本来实现传统设计模式中的某些部分,并介绍了一些只特定于脚本环境的新设计模式,还讲解了这些设计模式的利与弊,以及它们的用途。
第四部分
本书的这个部分涵盖了“Scripting for the Java Platform”规范,它是根据JSR(Java Specification Request)223而创建的。还特别包括了该规范定义的两个API:
 ■第9章涵盖了Scripting API,这是Java平台标准的一般脚本框架。这个框架的用途与Bean Scripting Framework一样,但是Scripting API带来了许多现代脚本框架需要的新特性。Scripting API是Java平台的一个标准部分,Mustang(Java SE 6)发行包中包含了它。
 ■第10章讲解了Web Scripting Framework,这个框架构建在Scripting API之上,创建这个框架来使脚本语言能够在一个Servlet容器内部产生Web内容。本章解释了原生的脚本语言(如PHP)如何与Java平台结合,以便给Web应用程序开发带来更多的灵活性。
第五部分
本书的最后由三个附录组成。这些附录的主要目的在于提供关于文中涉及的某些技术的安装和使用细节:
 ■附录A描述如何安装、构建和配置Groovy脚本语言。要从文本中运行代码范例(code sample)需要有效地安装Groovy解释器。
 ■附录B提供关于如何给集成开发环境(Integrated Development Environment,IDE)安装一般Groovy支持的说明。
 ■附录C描述如何安装JSR 223的参考实现(Reference Implentation,RI),运行第10章中的实例时需要它。
我希望你会喜欢读这本书。
关于本书配套网站
本书通过网站(www.scriptinginjava.net)对内容进行了延伸,你在该网站上可以找到以下信息:
 ■书中介绍的所有实例的源代码都可以下载。
 ■书籍新闻、更新和增补。
 ■与软件开发领域相关的新闻和信息。致  谢
我要感谢我的家人、朋友和同事,他们在我编写本书期间给予我无限的耐心与支持。我还要感谢AddisonWesley公司对本书的信任,并创造了良好的工作气氛,特别是编辑Greg Doench和Ann Sellers。我还要感谢所有的技术审核人员,尤其是George Jempty、Kevin Davis和Rich Rosen,他们提供了很有价值的反馈,并且在我束手无策的时候帮助我坚持方向。如果没有Audrey Doyle,本书将晦涩难懂,感谢他帮助我编排了原稿。
最后,如果没有为书中所涵盖的项目付出辛劳的全体开发人员,本书也是不可能出版的,由衷地感谢他们。作 者 简 介
Dejan Bosanac是一名专业的软件开发人员和技术顾问。他致力于各种技术的整合和互用,尤其是与Java和Web相关的应用。他花了几年的时间开发复杂的软件项目,从高流量的网站到企业级应用程序。他是JSR 223专家组的成员之一。
译 者 简 介

翟育明 现任景德镇陶瓷学院国家日用及建筑陶瓷工程技术研究中心信息研究室讲师。1994年6月毕业于江西师范大学计算机科学系,获理学学士学位,2006年2月获华东师范大学软件工程硕士学位。曾参与国家“863”项目《陶瓷CAD集成设计平台》、全电办“倍增计划”项目《建筑陶瓷行业ASP平台》和江西省科技厅重大招标项目《面向陶瓷行业的ASP应用服务平台》等多项省部级科研项目。主要研究方向是电子政务、陶瓷信息化和电子商务等。

俞黎敏(ID:YuLimin,网名:阿敏总司令) 技术顾问,深入了解电力、电信行业的系统,并负责核心系统研发与管理工作。2007年12月03日加入毕益辉系统(中国)有限公司广州分公司(BEA广州),担任Business Interaction Division(BID)技术顾问,主要负责ALUI、ALBPM、PEP产品的技术支持工作。他是开源爱好者,曾经参与Spring中文论坛组织“Spring 2.0 Reference”中文翻译的一审与二审工作,“满江红开放技术研究组织”的“Seam 1.2.1 Reference”中文翻译工作,并组织和完成“Seam 2.0 Reference”中文翻译工作。他利用业余时间担任CSDN、CJSDN、Dev2DeV、Matrix、JavaWorldTW、Spring中文等Java论坛版主,在各大技术社区为推动开源和敏捷开发做出了积极的贡献。博客地址为:
http://YuLimin.JavaEye.com

封底文字

发挥脚本编程在Java平台的强大力量 学习Groovy等新鲜出炉的热门技术 利用Java平台新的脚本支持,可以提高效率,简化开发过程,并解决从原型到Web应用程序编程的各种问题。本书涵盖了利用Java编写脚本的主要方面,包括振奋人心的新Groovy脚本语言及Java的新脚本API以及Web Scripting API。 本书从回顾脚本语言的角色和价值入手,然后针对Java平台系统地介绍了当今最好的脚本解决方案。介绍了Java脚本框架,指明了将脚本整合到Java应用程序中去的公认模式,并展现了从单元测试到工程构建的一切实用技术。本书用大量代码实例来阐述重要的概念,示范了在现实Java工程中运行的脚本。 本书内容包括: ●为什么脚本语言能为Java编程人员提供惊人的价值。 ●在JVM内部运行的脚本语言:BeanShell、JavaScript和Python。 ●Groovy详解:安装、配置、与Java类似的语法、Java整合及安全等。 ●Groovy扩展:访问数据库、使用XML,并构建简单的Web应用程序和基于Swing的UI。 ●Bean脚本框架:实现、基础抽象和使用范例。 ●基于Java脚本的传统模式和新模式。 ●JSR 223 Scripting API:语言绑定、发现机制、线程、可插拔的命名空间等。 ●JSR 223 Web Scripting Framework:编写在Servlet容器内生成Web内容的脚本。

作者简介

Dejan Bosanac:Dejan Bosanac: 是一名专业的软件开发人员和技术顾问。他致力于各种技术的整合和互用,尤其是与Java和Web相关的应用。他花了几年的时间开发复杂的软件项目,从高流量的网站到企业级应用程序。他是JSR 223专家组的成员之一。

译者简介

翟育明 俞黎敏:暂无简介

译者序

当今,脚本语言已经在信息技术基础结构中扮演了重要的角色。它们广泛用于各种各样的任务,从工作自动化到复杂软件项目的原型和实现,而且在越来越多的应用中也显得越来越重要。随着时间的推移,脚本语言在不同的系统中有着不同的任务,但仍不可忽略传统(原生)的脚本语言在整个信息技术基础结构中的作用。
  首先,本书从脚本语言的基础概念和用法入手,介绍如何通过语言的基本特征来区分脚本语言与系统编程语言,了解脚本语言幕后的概念,并且可以学到Java开发人员可以使用的解决方案,以及在Java应用程序中如何应用脚本语言和相关的设计模式。
  接着,本书开始关注Java平台实际的技术和解决方案。目前,在JVM当中可以使用的有三大流行脚本语言——BeanShell、JavaScript和Python,在了解它们的主要特性之后,可以利用它们来与Java应用程序进行交互。本书通过涵盖Groovy内建的类似于Java的语法和所有的脚本概念,讨论了Groovy与Java的整合,以及一些与安全性相关的问题,并且涵盖了一些可以帮助日常编程任务的Groovy扩展。还介绍了如何访问数据库、创建和处理XML文件,以及如何利用Groovy中特定于脚本的特性,轻松地创建简单的Web应用程序和Swing用户界面,从而详细讲解了Groovy脚本语言。本书还通过Bean Scripting Framework(BSF)讲解了一般的Java脚本框架。除了解释如何在项目中给任何兼容的脚本语言实现一般的支持之外,还讲解了在BSF中实现的基础的一些基本抽象,并介绍了一些成功的用法。
  同时,本书还关注脚本语言在实际Java项目中的使用,关于给日常编程任务使用脚本的话题,例如,其中有单元测试、交互式调试和项目构建,Java中的实用脚本。在脚本模式中,讲解了涉及脚本语言的Java应用程序设计模式。介绍了如何利用脚本来实现传统设计模式中的某些部分,并介绍了一些只特定于脚本环境的新设计模式。还讲解了这些设计模式的利与弊,以及它们的用途。
  根据JSR 223而创建的Scripting for the Java Platform规范中,包括了该规范定义的两个API:先是作为Java平台一个标准部分的Scripting API,在Mustang(Java SE 6)发行包中已经直接包含了它。Scripting API与BSF一样,但是它带来了许多现代脚本框架所需要的新特性。另一个则是构建在Scripting API之上的Web Scripting Framework框架,创建它使脚本语言能够在一个Servlet容器内部产生Web内容。此外,还解释了原生的脚本语言(如PHP)如何与Java平台结合,以便给Web应用程序开发带来更多的灵活性。
  最后,在附录中提供了关于本书提及的某些技术安装和使用的细节,例如,描述了如何安装、构建和配置Groovy脚本语言,如何给集成开发环境安装Groovy支持的说明,并且还描述了如何安装第10章中实例运行时所需要的JSR 223的参考实现。
  虽然我们在翻译的过程中竭力以求信、达、雅,但限于自身水平,必定会有诸多不足,还望各位读者不吝指正。大家可以通过访问我的博客http://YuLimin.JavaEye.com/或者发送电子邮件到YuLimin@163.com来交流。
  本书由我组织进行翻译,翟育明翻译了第1~8章,我翻译第9章和第10章,并负责全书所有章节的审校。参与本书翻译和审校的还有:荣浩、杨春花、凌家亮、王琳、邱庆举、李勇、师文丽、王建旭、程旭文、罗兴、刘传飞、林仪明,在此再次深表感谢。
  快乐分享,实践出真知,最后,祝大家能够像我一样在阅读中享受本书带来的乐趣!
  Read a bit and take it out,then come back read some more.

  俞黎敏
  2008年4月

图书目录

译者序
前言
致谢

第一部分

第1章 脚本简介1
 1.1 背景1
1.2 脚本语言的定义3
 1.2.1 编译器与解释器3
 1.2.2 产品中的源代码5
 1.2.3 类型策略6
 1.2.4 数据结构8
 1.2.5 代码作为数据9
 1.2.6 小结11
1.3 脚本语言和虚拟机12
1.4 脚本和系统编程的对比12
 1.4.1 运行时性能13
 1.4.2 开发速度13
 1.4.3 健壮性14
 1.4.4 维护16
 1.4.5 极限编程16
1.5 混合法17
1.6 一个脚本案例18
1.7 小结18
第2章 适用脚本语言的应用程序19
 2.1 组装19
 2.1.1 UNIX Shell语言20
 2.1.2 Perl20
 2.1.3 Tcl21
2.2 原型21
2.3 定制23
2.4 软件开发支持24
 2.4.1 项目构建25
 2.4.2 测试26
2.5 运维与管理27
2.6 用户界面编程28
2.7 用例29
 2.7.1 Web应用程序29
 2.7.2 脚本和UNIX33
 2.7.3 游戏中的脚本33
2.8 其他特征34
 2.8.1 可嵌入34
 2.8.2 可扩展34
 2.8.3 易于学习和使用34
2.9 小结35

第二部分

第3章 JVM内部的脚本语言37
 3.1 帽底乾坤38
3.2 脚本语言概念40
3.3 BeanShell40
 3.3.1 入门40
 3.3.2 基本语法42
 3.3.3 松类型的语法42
 3.3.4 语法风格43
 3.3.5 命令45
 3.3.6 方法45
 3.3.7 对象46
 3.3.8 实现接口46
 3.3.9 嵌入Java47
3.4 Jython50
 3.4.1 入门50
 3.4.2 基本语法52
 3.4.3 使用Java53
 3.4.4 实现接口54
 3.4.5 异常处理56
 3.4.6 嵌入Java56
 3.4.7 小结57
3.5 Rhino58
 3.5.1 入门58
 3.5.2 使用Java59
 3.5.3 实现接口59
 3.5.4 JavaAdapter60
 3.5.5 嵌入Java60
 3.5.6 Host Object63
 3.5.7 小结65
3.6 Groovy65
3.7 其他脚本语言65
 3.7.1 JRuby65
 3.7.2 Tcl/Java66
 3.7.3 JudoScript66
 3.7.4 ObjectScript66
3.8 小结66
第4章 Groovy67
 4.1 为什么需要Groovy67
4.2 安装67
4.3 运行Groovy脚本68
 4.3.1 用交互式的Shell68
 4.3.2 用交互式的控制台69
 4.3.3 执行脚本文件69
4.4 编译Groovy脚本70
 4.4.1 依赖70
 4.4.2 Classpath70
 4.4.3 Ant Task71
4.5 脚本结构72
4.6 语言语法74
 4.6.1 Java兼容性74
 4.6.2 语句74
 4.6.3 松类型75
 4.6.4 类型技巧76
 4.6.5 String78
 4.6.6 GString79
 4.6.7 正则表达式80
 4.6.8 集合81
 4.6.9 逻辑分支84
 4.6.10 循环86
 4.6.11 类88
 4.6.12 操作符重载90
 4.6.13 GroovyBean92
 4.6.14 闭包94
4.7 系统操作101
 4.7.1 文件101
 4.7.2 进程104
4.8 嵌入Java105
4.9 安全性109
4.10 小结112
第5章 高级的Groovy编程113
 5.1 GroovySQL113
 5.1.1 groovy.sql.Sql115
 5.1.2 groovy.sql.DataSet122
5.2 Groovlet124
5.3 Groovy模板129
5.4 GroovyMarkup131
 5.4.1 groovy.xml.MarkupBuilder132
 5.4.2 groovy.util.NodeBuilder134
 5.4.3 groovy.xml.SaxBuilder136
 5.4.4 groovy.xml.DomBuilder137
 5.4.5 groovy.xml.Namespace139
 5.4.6 groovy.util.BuilderSupport139
5.5 Groovy和Swing141
 5.5.1 TableLayout142
 5.5.2 TableModel144
5.6 小结145
第6章 Bean Scripting Framework146
 6.1 Bean Scripting Framework简介146
6.2 入门147
6.3 基本概念147
 6.3.1 架构147
 6.3.2 脚本语言的注册148
 6.3.3 管理器和引擎初始化149
 6.3.4 使用脚本150
6.4 使用脚本文件153
6.5 方法和函数154
 6.5.1 call()154
 6.5.2 apply()156
6.6 数据绑定158
 6.6.1 注册Bean158
 6.6.2 声明Bean160
6.7 编译161
6.8 应用程序165
 6.8.1 JSP166
 6.8.2 XalanJ(XSLT)169
6.9 小结174

第三部分

第7章 在Java实践脚本175
 7.1 单元测试175
 7.1.1 JUnit基础知识176
 7.1.2 GroovyTestCase类178
 7.1.3 断言方法179
 7.1.4 测试套件181
 7.1.5 用脚本作为单元测试案例183
 7.1.6 小结183
7.2 交互式调试183
7.3 构建工具186
 7.3.1 BSF支持189
 7.3.2 GroovyMarkup(AntBuilder)191
 7.3.3 小结195
7.4 Shell Scripting196
 7.4.1 Classpath196
 7.4.2 实例197
7.5 管控和管理199
7.6 小结204
第8章 脚本模式205
 8.1 脚本化组件模式206
 8.1.1 问题206
 8.1.2 解决方案206
 8.1.3 结果207
 8.1.4 范例代码207
 8.1.5 相关模式208
8.2 中介者模式(胶合代码模式)208
 8.2.1 问题208
 8.2.2 解决方案209
 8.2.3 结果210
 8.2.4 范例代码210
 8.2.5 相关模式217
8.3 脚本对象工厂模式217
 8.3.1 问题217
 8.3.2 解决方案218
 8.3.3 结果218
 8.3.4 范例代码218
 8.3.5 相关模式220
8.4 观察者(广播)模式220
 8.4.1 问题220
 8.4.2 解决方案221
 8.4.3 结果221
 8.4.4 范例代码222
 8.4.5 相关模式227
8.5 扩展点模式227
 8.5.1 问题227
 8.5.2 解决方案227
 8.5.3 结果228
 8.5.4 范例代码228
 8.5.5 相关模式231
8.6 Active File模式231
 8.6.1 问题231
 8.6.2 解决方案231
 8.6.3 结果231
 8.6.4 范例代码231
8.7 小结235

第四部分

第9章 Scripting API237
 9.1 动机和历史237
9.2 简介238
9.3 入门239
9.4 架构239
9.5 发现机制240
9.6 引擎元数据241
9.7 创建和注册脚本引擎242
 9.7.1 创建方法243
 9.7.2 注册方法245
9.8 执行求值245
9.9 ScriptException248
9.10 绑定249
 9.10.1 引擎范围249
 9.10.2 全局范围253
 9.10.3 脚本上下文256
9.11 代码生成265
 9.11.1 输出语句265
 9.11.2 方法调用语法266
 9.11.3 程序267
9.12 其他引擎接口268
 9.12.1 可调用268
 9.12.2 可编译271
9.13 线程273
9.14 动态绑定274
9.15 小结276
第10章 Web Scripting Framework277
 10.1 架构277
 10.1.1 上下文277
 10.1.2 Servlet278
 10.1.3 交互279
10.2 入门280
10.3 配置282
 10.3.1 取消脚本282
 10.3.2 脚本路径283
 10.3.3 脚本方法283
 10.3.4 语言许可284
 10.3.5 显示结果284
10.4 绑定286
 10.4.1 应用程序286 10.4.2 请求287
 10.4.3 响应289
 10.4.4 Servlet290
10.5 include方法290
10.6 forward方法292
10.7 会话共享293
10.8 语言标签296
10.9 线程问题298
10.10 架构挑战298
 10.10.1 Java与PHP应用程序的整合299
 10.10.2 PHP Web应用程序中的Java
业务逻辑299
 10.10.3 Java Web应用程序中的PHP
视图301
10.11 小结302

第五部分

附录A Groovy的安装303
附录B Groovy的IDE支持305
附录C 安装JSR 223307

教学资源推荐
作者: 邱李华 曹青 郭志强 编著
作者: Y. Daniel Liang
作者: 刘海燕 荆涛 主编 王子强 武卉明 杨健康 周睿 编著
参考读物推荐
作者: 邵丁丁 著
作者: 黄隽实 著
作者: 陈营辉 赵海波
作者: Bruce A.Tate