2005年11月01日 星期二 11:10
Jython语言结合了Python的灵活高效与Java的强大。本书全面介绍了这门语言,有助于Java开发者提高开发与部署应用程序的能力。主要内容包括:Jython介绍及其详细语法,用Java类扩展Jython,用Jyhon编写各种应用程序等等。本书详尽地阐述了Java与Jython的异同以及Java与Jython进行组合的强大威力,书中实例丰富,通过大量的小实例讲述了Jython的使用方法。 本书编排独特、讲解透彻,适合于有一定经验的Java应用开发者使用。 Jython是两种广泛流行语言Java和Python的组合。Java已被广泛地接受,这可从很多公司都已配置了基于Java的应用得以见证。另外Java有庞大的可利用的类库,并有很详尽的文档。Python则具有很好的灵活性,开发快速,容易使用。在两种语言之间做出选择是很难的事,但有了Jython,就不再需要做这种选择了。Jython能够实现在Java或Python中实现的任何类、算法和模式而不需考虑其他语言,它能在这两种语言之间保持几乎无缝的操作。 无缝一词在本书中十分重要而且不断重现。扩展其他语言像Perl或Python,需要专用的API或繁冗的封装器。如果不加改造,任何C代码都不可能在Perl或Python中使用,而任何的Java代码却能在Jython中运行。由于与Java的无缝集成,你可以在Jython中引入、使用任何Java类并创建派生类。不仅包括那些为某个特定API而写的类或与某个特定工具打包的类,而且包括任何Java类。另外你还能将Jython编译成Java的字节代码使其在Java的框架内运行。你甚至可以在Java中引入、使用任何Python类并创建派生类。 在Jython和Java中也有一些小的差别,正确理解这些差别对理解Jython是很有帮助的。Java是一种类型丰富的语言,而Jython则使用动态类型而没有明显的类型定义。Java有一些包含类的包,而Jython有包、模块、类和函数。Java必须编译,而Jython能交互式地运行,解释一个非编译的脚本或编译成字节码。Java类有像private和Protected的存取符,而Jython仅有最小的存取限制而没有明显的像Private的修饰符。 最有趣的事情是Jython和Java的差别并不构成很大的麻烦,相反却能互补。Jython的交互模式提供了一个测试和研究Java类的快速方法,而Java的接口和抽象类给Jython派生类提供了一个指定协议的很好的方法。Jython的动态类型对快速原型和灵活性有很大的帮助,而Java的静态类型也增加了运行时的效率和类型的安全性。这些互补由于其无缝性而显得很好。增加程序的花费来平衡这些特性将对程序的功能有副作用。幸运的是Jython使它们简单、易于理解,并且不需要额外的花费。 什么是Jython 要了解Jython,首先要了解Python。Python是用C编写的高级的、面向对象的、开放源代码的编程语言。Cuido vanRossum是Python的原创者,继而在Python的快速发展中产生了一大群高水平的设计者和程序员。使用Python的开发人员增长迅速,并一直在持续增长。然而Sun的Java编程语言也是深人人心的。随着用Java实现的项目的数量接近了用C/C++实现的项目,Python的Java实现也变得很有必要。Jython,最初叫做JPython,就是:Python语言的Java实现。为避免混淆,本书用CPython来表示Python的C语言实现,而用Jython来表示Java实现,而Python表示实现的中性概念和Python语言规范的设计特征。 Jython是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是一个Python语言在Java中的完全实现。Jython也有很多从CPython中继承的模块库。最有趣的事情是Jython不像CPython或其他任何高级语言,它提供了对其实现语言的一切存取。所以Jython不仅给你提供了Python的库,同时也提供了所有的Java类。这使其有一个巨大的资源库。 Jython和Python强调了代码的简明性、方便性和易读性。Jython使用缩排来对代码块定界以避免使用在Java中的大括号。Jython用新的一行来表示一个新的语句的开始,并有几个重要的区别,如允许在每个语句后省略分号。Jython没有像在Java中的public、private和protected存取符,这样就给程序员提供了快速开发所需要的灵活性,并将注意力集中在程序逻辑上。正像前面所提到的,Jython不用明显的静态的类型定义,故程序员不需要从程序逻辑转移到类型定义上来。 Jython的历史要追溯到JimHugunin,他是Guidovan Rossum在国家研究动力中心(CNRI)的同事。JimHugunin认识到Python编程语言用Java实现的重要性,并实现了最初名为JPython的语言。由于要开发aspectj(http://aspectj.org/),JimHugunin不能继续致力于JPython了。所以当Python的开发者准备离开CNRI时,由当时也在CNRI的Barry Warsaw继续领导开发。 Python和Jython项目组从CNRI离开后,在Sourceforge上转变为一种更开放的语言模型。在此期间,一个对Jython(JPython)做了主要贡献的人FinnBock领导了Jython项目小组。正是由于FinnBock所做的杰出贡献使Jython现在成为一个如此有价值的工具。类似Jython这样的开放源代码项目与开发和维护它们的人一样杰出,从这个意义上说Jython因为有FinnBack的贡献和指导而很幸运。另外一个对Jython做了最新有价值贡献的人是SamuelePedroni。Samuele的贡献主要在Jython的类装载、导入机制等等。Finn和Samuele目前是Jython的两个主要开发者。 为什么需要Jython Jython由于继承了Java和Python二者的特性而显得很独特。本节介绍一下这些特性及其意义。 对Java类的无缝存取 在Java中实现Python可以看到有趣的Java反射API的作用。反射使Jython能无缝地使用任何Java类。Jython从CPython中继承了很多优点,但CPython不像别的专为Python所写的一样,在C和Python之间有一些问题限制了C库函数的使用。在Jython中真正解决了这个问题,使其编程的效率和生产力得到了很大的提高。 由于与Java的无缝集成,Jython能使任何部署了Java应用和框架的公司受益而不需要额外的工作。接受任何一种部门的编程语言,对任何一个公司而言都是不容易的,需要深思熟虑,因为这牵涉到整体结构、服务器和外围的工具。Jython作为Java的一个无缝集成的语言,可以在已存在的Java应用上无缝增加而不需要重大抉择。很多公司都花费了很多资金来建立Java的应用,这使采用CPython、Perl、Ruby、PHP和其他不能透明地集成已有Java实现的高级语言的效益降低,吸引力下降。而Jython有能力对已存在的Java框架进行补充,且二者能无缝地结合。 效率 计算编程语言的效率是一个很广泛的课题,它要考虑程序员的时间、总体复杂性、代码的行数、可用性、可维护性和运行效率。当然很多人不同意赋予这些变量的权重,经常是在不同的情况下偏重有所不同。然而本书的前提是Jython除运行时的效率外,其他方面都超过其他语言。Jython的运行速度是可以与其他高级语言相比的,但速度并不是高级语言的目标和特点。区别在于当加速一个需要的应用时,将Jython代码翻译成Java更有效,这是由于Jython与Java的无缝集成性。另外对所有有效的Jaya类的直接访问增加了改进已存在的类的可能性。 动态类型 在Jython中你不必像在Java中那样声明类型,因为类型是在运行时决定的。Jython的列表和映射类型是高级的多态的Java类的实例。多态意味着对象能对不同的数据类型工作。例如Jython的list类型可以是一个数字的序列、字符串的序列、字符的序列或它们的组合。动态和多态性的列是对编程的极大的贡献,从很多已放弃显式的静态类型定义的高级语言中可看出它减少了代码的行数,降低了复杂性,提高了程序的效率。 内省和动态执行 Jython有一些允许方便的对象内省和代码的动态执行的内部函数。内省是发现一个对象信息的能力,而动态执行是执行在运行时产生的代码的能力。该功能很大程度上减少了代码的行数并增加了程序的可靠性,使其更加方便维护。这也能使数据和程序结构或逻辑更好的集成而不影响重用性,因为所有的东西都是在运行时决定的。 第一类函数和函数编程 Jython与Python一样有第一类函数。第一类函数是指能像变量一样的可调用的对象。第一类函数在对事件处理和其他情况下有意义,这导致增加了Java内部类的功能。虽然Java的内部类与第一类函数类似,但它在方便性与灵活性方面有很大的不足,这是由于Jython中的第一类函数减少了Jython中的语法开销。 Jython也包括了所有函数编程所需要的工具。这意味着强制的面向对象的函数编程在Jython中得到支持。这显然在教学上很有意义,它使Jython程序员能选择最适合于特定问题的编程语言而不是由语言强加。函数化的工具如列表包含、lambda表单、map、filter和reduce也对减少代码的行数、降低复杂性和名字重绑定数(名字重绑定有很大副作用)起到很大的作用。 学习周期短 任何Java程序员在数日内就能熟悉Jython。由于有很多内容,关键在于细节的学习,但仅仅用几天的时间就能拥有Jython的快速开发功能确实是很有价值的。对于那些从事测试和技术支持的小组通常并没有很多时间去学习复杂的Java代码,但通过对Jython的学习能在开销很少的情况下很快提高公司的技术水平和效率。 写一次,处处可用 由于Jython是用Java编写的且由于其可编译成Java字节码,因此Jython也具有Java的"写一次,处处可用"的特点。Jython能运行在任何可兼容的Java1.1'或更高的Java虚拟机(JVM)版本的平台上。另外你可将Jython应用编译成自足的字节码,它能运行在任何兼容的JVM上。在Linux上编译的应用能运行在有兼容JVM的任何其他平台上。 Java安全性 Java的安全性是特别的而且越来越重要。从沙箱到信号,Jython有能力使用Java的特别的安全框架。 代码清晰性 代码的清晰性是Python最大的优点,当然也是Jython最大的优点。不必要的标点和行都避免了。Jython代码在可读性和清晰性方面近似于自然语言。这起源于Python对代码块和语句的简单描绘的承诺。缩排标记代码块,换行符标记新的语句。在此之上,语法通常支持清晰性。由于Jython代码的清晰性,其维护变得更加容易。 Unicode和国际化 Jython使用了Java的Unicode实现方法,使得它很容易实现产品的国际化。 Hotspot和开发效率 Jython的速度还不错,但不像纯Java那样快。Jython的主要特点是在开发和维护时间上。然而高级语言的开发中有很强的优先权,这在Java的Hotspot技术中尤为显著。Hotspot优化程序中那些最需要优化的部分。它的理论基础是程序的一小部分花费程序的大部分执行时间。只有优化那一部分代码才能很大程度地改变程序的性能。开发代码时就这样做效果是明显的。使用Jython来编写一个应用,然后将处理器相关的类转换成Java是程序的运行性能和程序效率之间理想的结合。Hotspot类似的技术使采用Jython和Java的高级语言开发是令人信服的。 本书内容 本书是针对那些已经熟悉Java或正在学习Java的人而编排的。一些Java专用术语像classpath、垃圾回收和接口将不再做解释,这就要求必须知道Java的基本知识。尤其是那些希望加快开发速度、嵌入解释器和增加灵活性的Java开发者将会对本书最感兴趣。虽然Jython是一门完整的编程语言,但由于其与Java是互补的而不是Java的替代物而显得很独特。 第1章"Jython语法、语句和注释"介绍了语法和语句。Python的语法是组成pythonic的很重要的组成部分。pythonic是一个使Python和Jython代码清晰、简单、独特的那些细节的描述器。Python用缩排来定界代码块,用换行符来定界语句对很多程序员来说是新颖的方法。第1章详细描述了缩排、换行符、语句的规则。另外该章还介绍了交互式解释器,它是一个Jython的模式,能立即响应你所输入的语句。该章主要是讲一些Python通用的内容,并未提到Jython独特的内容。 第2章"运算符、类型和内置函数"包括Jython的数据对象、运算符和内置函数。数据对象或类型都是异常有趣的,因为Jython能使用Python和Java二者的对象。Python的语言规范定义了Python当然也是Jython的类型,Jython专有的类型需要详细说明。详细说明包括JythonJava类型的转变。第2章也定义了Jython的内置函数。内置函数指那些不需要任何引入语句就可工作的那部分函数,这在Jython的函数中占有很大的比例。 第3章介绍Jython的错误、异常和警告,定义了Jython的内置异常以及使用try/except和try/finally语句来处理异常。异常对Jython是很重要的,但它也是运行Java类和其导致的异常的重要的一步。 Java没有函数,但函数在Jython中是很重要的一部分。第4章"用户定义的函数和变量的作用域"说明了如何定义和使用Jython函数以及如何使用Jython的函数编程工具。函数是在类中没有定义的可调用的对象,但函数编程没有一个简洁的定义。函数编程循环寻找表达式的结果。Jython提供了所有的需要学习和使用函数编程的工具。这些工具已出现在第2章。 Jython有模块,这是另外一个Java没有的东西。第5章"模块和包"描述了Jython的模块:Jython也像Java一样有包,但如第5章所说明的,Jython的包不同于Java的对应。在Jython的包、模块、类以及Java的包、类中,import语句变得很重要。第5章详细说明了模块和包的import语句。 第6章"类、实例和继承"介绍了Jython类的定义和使用。这包括Java类的派生类、Java接口的使用和Java抽象类以及Java的访问修饰符如public、private、Protected的含义。Jython类与Java类有很大的不同,第6章详细说明了这一点。 第7章"高级类"扩展了Jython类信息使其包括Jython的特殊类属性。Jython的特殊属性是那些遵循一定的命名规范并提供特定功能的属性。这些特殊的属性使自定义类行为和创建高级类更加容易。 第8章"用jyhonc编译Jython"详细介绍了Jython的复杂的jythonc工具。jythtonc将Jython码编译成Java字节码。jythonc使你可采用在Java框架内用Jython写的类,甚至能使你创建你可在Java中引人和使用的类文件。 第9章"在Java中嵌入和扩展Jython"描述了如何嵌人一个Jython的解释器。将Jython编译成Java字节码是很重要的,但在Java应用中扩展一个Jython解释器有很多优点。嵌入使你能有Jython系统状态所有的控制权,且能使你在Java应用中使用所有的Jython特征和模块。很吸引人的地方是嵌入一个Jython的解释器非常容易。一个基本的嵌人Jython解释器只需要两行Java代码,增加额外的配置信息也很容易。一个嵌入的解释器使你在不需要用jythonc编译模块的情况下写Jython模块来扩展或实现Java应用的特征。在我的印象中,Jython的嵌入特征是其最大的优点。它使得高级语言的开发在充分吸收单个应用中Java和Python的好处之后能支持快速开发和具有可扩展性。已经有很多项目使用嵌入的Jython,这个趋势将会继续。 第10章"GUI开发"描述了如何用Jython开发图形应用。重点是Java的AbstractWindowing Toolkit(AWT)和Swing应用程序接口。Jython由于其增加了自动bean属性和事件而使图形应用的开发更加快捷。第10章详细介绍了自动bean属性和事件,但本质上是由于Jython能为这些特征自动搜索组件并为建立属性和事件的句柄建立快捷方式。该方式平衡了Jython的语法特征来简化和加速应用。第10章也包含了使用Jython来创建Javaapplet的信息。 Java在数据库编程方面是很卓越的,Jython能在增加其自身的优点时保持所有Java的成功之处。第11章"数据库编程"包含Jython数据库编程的使用。该章也包含一些哈希数据库文件的内容和像MySQL、PostgreSQL的关系数据库管理系统(PostgreSQL为面向对象)。Jython也能使用Java的JDBC数据库连接或使用zxJDBC实现的Python数据库应用程序员接口。第11章讨论了这些API。 第12章"服务器端的Web编程"描述了使用Jython的Web编程。对Jython而言,这意味着servlet、JavaServerPages(JSP)和标记库taglibs。换句话说,使用Jython的服务器端的Web编程与普通的(标准的)Java服务器端的Web编程一样。第12章解释了使用jythonc编译的类作为servlet,也讨论了嵌入Jython的servlet映射以及IBM的组件脚本框架(BSF)。 本书读者对象 本书最适合那些已熟悉Java并对Jython有兴趣的人,这个范围较大。再具体一些,是那些希望增加一门高级语言作为工具的Java程序员,是那些在使用Java的公司中的想找一个Java的替代物的程序员。另外一类读者将是那些已经开始Python编程而希望将其扩展到Java框架中的程序员。由于本书假设读者已掌握Java的基础知识,所以这类读者还须补上Java的基础知识。 第三种读者将是编程的新手,但不是所有新手都适合。本书不能成为一本独立地介绍编程的书。读者至少需要掌握Java的基础知识。由于Jython(及Python)是一门理想的编程语言,所以这是可行的。Python语言具有清晰性和简洁性,它的交互解释器允许实验、立即反馈,快速获取语言特征。Jython既支持函数编程也支持面向对象编程,使其成为一种很好的教学语言。 本书不适合于哪些人 如果你对Java没有兴趣,则本书不是写给你的。学习Jython需要了解Java,那些不懂Java或不愿意在学习本书的同时研究Jaya的人将不会从本书中获益。Jython的优势在于其作为Java的一个变种能无缝地使用Java的各种库。这意味着如果你不想使用以Java为中心的工具,那么这本书对你作用不大。 如果你已经是一个Python的高级程序员,你也不必读此书。本书中大部分的内容都是Python的语法和使用。虽然有很多Java专有的例子和信息,但大部分关于语法和使用的章节会使熟练的Python程序员觉得是重复的。 其他资源 与Jython有关的Internet资源及其内容如下: ・http://www.jython.org/――Jython的官方网站。 ・http://www.python.org/――Python的官方网站。在站点上有大量的Python的文档,其对Jython也十分有用。 ・http://www.digisprings.com/Jython/――本书相关的网站。在该网站上你可看到一些Jython额外的信息,包括本书的勘误表、提示等等。 ・http://sourceforge.net/Projects/zxjdbc―――这是zxJDBC包的项目主页。该包为Jython提供Python 2.0数据库功能。 Jython专用的邮件列表是很有价值的资源。最好从Jython相关的主页的链接上订阅这样的邮件列表。有用的邮件列表包括:jython―users、jython―dev和jython―announce. jython―users主要包括一些Jython的常见问题和帮助,而jython―dev主要包括一些Jython自身开发的东西(而不是用Jython开发)。aunounce是一个小规模的邮件列表,主要来使读者知道最新的版本的一些信息。如果你碰到一些问题在本书的网站:http://www..newriders.com/或在Jython的站点上找不到答案,最好咨询邮件列表。 译者序 前言 第一部分 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语句和内置函数快速参考
2005年11月01日 星期二 11:18
Jython好像很久没有更新了,现在还是2.1吗?
2005年11月01日 星期二 11:19
以前研究过,对python实现还算好,但是由于是java实现的,速度成问题。 不过用来写servlet倒是很快的,这是开发速度,运行速度要慢一些,而且部署的时候还要把jython的包部署上去。
2005年11月01日 星期二 11:20
在 05-11-1,清风<paradise.qingfeng at gmail.com> 写道: > Jython好像很久没有更新了,现在还是2.1吗? 据说有人接手这个项目了,但是目前还没有发展的动静。
2005年11月01日 星期二 11:27
jython 更新的确很慢,我个人觉得在于python on parrot 比 jython 要更有活力,要更吸引人 -- Regards Falls Huang -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20051101/3352f0d6/attachment.html
2005年11月01日 星期二 11:27
收录:http://wiki.woodpecker.org.cn/moin/JythonDesign 书我早两年就买过,但是没什么机会要和JAVA 结合也就一直没有研究, 原先想使用Jython 开发 robocode 坦克来玩的,结果发现没有那未简单,也没有成功,就放下了…………呜乎哀哉! 邮购在dearbook.com.cn: http://www.dearbook.com.cn/book/ViewBook.aspx?pno=TS0014400 在 05-11-1,jejwe<jejwester at gmail.com> 写道: > Jython语言结合了Python的灵活高效与Java的强大。本书全面介绍了这门语言,有助于Java开发者提高开发与部署应用程序的能力。主要内容包括:Jython介绍及其详细语法,用Java类扩展Jython,用Jyhon编写各种应用程序等等。本书详尽地阐述了Java与Jython的异同以及Java与Jython进行组合的强大威力,书中实例丰富,通过大量的小实例讲述了Jython的使用方法。 > 本书编排独特、讲解透彻,适合于有一定经验的Java应用开发者使用。 > > Jython是两种广泛流行语言Java和Python的组合。Java已被广泛地接受,这可从很多公司都已配置了基于Java的应用得以见证。另外Java有庞大的可利用的类库,并有很详尽的文档。Python则具有很好的灵活性,开发快速,容易使用。在两种语言之间做出选择是很难的事,但有了Jython,就不再需要做这种选择了。Jython能够实现在Java或Python中实现的任何类、算法和模式而不需考虑其他语言,它能在这两种语言之间保持几乎无缝的操作。 > 无缝一词在本书中十分重要而且不断重现。扩展其他语言像Perl或Python,需要专用的API或繁冗的封装器。如果不加改造,任何C代码都不可能在Perl或Python中使用,而任何的Java代码却能在Jython中运行。由于与Java的无缝集成,你可以在Jython中引入、使用任何Java类并创建派生类。不仅包括那些为某个特定API而写的类或与某个特定工具打包的类,而且包括任何Java类。另外你还能将Jython编译成Java的字节代码使其在Java的框架内运行。你甚至可以在Java中引入、使用任何Python类并创建派生类。 > 在Jython和Java中也有一些小的差别,正确理解这些差别对理解Jython是很有帮助的。Java是一种类型丰富的语言,而Jython则使用动态类型而没有明显的类型定义。Java有一些包含类的包,而Jython有包、模块、类和函数。Java必须编译,而Jython能交互式地运行,解释一个非编译的脚本或编译成字节码。Java类有像private和Protected的存取符,而Jython仅有最小的存取限制而没有明显的像Private的修饰符。 > 最有趣的事情是Jython和Java的差别并不构成很大的麻烦,相反却能互补。Jython的交互模式提供了一个测试和研究Java类的快速方法,而Java的接口和抽象类给Jython派生类提供了一个指定协议的很好的方法。Jython的动态类型对快速原型和灵活性有很大的帮助,而Java的静态类型也增加了运行时的效率和类型的安全性。这些互补由于其无缝性而显得很好。增加程序的花费来平衡这些特性将对程序的功能有副作用。幸运的是Jython使它们简单、易于理解,并且不需要额外的花费。 > 什么是Jython > 要了解Jython,首先要了解Python。Python是用C编写的高级的、面向对象的、开放源代码的编程语言。Cuido > vanRossum是Python的原创者,继而在Python的快速发展中产生了一大群高水平的设计者和程序员。使用Python的开发人员增长迅速,并一直在持续增长。然而Sun的Java编程语言也是深人人心的。随着用Java实现的项目的数量接近了用C/C++实现的项目,Python的Java实现也变得很有必要。Jython,最初叫做JPython,就是:Python语言的Java实现。为避免混淆,本书用CPython来表示Python的C语言实现,而用Jython来表示Java实现,而Python表示实现的中性概念和Python语言规范的设计特征。 > Jython是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是一个Python语言在Java中的完全实现。Jython也有很多从CPython中继承的模块库。最有趣的事情是Jython不像CPython或其他任何高级语言,它提供了对其实现语言的一切存取。所以Jython不仅给你提供了Python的库,同时也提供了所有的Java类。这使其有一个巨大的资源库。 > Jython和Python强调了代码的简明性、方便性和易读性。Jython使用缩排来对代码块定界以避免使用在Java中的大括号。Jython用新的一行来表示一个新的语句的开始,并有几个重要的区别,如允许在每个语句后省略分号。Jython没有像在Java中的public、private和protected存取符,这样就给程序员提供了快速开发所需要的灵活性,并将注意力集中在程序逻辑上。正像前面所提到的,Jython不用明显的静态的类型定义,故程序员不需要从程序逻辑转移到类型定义上来。 > Jython的历史要追溯到JimHugunin,他是Guidovan > Rossum在国家研究动力中心(CNRI)的同事。JimHugunin认识到Python编程语言用Java实现的重要性,并实现了最初名为JPython的语言。由于要开发aspectj(http://aspectj.org/),JimHugunin不能继续致力于JPython了。所以当Python的开发者准备离开CNRI时,由当时也在CNRI的Barry > Warsaw继续领导开发。 > Python和Jython项目组从CNRI离开后,在Sourceforge上转变为一种更开放的语言模型。在此期间,一个对Jython(JPython)做了主要贡献的人FinnBock领导了Jython项目小组。正是由于FinnBock所做的杰出贡献使Jython现在成为一个如此有价值的工具。类似Jython这样的开放源代码项目与开发和维护它们的人一样杰出,从这个意义上说Jython因为有FinnBack的贡献和指导而很幸运。另外一个对Jython做了最新有价值贡献的人是SamuelePedroni。Samuele的贡献主要在Jython的类装载、导入机制等等。Finn和Samuele目前是Jython的两个主要开发者。 > 为什么需要Jython > Jython由于继承了Java和Python二者的特性而显得很独特。本节介绍一下这些特性及其意义。 > 对Java类的无缝存取 > 在Java中实现Python可以看到有趣的Java反射API的作用。反射使Jython能无缝地使用任何Java类。Jython从CPython中继承了很多优点,但CPython不像别的专为Python所写的一样,在C和Python之间有一些问题限制了C库函数的使用。在Jython中真正解决了这个问题,使其编程的效率和生产力得到了很大的提高。 > 由于与Java的无缝集成,Jython能使任何部署了Java应用和框架的公司受益而不需要额外的工作。接受任何一种部门的编程语言,对任何一个公司而言都是不容易的,需要深思熟虑,因为这牵涉到整体结构、服务器和外围的工具。Jython作为Java的一个无缝集成的语言,可以在已存在的Java应用上无缝增加而不需要重大抉择。很多公司都花费了很多资金来建立Java的应用,这使采用CPython、Perl、Ruby、PHP和其他不能透明地集成已有Java实现的高级语言的效益降低,吸引力下降。而Jython有能力对已存在的Java框架进行补充,且二者能无缝地结合。 > 效率 > 计算编程语言的效率是一个很广泛的课题,它要考虑程序员的时间、总体复杂性、代码的行数、可用性、可维护性和运行效率。当然很多人不同意赋予这些变量的权重,经常是在不同的情况下偏重有所不同。然而本书的前提是Jython除运行时的效率外,其他方面都超过其他语言。Jython的运行速度是可以与其他高级语言相比的,但速度并不是高级语言的目标和特点。区别在于当加速一个需要的应用时,将Jython代码翻译成Java更有效,这是由于Jython与Java的无缝集成性。另外对所有有效的Jaya类的直接访问增加了改进已存在的类的可能性。 > 动态类型 > 在Jython中你不必像在Java中那样声明类型,因为类型是在运行时决定的。Jython的列表和映射类型是高级的多态的Java类的实例。多态意味着对象能对不同的数据类型工作。例如Jython的list类型可以是一个数字的序列、字符串的序列、字符的序列或它们的组合。动态和多态性的列是对编程的极大的贡献,从很多已放弃显式的静态类型定义的高级语言中可看出它减少了代码的行数,降低了复杂性,提高了程序的效率。 > 内省和动态执行 > Jython有一些允许方便的对象内省和代码的动态执行的内部函数。内省是发现一个对象信息的能力,而动态执行是执行在运行时产生的代码的能力。该功能很大程度上减少了代码的行数并增加了程序的可靠性,使其更加方便维护。这也能使数据和程序结构或逻辑更好的集成而不影响重用性,因为所有的东西都是在运行时决定的。 > 第一类函数和函数编程 > Jython与Python一样有第一类函数。第一类函数是指能像变量一样的可调用的对象。第一类函数在对事件处理和其他情况下有意义,这导致增加了Java内部类的功能。虽然Java的内部类与第一类函数类似,但它在方便性与灵活性方面有很大的不足,这是由于Jython中的第一类函数减少了Jython中的语法开销。 > Jython也包括了所有函数编程所需要的工具。这意味着强制的面向对象的函数编程在Jython中得到支持。这显然在教学上很有意义,它使Jython程序员能选择最适合于特定问题的编程语言而不是由语言强加。函数化的工具如列表包含、lambda表单、map、filter和reduce也对减少代码的行数、降低复杂性和名字重绑定数(名字重绑定有很大副作用)起到很大的作用。 > 学习周期短 > 任何Java程序员在数日内就能熟悉Jython。由于有很多内容,关键在于细节的学习,但仅仅用几天的时间就能拥有Jython的快速开发功能确实是很有价值的。对于那些从事测试和技术支持的小组通常并没有很多时间去学习复杂的Java代码,但通过对Jython的学习能在开销很少的情况下很快提高公司的技术水平和效率。 > 写一次,处处可用 > 由于Jython是用Java编写的且由于其可编译成Java字节码,因此Jython也具有Java的"写一次,处处可用"的特点。Jython能运行在任何可兼容的Java1.1'或更高的Java虚拟机(JVM)版本的平台上。另外你可将Jython应用编译成自足的字节码,它能运行在任何兼容的JVM上。在Linux上编译的应用能运行在有兼容JVM的任何其他平台上。 > Java安全性 > Java的安全性是特别的而且越来越重要。从沙箱到信号,Jython有能力使用Java的特别的安全框架。 > 代码清晰性 > 代码的清晰性是Python最大的优点,当然也是Jython最大的优点。不必要的标点和行都避免了。Jython代码在可读性和清晰性方面近似于自然语言。这起源于Python对代码块和语句的简单描绘的承诺。缩排标记代码块,换行符标记新的语句。在此之上,语法通常支持清晰性。由于Jython代码的清晰性,其维护变得更加容易。 > Unicode和国际化 > Jython使用了Java的Unicode实现方法,使得它很容易实现产品的国际化。 > Hotspot和开发效率 > Jython的速度还不错,但不像纯Java那样快。Jython的主要特点是在开发和维护时间上。然而高级语言的开发中有很强的优先权,这在Java的Hotspot技术中尤为显著。Hotspot优化程序中那些最需要优化的部分。它的理论基础是程序的一小部分花费程序的大部分执行时间。只有优化那一部分代码才能很大程度地改变程序的性能。开发代码时就这样做效果是明显的。使用Jython来编写一个应用,然后将处理器相关的类转换成Java是程序的运行性能和程序效率之间理想的结合。Hotspot类似的技术使采用Jython和Java的高级语言开发是令人信服的。 > 本书内容 > 本书是针对那些已经熟悉Java或正在学习Java的人而编排的。一些Java专用术语像classpath、垃圾回收和接口将不再做解释,这就要求必须知道Java的基本知识。尤其是那些希望加快开发速度、嵌入解释器和增加灵活性的Java开发者将会对本书最感兴趣。虽然Jython是一门完整的编程语言,但由于其与Java是互补的而不是Java的替代物而显得很独特。 > 第1章"Jython语法、语句和注释"介绍了语法和语句。Python的语法是组成pythonic的很重要的组成部分。pythonic是一个使Python和Jython代码清晰、简单、独特的那些细节的描述器。Python用缩排来定界代码块,用换行符来定界语句对很多程序员来说是新颖的方法。第1章详细描述了缩排、换行符、语句的规则。另外该章还介绍了交互式解释器,它是一个Jython的模式,能立即响应你所输入的语句。该章主要是讲一些Python通用的内容,并未提到Jython独特的内容。 > 第2章"运算符、类型和内置函数"包括Jython的数据对象、运算符和内置函数。数据对象或类型都是异常有趣的,因为Jython能使用Python和Java二者的对象。Python的语言规范定义了Python当然也是Jython的类型,Jython专有的类型需要详细说明。详细说明包括JythonJava类型的转变。第2章也定义了Jython的内置函数。内置函数指那些不需要任何引入语句就可工作的那部分函数,这在Jython的函数中占有很大的比例。 > 第3章介绍Jython的错误、异常和警告,定义了Jython的内置异常以及使用try/except和try/finally语句来处理异常。异常对Jython是很重要的,但它也是运行Java类和其导致的异常的重要的一步。 > Java没有函数,但函数在Jython中是很重要的一部分。第4章"用户定义的函数和变量的作用域"说明了如何定义和使用Jython函数以及如何使用Jython的函数编程工具。函数是在类中没有定义的可调用的对象,但函数编程没有一个简洁的定义。函数编程循环寻找表达式的结果。Jython提供了所有的需要学习和使用函数编程的工具。这些工具已出现在第2章。 > Jython有模块,这是另外一个Java没有的东西。第5章"模块和包"描述了Jython的模块:Jython也像Java一样有包,但如第5章所说明的,Jython的包不同于Java的对应。在Jython的包、模块、类以及Java的包、类中,import语句变得很重要。第5章详细说明了模块和包的import语句。 > 第6章"类、实例和继承"介绍了Jython类的定义和使用。这包括Java类的派生类、Java接口的使用和Java抽象类以及Java的访问修饰符如public、private、Protected的含义。Jython类与Java类有很大的不同,第6章详细说明了这一点。 > 第7章"高级类"扩展了Jython类信息使其包括Jython的特殊类属性。Jython的特殊属性是那些遵循一定的命名规范并提供特定功能的属性。这些特殊的属性使自定义类行为和创建高级类更加容易。 > 第8章"用jyhonc编译Jython"详细介绍了Jython的复杂的jythonc工具。jythtonc将Jython码编译成Java字节码。jythonc使你可采用在Java框架内用Jython写的类,甚至能使你创建你可在Java中引人和使用的类文件。 > 第9章"在Java中嵌入和扩展Jython"描述了如何嵌人一个Jython的解释器。将Jython编译成Java字节码是很重要的,但在Java应用中扩展一个Jython解释器有很多优点。嵌入使你能有Jython系统状态所有的控制权,且能使你在Java应用中使用所有的Jython特征和模块。很吸引人的地方是嵌入一个Jython的解释器非常容易。一个基本的嵌人Jython解释器只需要两行Java代码,增加额外的配置信息也很容易。一个嵌入的解释器使你在不需要用jythonc编译模块的情况下写Jython模块来扩展或实现Java应用的特征。在我的印象中,Jython的嵌入特征是其最大的优点。它使得高级语言的开发在充分吸收单个应用中Java和Python的好处之后能支持快速开发和具有可扩展性。已经有很多项目使用嵌入的Jython,这个趋势将会继续。 > 第10章"GUI开发"描述了如何用Jython开发图形应用。重点是Java的AbstractWindowing > Toolkit(AWT)和Swing应用程序接口。Jython由于其增加了自动bean属性和事件而使图形应用的开发更加快捷。第10章详细介绍了自动bean属性和事件,但本质上是由于Jython能为这些特征自动搜索组件并为建立属性和事件的句柄建立快捷方式。该方式平衡了Jython的语法特征来简化和加速应用。第10章也包含了使用Jython来创建Javaapplet的信息。 > Java在数据库编程方面是很卓越的,Jython能在增加其自身的优点时保持所有Java的成功之处。第11章"数据库编程"包含Jython数据库编程的使用。该章也包含一些哈希数据库文件的内容和像MySQL、PostgreSQL的关系数据库管理系统(PostgreSQL为面向对象)。Jython也能使用Java的JDBC数据库连接或使用zxJDBC实现的Python数据库应用程序员接口。第11章讨论了这些API。 > 第12章"服务器端的Web编程"描述了使用Jython的Web编程。对Jython而言,这意味着servlet、JavaServerPages(JSP)和标记库taglibs。换句话说,使用Jython的服务器端的Web编程与普通的(标准的)Java服务器端的Web编程一样。第12章解释了使用jythonc编译的类作为servlet,也讨论了嵌入Jython的servlet映射以及IBM的组件脚本框架(BSF)。 > 本书读者对象 > 本书最适合那些已熟悉Java并对Jython有兴趣的人,这个范围较大。再具体一些,是那些希望增加一门高级语言作为工具的Java程序员,是那些在使用Java的公司中的想找一个Java的替代物的程序员。另外一类读者将是那些已经开始Python编程而希望将其扩展到Java框架中的程序员。由于本书假设读者已掌握Java的基础知识,所以这类读者还须补上Java的基础知识。 > 第三种读者将是编程的新手,但不是所有新手都适合。本书不能成为一本独立地介绍编程的书。读者至少需要掌握Java的基础知识。由于Jython(及Python)是一门理想的编程语言,所以这是可行的。Python语言具有清晰性和简洁性,它的交互解释器允许实验、立即反馈,快速获取语言特征。Jython既支持函数编程也支持面向对象编程,使其成为一种很好的教学语言。 > 本书不适合于哪些人 > 如果你对Java没有兴趣,则本书不是写给你的。学习Jython需要了解Java,那些不懂Java或不愿意在学习本书的同时研究Jaya的人将不会从本书中获益。Jython的优势在于其作为Java的一个变种能无缝地使用Java的各种库。这意味着如果你不想使用以Java为中心的工具,那么这本书对你作用不大。 > 如果你已经是一个Python的高级程序员,你也不必读此书。本书中大部分的内容都是Python的语法和使用。虽然有很多Java专有的例子和信息,但大部分关于语法和使用的章节会使熟练的Python程序员觉得是重复的。 > 其他资源 > 与Jython有关的Internet资源及其内容如下: > ・http://www.jython.org/――Jython的官方网站。 > ・http://www.python.org/――Python的官方网站。在站点上有大量的Python的文档,其对Jython也十分有用。 > ・http://www.digisprings.com/Jython/――本书相关的网站。在该网站上你可看到一些Jython额外的信息,包括本书的勘误表、提示等等。 > ・http://sourceforge.net/Projects/zxjdbc―――这是zxJDBC包的项目主页。该包为Jython提供Python > 2.0数据库功能。 > Jython专用的邮件列表是很有价值的资源。最好从Jython相关的主页的链接上订阅这样的邮件列表。有用的邮件列表包括:jython―users、jython―dev和jython―announce. > jython―users主要包括一些Jython的常见问题和帮助,而jython―dev主要包括一些Jython自身开发的东西(而不是用Jython开发)。aunounce是一个小规模的邮件列表,主要来使读者知道最新的版本的一些信息。如果你碰到一些问题在本书的网站:http://www..newriders.com/或在Jython的站点上找不到答案,最好咨询邮件列表。 > > 译者序 > 前言 > > 第一部分 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语句和内置函数快速参考 > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > > -- # Time is unimportant, only life important! ## 面朝开源,我心自由!
2005年11月01日 星期二 11:48
有没有它的电子版呢!我想要!! jejwe <jejwester at gmail.com> Sent by: python-chinese-bounces at lists.python.cn 2005-11-01 11:10 Please respond to python-chinese at lists.python.cn To python-chinese at lists.python.cn cc Subject [python-chinese] Jython程序设计 [转] Jython语言结合了Python的灵活高效与Java的强大。本书全面介绍了这门语言,有助 于Java开发者提高开发与部署应用程序的能力。主要内容包括:Jython介绍及其详细 语法,用Java类扩展Jython,用Jyhon编写各种应用程序等等。本书详尽地阐述了 Java与Jython的异同以及Java与Jython进行组合的强大威力,书中实例丰富,通过大 量的小实例讲述了Jython的使用方法。 本书编排独特、讲解透彻,适合于有一定经验的Java应用开发者使用。 Jython是两种广泛流行语言Java和Python的组合。Java已被广泛地接受,这可从很多 公司都已配置了基于Java的应用得以见证。另外Java有庞大的可利用的类库,并有很 详尽的文档。Python则具有很好的灵活性,开发快速,容易使用。在两种语言之间做 出选择是很难的事,但有了Jython,就不再需要做这种选择了。Jython能够实现在 Java或Python中实现的任何类、算法和模式而不需考虑其他语言,它能在这两种语言 之间保持几乎无缝的操作。 无缝一词在本书中十分重要而且不断重现。扩展其他语言像Perl或Python,需要专用 的API或繁冗的封装器。如果不加改造,任何C代码都不可能在Perl或Python中使用, 而任何的Java代码却能在Jython中运行。由于与Java的无缝集成,你可以在Jython中 引入、使用任何Java类并创建派生类。不仅包括那些为某个特定API而写的类或与某 个特定工具打包的类,而且包括任何Java类。另外你还能将Jython编译成Java的字节 代码使其在Java的框架内运行。你甚至可以在Java中引入、使用任何Python类并创建 派生类。 在Jython和Java中也有一些小的差别,正确理解这些差别对理解Jython是很有帮助的 。Java是一种类型丰富的语言,而Jython则使用动态类型而没有明显的类型定义。 Java有一些包含类的包,而Jython有包、模块、类和函数。Java必须编译,而Jython 能交互式地运行,解释一个非编译的脚本或编译成字节码。Java类有像private和 Protected的存取符,而Jython仅有最小的存取限制而没有明显的像Private的修饰符 。 最有趣的事情是Jython和Java的差别并不构成很大的麻烦,相反却能互补。Jython的 交互模式提供了一个测试和研究Java类的快速方法,而Java的接口和抽象类给Jython 派生类提供了一个指定协议的很好的方法。Jython的动态类型对快速原型和灵活性有 很大的帮助,而Java的静态类型也增加了运行时的效率和类型的安全性。这些互补由 于其无缝性而显得很好。增加程序的花费来平衡这些特性将对程序的功能有副作用。 幸运的是Jython使它们简单、易于理解,并且不需要额外的花费。 什么是Jython 要了解Jython,首先要了解Python。Python是用C编写的高级的、面向对象的、开放 源代码的编程语言。Cuido vanRossum是Python的原创者,继而在Python的快速发展中产生了一大群高水平的设 计者和程序员。使用Python的开发人员增长迅速,并一直在持续增长。然而Sun的 Java编程语言也是深人人心的。随着用Java实现的项目的数量接近了用C/C++实现的 项目,Python的Java实现也变得很有必要。Jython,最初叫做JPython,就是: Python语言的Java实现。为避免混淆,本书用CPython来表示Python的C语言实现,而 用Jython来表示Java实现,而Python表示实现的中性概念和Python语言规范的设计特 征。 Jython是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是 一个Python语言在Java中的完全实现。Jython也有很多从CPython中继承的模块库。 最有趣的事情是Jython不像CPython或其他任何高级语言,它提供了对其实现语言的 一切存取。所以Jython不仅给你提供了Python的库,同时也提供了所有的Java类。这 使其有一个巨大的资源库。 Jython和Python强调了代码的简明性、方便性和易读性。Jython使用缩排来对代码块 定界以避免使用在Java中的大括号。Jython用新的一行来表示一个新的语句的开始, 并有几个重要的区别,如允许在每个语句后省略分号。Jython没有像在Java中的 public、private和protected存取符,这样就给程序员提供了快速开发所需要的灵活 性,并将注意力集中在程序逻辑上。正像前面所提到的,Jython不用明显的静态的类 型定义,故程序员不需要从程序逻辑转移到类型定义上来。 Jython的历史要追溯到JimHugunin,他是Guidovan Rossum在国家研究动力中心(CNRI)的同事。JimHugunin认识到Python编程语言用Java 实现的重要性,并实现了最初名为JPython的语言。由于要开发aspectj(http: //aspectj.org/),JimHugunin不能继续致力于JPython了。所以当Python的开发者 准备离开CNRI时,由当时也在CNRI的Barry Warsaw继续领导开发。 Python和Jython项目组从CNRI离开后,在Sourceforge上转变为一种更开放的语言模 型。在此期间,一个对Jython(JPython)做了主要贡献的人FinnBock领导了Jython项 目小组。正是由于FinnBock所做的杰出贡献使Jython现在成为一个如此有价值的工具 。类似Jython这样的开放源代码项目与开发和维护它们的人一样杰出,从这个意义上 说Jython因为有FinnBack的贡献和指导而很幸运。另外一个对Jython做了最新有价值 贡献的人是SamuelePedroni。Samuele的贡献主要在Jython的类装载、导入机制等等 。Finn和Samuele目前是Jython的两个主要开发者。 为什么需要Jython Jython由于继承了Java和Python二者的特性而显得很独特。本节介绍一下这些特性及 其意义。 对Java类的无缝存取 在Java中实现Python可以看到有趣的Java反射API的作用。反射使Jython能无缝地使 用任何Java类。Jython从CPython中继承了很多优点,但CPython不像别的专为Python 所写的一样,在C和Python之间有一些问题限制了C库函数的使用。在Jython中真正解 决了这个问题,使其编程的效率和生产力得到了很大的提高。 由于与Java的无缝集成,Jython能使任何部署了Java应用和框架的公司受益而不需要 额外的工作。接受任何一种部门的编程语言,对任何一个公司而言都是不容易的,需 要深思熟虑,因为这牵涉到整体结构、服务器和外围的工具。Jython作为Java的一个 无缝集成的语言,可以在已存在的Java应用上无缝增加而不需要重大抉择。很多公司 都花费了很多资金来建立Java的应用,这使采用CPython、Perl、Ruby、PHP和其他不 能透明地集成已有Java实现的高级语言的效益降低,吸引力下降。而Jython有能力对 已存在的Java框架进行补充,且二者能无缝地结合。 效率 计算编程语言的效率是一个很广泛的课题,它要考虑程序员的时间、总体复杂性、代 码的行数、可用性、可维护性和运行效率。当然很多人不同意赋予这些变量的权重, 经常是在不同的情况下偏重有所不同。然而本书的前提是Jython除运行时的效率外, 其他方面都超过其他语言。Jython的运行速度是可以与其他高级语言相比的,但速度 并不是高级语言的目标和特点。区别在于当加速一个需要的应用时,将Jython代码翻 译成Java更有效,这是由于Jython与Java的无缝集成性。另外对所有有效的Jaya类的 直接访问增加了改进已存在的类的可能性。 动态类型 在Jython中你不必像在Java中那样声明类型,因为类型是在运行时决定的。Jython的 列表和映射类型是高级的多态的Java类的实例。多态意味着对象能对不同的数据类型 工作。例如Jython的list类型可以是一个数字的序列、字符串的序列、字符的序列或 它们的组合。动态和多态性的列是对编程的极大的贡献,从很多已放弃显式的静态类 型定义的高级语言中可看出它减少了代码的行数,降低了复杂性,提高了程序的效率 。 内省和动态执行 Jython有一些允许方便的对象内省和代码的动态执行的内部函数。内省是发现一个对 象信息的能力,而动态执行是执行在运行时产生的代码的能力。该功能很大程度上减 少了代码的行数并增加了程序的可靠性,使其更加方便维护。这也能使数据和程序结 构或逻辑更好的集成而不影响重用性,因为所有的东西都是在运行时决定的。 第一类函数和函数编程 Jython与Python一样有第一类函数。第一类函数是指能像变量一样的可调用的对象。 第一类函数在对事件处理和其他情况下有意义,这导致增加了Java内部类的功能。虽 然Java的内部类与第一类函数类似,但它在方便性与灵活性方面有很大的不足,这是 由于Jython中的第一类函数减少了Jython中的语法开销。 Jython也包括了所有函数编程所需要的工具。这意味着强制的面向对象的函数编程在 Jython中得到支持。这显然在教学上很有意义,它使Jython程序员能选择最适合于特 定问题的编程语言而不是由语言强加。函数化的工具如列表包含、lambda表单、map 、filter和reduce也对减少代码的行数、降低复杂性和名字重绑定数(名字重绑定有 很大副作用)起到很大的作用。 学习周期短 任何Java程序员在数日内就能熟悉Jython。由于有很多内容,关键在于细节的学习, 但仅仅用几天的时间就能拥有Jython的快速开发功能确实是很有价值的。对于那些从 事测试和技术支持的小组通常并没有很多时间去学习复杂的Java代码,但通过对 Jython的学习能在开销很少的情况下很快提高公司的技术水平和效率。 写一次,处处可用 由于Jython是用Java编写的且由于其可编译成Java字节码,因此Jython也具有Java的 "写一次,处处可用"的特点。Jython能运行在任何可兼容的Java1.1'或更高的Java 虚拟机(JVM)版本的平台上。另外你可将Jython应用编译成自足的字节码,它能运行 在任何兼容的JVM上。在Linux上编译的应用能运行在有兼容JVM的任何其他平台上。 Java安全性 Java的安全性是特别的而且越来越重要。从沙箱到信号,Jython有能力使用Java的特 别的安全框架。 代码清晰性 代码的清晰性是Python最大的优点,当然也是Jython最大的优点。不必要的标点和行 都避免了。Jython代码在可读性和清晰性方面近似于自然语言。这起源于Python对代 码块和语句的简单描绘的承诺。缩排标记代码块,换行符标记新的语句。在此之上, 语法通常支持清晰性。由于Jython代码的清晰性,其维护变得更加容易。 Unicode和国际化 Jython使用了Java的Unicode实现方法,使得它很容易实现产品的国际化。 Hotspot和开发效率 Jython的速度还不错,但不像纯Java那样快。Jython的主要特点是在开发和维护时间 上。然而高级语言的开发中有很强的优先权,这在Java的Hotspot技术中尤为显著。 Hotspot优化程序中那些最需要优化的部分。它的理论基础是程序的一小部分花费程 序的大部分执行时间。只有优化那一部分代码才能很大程度地改变程序的性能。开发 代码时就这样做效果是明显的。使用Jython来编写一个应用,然后将处理器相关的类 转换成Java是程序的运行性能和程序效率之间理想的结合。Hotspot类似的技术使采 用Jython和Java的高级语言开发是令人信服的。 本书内容 本书是针对那些已经熟悉Java或正在学习Java的人而编排的。一些Java专用术语像 classpath、垃圾回收和接口将不再做解释,这就要求必须知道Java的基本知识。尤 其是那些希望加快开发速度、嵌入解释器和增加灵活性的Java开发者将会对本书最感 兴趣。虽然Jython是一门完整的编程语言,但由于其与Java是互补的而不是Java的替 代物而显得很独特。 第1章"Jython语法、语句和注释"介绍了语法和语句。Python的语法是组成pythonic 的很重要的组成部分。pythonic是一个使Python和Jython代码清晰、简单、独特的那 些细节的描述器。Python用缩排来定界代码块,用换行符来定界语句对很多程序员来 说是新颖的方法。第1章详细描述了缩排、换行符、语句的规则。另外该章还介绍了 交互式解释器,它是一个Jython的模式,能立即响应你所输入的语句。该章主要是讲 一些Python通用的内容,并未提到Jython独特的内容。 第2章"运算符、类型和内置函数"包括Jython的数据对象、运算符和内置函数。数据 对象或类型都是异常有趣的,因为Jython能使用Python和Java二者的对象。Python的 语言规范定义了Python当然也是Jython的类型,Jython专有的类型需要详细说明。详 细说明包括JythonJava类型的转变。第2章也定义了Jython的内置函数。内置函数指 那些不需要任何引入语句就可工作的那部分函数,这在Jython的函数中占有很大的比 例。 第3章介绍Jython的错误、异常和警告,定义了Jython的内置异常以及使用 try/except和try/finally语句来处理异常。异常对Jython是很重要的,但它也是运 行Java类和其导致的异常的重要的一步。 Java没有函数,但函数在Jython中是很重要的一部分。第4章"用户定义的函数和变量 的作用域"说明了如何定义和使用Jython函数以及如何使用Jython的函数编程工具。 函数是在类中没有定义的可调用的对象,但函数编程没有一个简洁的定义。函数编程 循环寻找表达式的结果。Jython提供了所有的需要学习和使用函数编程的工具。这些 工具已出现在第2章。 Jython有模块,这是另外一个Java没有的东西。第5章"模块和包"描述了Jython的模 块:Jython也像Java一样有包,但如第5章所说明的,Jython的包不同于Java的对应 。在Jython的包、模块、类以及Java的包、类中,import语句变得很重要。第5章详 细说明了模块和包的import语句。 第6章"类、实例和继承"介绍了Jython类的定义和使用。这包括Java类的派生类、 Java接口的使用和Java抽象类以及Java的访问修饰符如public、private、Protected 的含义。Jython类与Java类有很大的不同,第6章详细说明了这一点。 第7章"高级类"扩展了Jython类信息使其包括Jython的特殊类属性。Jython的特殊属 性是那些遵循一定的命名规范并提供特定功能的属性。这些特殊的属性使自定义类行 为和创建高级类更加容易。 第8章"用jyhonc编译Jython"详细介绍了Jython的复杂的jythonc工具。jythtonc将 Jython码编译成Java字节码。jythonc使你可采用在Java框架内用Jython写的类,甚 至能使你创建你可在Java中引人和使用的类文件。 第9章"在Java中嵌入和扩展Jython"描述了如何嵌人一个Jython的解释器。将Jython 编译成Java字节码是很重要的,但在Java应用中扩展一个Jython解释器有很多优点。 嵌入使你能有Jython系统状态所有的控制权,且能使你在Java应用中使用所有的 Jython特征和模块。很吸引人的地方是嵌入一个Jython的解释器非常容易。一个基本 的嵌人Jython解释器只需要两行Java代码,增加额外的配置信息也很容易。一个嵌入 的解释器使你在不需要用jythonc编译模块的情况下写Jython模块来扩展或实现Java 应用的特征。在我的印象中,Jython的嵌入特征是其最大的优点。它使得高级语言的 开发在充分吸收单个应用中Java和Python的好处之后能支持快速开发和具有可扩展性 。已经有很多项目使用嵌入的Jython,这个趋势将会继续。 第10章"GUI开发"描述了如何用Jython开发图形应用。重点是Java的 AbstractWindowing Toolkit(AWT)和Swing应用程序接口。Jython由于其增加了自动bean属性和事件而使 图形应用的开发更加快捷。第10章详细介绍了自动bean属性和事件,但本质上是由于 Jython能为这些特征自动搜索组件并为建立属性和事件的句柄建立快捷方式。该方式 平衡了Jython的语法特征来简化和加速应用。第10章也包含了使用Jython来创建 Javaapplet的信息。 Java在数据库编程方面是很卓越的,Jython能在增加其自身的优点时保持所有Java的 成功之处。第11章"数据库编程"包含Jython数据库编程的使用。该章也包含一些哈希 数据库文件的内容和像MySQL、PostgreSQL的关系数据库管理系统(PostgreSQL为面向 对象)。Jython也能使用Java的JDBC数据库连接或使用zxJDBC实现的Python数据库应 用程序员接口。第11章讨论了这些API。 第12章"服务器端的Web编程"描述了使用Jython的Web编程。对Jython而言,这意味着 servlet、JavaServerPages(JSP)和标记库taglibs。换句话说,使用Jython的服务器 端的Web编程与普通的(标准的)Java服务器端的Web编程一样。第12章解释了使用 jythonc编译的类作为servlet,也讨论了嵌入Jython的servlet映射以及IBM的组件脚 本框架(BSF)。 本书读者对象 本书最适合那些已熟悉Java并对Jython有兴趣的人,这个范围较大。再具体一些,是 那些希望增加一门高级语言作为工具的Java程序员,是那些在使用Java的公司中的想 找一个Java的替代物的程序员。另外一类读者将是那些已经开始Python编程而希望将 其扩展到Java框架中的程序员。由于本书假设读者已掌握Java的基础知识,所以这类 读者还须补上Java的基础知识。 第三种读者将是编程的新手,但不是所有新手都适合。本书不能成为一本独立地介绍 编程的书。读者至少需要掌握Java的基础知识。由于Jython(及Python)是一门理想的 编程语言,所以这是可行的。Python语言具有清晰性和简洁性,它的交互解释器允许 实验、立即反馈,快速获取语言特征。Jython既支持函数编程也支持面向对象编程, 使其成为一种很好的教学语言。 本书不适合于哪些人 如果你对Java没有兴趣,则本书不是写给你的。学习Jython需要了解Java,那些不懂 Java或不愿意在学习本书的同时研究Jaya的人将不会从本书中获益。Jython的优势在 于其作为Java的一个变种能无缝地使用Java的各种库。这意味着如果你不想使用以 Java为中心的工具,那么这本书对你作用不大。 如果你已经是一个Python的高级程序员,你也不必读此书。本书中大部分的内容都是 Python的语法和使用。虽然有很多Java专有的例子和信息,但大部分关于语法和使用 的章节会使熟练的Python程序员觉得是重复的。 其他资源 与Jython有关的Internet资源及其内容如下: ・http://www.jython.org/――Jython的官方网站。 ・http://www.python.org/――Python的官方网站。在站点上有大量的Python的 文档,其对Jython也十分有用。 ・http://www.digisprings.com/Jython/――本书相关的网站。在该网站上你可 看到一些Jython额外的信息,包括本书的勘误表、提示等等。 ・http://sourceforge.net/Projects/zxjdbc―――这是zxJDBC包的项目主页。该 包为Jython提供Python 2.0数据库功能。 Jython专用的邮件列表是很有价值的资源。最好从Jython相关的主页的链接上订阅这 样的邮件列表。有用的邮件列表包括:jython―users、jython―dev和jython― announce. jython―users主要包括一些Jython的常见问题和帮助,而jython―dev主要包括一些 Jython自身开发的东西(而不是用Jython开发)。aunounce是一个小规模的邮件列表, 主要来使读者知道最新的版本的一些信息。如果你碰到一些问题在本书的网站:http ://www..newriders.com/或在Jython的站点上找不到答案,最好咨询邮件列表。 译者序 前言 第一部分 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语句和内置函数快速参考 _______________________________________________ python-chinese list python-chinese at lists.python.cn http://python.cn/mailman/listinfo/python-chinese -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20051101/5ec16d06/attachment.htm
2005年11月01日 星期二 13:12
记得ZOOM说过有新版。 在 05-11-1,马踏飞燕<honeyday.mj at gmail.com> 写道: > 在 05-11-1,清风<paradise.qingfeng at gmail.com> 写道: > > Jython好像很久没有更新了,现在还是2.1吗? > > 据说有人接手这个项目了,但是目前还没有发展的动静。 > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > >
2005年11月01日 星期二 14:48
java是跨平台的虚拟机,python也是。py at net也像个适用范围小的虚拟机。所以我觉得像cpython这样的高性能本地实现才可能有发展前途。 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20051101/8847c975/attachment.html
2005年11月01日 星期二 15:02
JYTHON的定位应该是对java的应用系统提供脚本支持,而且N就不更新了,很多python新的语法都不支持 -- 张骏 <zhangj at foreseen-info.com> 敏捷来自Python 简单源于我们 丰元信信息技术有限公司
2005年11月01日 星期二 22:11
java 有groovy了.... On 11/1/05, 张骏 <zhangj at foreseen-info.com> wrote: > > JYTHON的定位应该是对java的应用系统提供脚本支持,而且N就不更新了,很多python新的语法都不支持 > > > -- > 张骏 <zhangj at foreseen-info.com> > > 敏捷来自Python > 简单源于我们 > 丰元信信息技术有限公司 > > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20051101/df1fa218/attachment.htm
2005年11月02日 星期三 14:32
在05-11-1,Yang Ng <fivesheep at gmail.com> 写道: > java 有groovy了.... 是啊,最近研究了下groovy,在java里用她写脚本实在是方便,不需要jpython了。呵呵 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20051102/4008419c/attachment.htm
2005年11月02日 星期三 17:08
JYTHON我这有本书,呵呵。 在05-11-2,陈睿杰 <chen.ruijie at gmail.com> 写道: > > > > 在05-11-1,Yang Ng <fivesheep at gmail.com> 写道: > > > java 有groovy了.... > > 是啊,最近研究了下groovy,在java里用她写脚本实在是方便,不需要jpython了。呵呵 > > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20051102/18c5c81d/attachment.html
2005年11月02日 星期三 19:59
有电子版的嘛,能分享一下嘛! Best Regards, ============================== Andy Bu Kodak Health Group Global R&D; Center (Shanghai) Eastman Kodak Company Floor 25, King Tower 28 Xin Jinqiao Road Shanghai, P.R.China 201206 Tel :8621-58345678-3100 Mail : Andy.bu at Kodak.com ============================== mydooom <mydooom at gmail.com> Sent by: python-chinese-bounces at lists.python.cn 2005-11-02 17:08 Please respond to python-chinese at lists.python.cn To python-chinese at lists.python.cn cc Subject Re: [python-chinese] Jython程序设计 [转] JYTHON我这有本书,呵呵。 在05-11-2,陈睿杰 <chen.ruijie at gmail.com> 写道: 在05-11-1,Yang Ng <fivesheep at gmail.com> 写道: java 有groovy了.... 是啊,最近研究了下groovy,在java里用她写脚本实在是方便,不需要jpython了。 呵呵 _______________________________________________ python-chinese list python-chinese at lists.python.cn http://python.cn/mailman/listinfo/python-chinese _______________________________________________ python-chinese list python-chinese at lists.python.cn http://python.cn/mailman/listinfo/python-chinese -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20051102/a136ea7d/attachment.html
2005年11月03日 星期四 10:04
andy.bu at kodak.com 写道: > > 有电子版的嘛,能分享一下嘛! > 4242,分享一下吧:)
2005年11月03日 星期四 10:26
这里有朋友熟悉pygtk的么?? 我正在作linux installer, 使用的语言就是pygtk。 希望能有朋友可以交流。。:)
2005年11月03日 星期四 10:47
不好意思,我的是书,不是电子版,感觉开发容易,但是真正要运用进系统,是比较麻烦了。 在05-11-3,陈睿杰 <chen.ruijie at gmail.com> 写道: > > andy.bu at kodak.com 写道: > > > > 有电子版的嘛,能分享一下嘛! > > > > > 4242,分享一下吧:) > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20051103/c808fb4d/attachment.html
2005年11月03日 星期四 13:17
mydooom<mydooom at gmail.com> 写道: > 不好意思,我的是书,不是电子版,感觉开发容易,但是真正要运用进系统,是比较麻烦了。 > 所以嘛,要简便还是用Groovy的好,期待正式版……
2005年11月04日 星期五 12:16
在 05-11-3,Tom<zysno1 at gmail.com> 写道: > 这里有朋友熟悉pygtk的么?? > > 我正在作linux installer, 使用的语言就是pygtk。 > > 希望能有朋友可以交流。。:) 我虽然python懂的不多,可是是个linux的fans,可以交流一下吗 你要作的什么linux installer呀。意思是安装程序吗? 用python确实是个好的选择 -- /**************************************** * Love in Gentoo-Linux C and Python * * Look at my blog * * http://poorc.wordpress.com * ****************************************/
2005年11月04日 星期五 12:21
在 05-11-3,Tom<zysno1 at gmail.com> 写道: > 这里有朋友熟悉pygtk的么?? > > 我正在作linux installer, 使用的语言就是pygtk。 能说说你做什么installer么? 我看过anaconda -- I'm the one, powered by nEO
2005年11月05日 星期六 14:08
这本书在china-pub只要1x,不过绝版了,就像上次那本python编程金典一样,可惜了 Zoom Quiet wrote: >邮购在dearbook.com.cn: >http://www.dearbook.com.cn/book/ViewBook.aspx?pno=TS0014400 > >
Zeuux © 2025
京ICP备05028076号