Jython程序设计 [转]

::-- ZoomQuiet [2005-11-01 03:32:18]

1. 简介

1.1. 前言

Jython语言结合了Python的灵活高效与Java的强大。本书全面介绍了这门语言,有助于Java开发者提高开发与部署应用程序的能力。主要内容包括:Jython介绍及其详细语法,用Java类扩展Jython,用Jyhon编写各种应用程序等等。本书详尽地阐述了Java与Jython的异同以及Java与Jython进行组合的强大威力,书中实例丰富,通过大量的小实例讲述了Jython的使用方法。

本书编排独特、讲解透彻,适合于有一定经验的Java应用开发者使用。

1.2. 语言特性

无缝一词在本书中十分重要而且不断重现。扩展其他语言像Perl或Python,需要专用的API或繁冗的封装器。如果不加改造,任何C代码都不可能在Perl或Python中使用,而任何的Java代码却能在Jython中运行。由于与Java的无缝集成,你可以在Jython中引入、使用任何Java类并创建派生类。不仅包括那些为某个特定API而写的类或与某个特定工具打包的类,而且包括任何Java类。另外你还能将Jython编译成Java的字节代码使其在Java的框架内运行。你甚至可以在Java中引入、使用任何Python类并创建派生类。

最有趣的事情是Jython和Java的差别并不构成很大的麻烦,相反却能互补。Jython的交互模式提供了一个测试和研究Java类的快速方法,而Java的接口和抽象类给Jython派生类提供了一个指定协议的很好的方法。Jython的动态类型对快速原型和灵活性有很大的帮助,而Java的静态类型也增加了运行时的效率和类型的安全性。这些互补由于其无缝性而显得很好。增加程序的花费来平衡这些特性将对程序的功能有副作用。幸运的是Jython使它们简单、易于理解,并且不需要额外的花费。

1.2.1. 什么是Jython

vanRossum是Python的原创者,继而在Python的快速发展中产生了一大群高水平的设计者和程序员。使用Python的开发人员增长迅速,并一直在持续增长。然而Sun的Java编程语言也是深人人心的。随着用Java实现的项目的数量接近了用C/C++实现的项目,Python的Java实现也变得很有必要。Jython,最初叫做JPython,就是:Python语言的Java实现。为避免混淆,本书用CPython来表示Python的C语言实现,而用Jython来表示Java实现,而Python表示实现的中性概念和Python语言规范的设计特征。

1.2.2. Jython的历史

Rossum在国家研究动力中心(CNRI)的同事。JimHugunin认识到Python编程语言用Java实现的重要性,并实现了最初名为JPython的语言。由于要开发aspectj(http://aspectj.org/),JimHugunin不能继续致力于JPython了。所以当Python的开发者准备离开CNRI时,由当时也在CNRI的Barry Warsaw继续领导开发。

1.2.3. 为什么需要Jython

Jython由于继承了Java和Python二者的特性而显得很独特。本节介绍一下这些特性及其意义。

由于与Java的无缝集成,Jython能使任何部署了Java应用和框架的公司受益而不需要额外的工作。接受任何一种部门的编程语言,对任何一个公司而言都是不容易的,需要深思熟虑,因为这牵涉到整体结构、服务器和外围的工具。Jython作为Java的一个无缝集成的语言,可以在已存在的Java应用上无缝增加而不需要重大抉择。很多公司都花费了很多资金来建立Java的应用,这使采用CPython、Perl、Ruby、PHP和其他不能透明地集成已有Java实现的高级语言的效益降低,吸引力下降。而Jython有能力对已存在的Java框架进行补充,且二者能无缝地结合。 效率

内省和动态执行

Jython也包括了所有函数编程所需要的工具。这意味着强制的面向对象的函数编程在Jython中得到支持。这显然在教学上很有意义,它使Jython程序员能选择最适合于特定问题的编程语言而不是由语言强加。函数化的工具如列表包含、lambda表单、map、filter和reduce也对减少代码的行数、降低复杂性和名字重绑定数(名字重绑定有很大副作用)起到很大的作用。

1.3. 本书内容

1.3.1. 第1章"Jython语法、语句和注释"

1.3.2. 第2章"运算符、类型和内置函数"

=== 第3章介绍Jython的错误、异常和警告===

Java没有函数,但函数在Jython中是很重要的一部分。

1.3.3. 第4章"用户定义的函数和变量的作用域"

Jython有模块,这是另外一个Java没有的东西。

1.3.4. 第5章"模块和包"

1.3.5. 第6章"类、实例和继承"

1.3.6. 第7章"高级类"

1.3.7. 第8章"用jyhonc编译Jython"

1.3.8. 第9章"在Java中嵌入和扩展Jython"

1.3.9. 第10章"GUI开发"

Toolkit(AWT)和Swing应用程序接口。Jython由于其增加了自动bean属性和事件而使图形应用的开发更加快捷。第10章详细介绍了自动bean属性和事件,但本质上是由于Jython能为这些特征自动搜索组件并为建立属性和事件的句柄建立快捷方式。该方式平衡了Jython的语法特征来简化和加速应用。第10章也包含了使用Jython来创建Javaapplet的信息。

1.3.10. 第10章"DB开发"

1.3.11. 第12章"服务器端的Web编程"


本书读者对象


本书不适合于哪些人

如果你已经是一个Python的高级程序员,你也不必读此书。本书中大部分的内容都是Python的语法和使用。虽然有很多Java专有的例子和信息,但大部分关于语法和使用的章节会使熟练的Python程序员觉得是重复的。


其他资源

1.3.12. 书目

译者序
前言

第一部分 Jython简介

第1章 Jython语法、语句和注释

1.1 交互式控制台
1.2 行分隔符和块缩进语法
1.2.1 分号
1.2.2 反斜线
1.2.3 开放式分组
1.2.4 三重引用
1.2.5 代码程序块
1.3 注释
1.4 文档字符串
1.5 语句
1.5.1 简单语句
1.5.2 复合语句
1.6 比较Jython和Java

第2章 运算符、类型和内置函数

2.1 标志符
2.2 Jython数据对象
2.2.1 数字对象
2.2.2 序列对象
2.2.3 映射对象
2.2.4 PyNone
2.3 运算符
2.3.1 算术运算符
2.3.2 移位运算符
2.3.3 比较运算符
2.3.4 布尔运算符
2.3.5 序列运算符
2.4 内置功能
2.4.1 内省函数
2.4.2 数字函数
2.4.3 类型转换函数
2.4.4 内置文件函数
2.4.5 序列函数
2.4.6 动态语言函数
2.4.7 属性工具
2.4.8 函数工具
2.5 杂类函数
2.6 Jython数据类型和Java数据类型的比较
2.7 Java类型

第3章 错误和异常

3.1 Jython异常
3.2 异常处理
3.3 raise语句
3.4 traceback
3.5 assert语句和-debug-变量
3.6 警告框架
3.7 比较Jython和Java

第4章 用户定义的函数和变量的作用域

4.1 定义函数
4.1.1 缩进
4.1.2 返回值
4.1.3 文档字符串
4.1.4 函数属性
4.1.5 参数
4.2 名空间
4.2.1 两个静态范围
4.2.2 静态嵌套的范围
4.2.3 在用户定义函数中的特殊变量
4.3 递归
4.4 内置的函数编程工具
4.5 同步

第5章 模块和包

5.1 import语句
5.2 Jython和Java的比较
5.3 Python的package.module层次
5.3.1 sys.path变量
5.3.2 什么是模块
5.3.3 特殊的模块变量
5.3.4 什么是包
5.4 Java的package.class层次
5.5 重载

第6章 类、实例和继承

6.1 封装、抽象和信息隐藏
6.2 定义Jython类
6.3 Jython类和实例属性
6.4 构造函数
6.5 终结器和析构函数
6.6 继承
6.6.1 派生Jython类
6.6.2 派生Java接口
6.6.3 派生Java类
6.7 方法重载
6.8 例子类
6.8.1 单元素
6.8.2 文件grep效用
6.8.3 HTTP报文头
6.8.4 树

第7章 高级类

7.1 预先存在的类属性
7.2 预先存在的实例属性
7.3 一般定制的特殊方法
7.4 动态的属性访问
7.5 可调用的钩子:-call-
7.6 特殊的比较方法
7.6.1 少比较方法
7.6.2 多比较方法
7.7 对象"真值"
7.8 仿真内置数据对象
7.8.1 仿真序列
7.8.2 仿真映射
7.8.3 仿真数字类型

第二部分 Jython内核和用Java集成Jython

第8章 用jythonc编译Jython

8.1 jythonc是什么
8.2 用jythonc编译模块
8.3 路径和经过编译的Jython
8.3.1 在JVM里设置python.home属性
8.3.2 显式地把目录加到模块里的sys.path
8.3.3 增加python.Path或python.prepath属性
8.3.4 冻结应用程序
8.3.5 写一个定制的-import-()钩子
8.4 jythonc选项
8.5 与Java兼容的类
8.5.1 一个与Java兼容的例子Jython类
8.5.2 模块全局对象和与Java兼容类

第9章 在Java里嵌入和扩展Jython

9.1 嵌入Jython
9.2 嵌入InteractiveInterpreter
9.3 嵌入InteractiveConsole
9.4 扩展Jython
9.4.1 ClassDictInit
9.4.2 -doc-字符串
9.4.3 异常
9.4.4 参数
9.4.5 在Java里引入Jython模块
9.4.6 使用PyObject
9.4.7 用Java写Jython类
9.4.8 增加Java类作为内置Jython模块

第三部分 用Jython编写应用程序

第10章 GUI开发

10.1 比较Java和Jython的GUI
10.2 Bean属性和事件
10.2.1 Bean属性
10.2.2 Bean属性和元组
10.2.3 Bean事件
10.2.4 名字优先权
10.3 pawt包
10.4 例子
10.4.1 简单的AWT图形
10.4.2 增加事件
10.4.3 图像
10.4.4 菜单和菜单事件
10.4.5 拖放
10.4.6 Swing

第11章 数据库编程

11.1 DBM文件
11.2 序列化
11.2.1 marshal模块
11.2.2 pickle和cPickle模块
11.2.3 Shelves
11.2.4 PythonObjectInputStream
11.3 数据库管理系统
11.3.1 MySQL
11.3.2 PostgreSQL
11.4 JDBC
11.5 zxJDBC
11.5.1 连接到数据库
11.5.2 游标
11.5.3 zxJDBC和元数据
11.5.4 预编译语句
11.5.5 错误和警告

第12章 服务器端Web编程

12.1 JythonServletContainer
12.2 定义简单的ServIet类
12.2.1 一个简单的JavaServlet
12.2.2 一个简单的JythonServlet
12.2.3 测试Java和JythonServlet
12.3 GenericServlet的更多内容
12.3.1 Init(ServletConfig)方法
12.3.2 service(ServletRequest,ServletResponse)方法
12.3.3 destroy()方法
12.4 HttpServlet
12.4.1 HttpServlet方法
12.4.2 HttpServlet例子
12.4.3 HttpServletRequest和HttpServletRes-ponse
12.5 PyServlet
12.5.1 安装PyServlet
12.5.2 测试PyServlet
12.6 cookie
12.7 Session
12.8 数据库和Servlet
12.9 JSP
12.9.1 jythonc编译类和JSP
12.9.2 在JSP中嵌入PythonInterpreter
12.9.3 一个JythonTaglib
12.9.4 BSF

附录

附录A Jython语句和内置函数快速参考

JythonDesign (last edited 2009-12-25 07:17:41 by localhost)