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(旧称JPython)
要了解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简介** 1. **Python与Jython的区别** Python是一种跨平台的高级编程语言,以其易读性强和代码简洁著称。Jython则是Python的一个变种,它与Java紧密集成,允许开发者使用Python语法编写Java应用程序。 ...
**一、Jython简介** Jython由James Gosling的早期工作启发,最初在1997年由Jeffrey E.F. Friedl创建,后来由Jim Hugunin进一步发展。Jython的设计目标是与标准Python语言尽可能兼容,同时充分利用Java平台的能力。它...
#### 二、Jython简介 Jython 由 Jim Hugunin 创建,是一款开源项目,它实现了 Python 语言规范,并且能够在 Java 虚拟机(JVM)上运行。这意味着开发者可以在 Java 应用程序中嵌入 Python 代码,从而利用 Python 的...
#### 一、Jython简介 Jython 是一种开放源代码的实现方式,它将 Python 这种高级、动态且面向对象的脚本语言无缝集成到 Java 平台上。作为 JPython 的后续版本,Jython 已经获得了“100% Pure Java”的认证,并且...
#### 核心概念:Jython简介 - **定义**:Jython是一种能够运行在Java平台上的Python解释器,它使得开发者能够在Java虚拟机(JVM)上执行Python代码,同时无缝地集成Java类库。 - **优势**:结合了Python语言的简洁...
1. **Jython简介**:Jython是Python的一种Java版本,它完全兼容Python语法,并且可以直接调用Java类库。这使得开发者能够在Java环境中使用Python的语法和工具,简化代码编写,提高开发效率。 2. **Java与Python的互...
#### Jython简介 Jython是一种能够运行在Java平台上的Python解释器,它允许开发者使用Python语法来编写可以访问Java类库的程序。这意味着开发者可以在Java平台上享受Python语言的强大功能和简洁性。 #### 使用...
**Jython与JyDT简介** Jython是一种Python的实现,它完全兼容Python语法,并且运行在Java平台上。Jython的出现使得Python开发者能够利用Java的丰富库和强大的跨平台能力,同时也为Java开发者提供了Python的简洁和...
根据提供的文件信息,可以看出这里似乎混杂了几部分内容:一个是关于使用 Jython 脚本管理 WebSphere Application Server 的英文资料介绍;另一个则是两本书籍的简介,分别涉及使用 WebSphere Portlet Factory 开发 ...
JES被Mark Guzdial和Barbara Ericson合并到“ Python中的计算和编程简介:一种多媒体方法”中。 Guzdial博士是该项目的负责人,多年来,许多人都在从事该项目的工作(如jes/help/JESCopyright.txt文件中所示)。 ...
### wsadmin 工具简介 `wsadmin`工具自WAS V5开始引入,支持两种脚本语言:Jython和Jacl。Jython是一种Python语言的Java实现,更推荐用于`wsadmin`,因为它提供了更强的表达能力和灵活性。Jacl(Java Command ...
21.7.4 选择Jython开发工具 483 21.8 使用Jython进行测试 483 21.9 嵌入Jython解释器 484 21.10 处理C-Python和Jython 之间的差异 487 21.11 本章小结 488 21.12 习题 488 第Ⅳ部分 附 录 附录A 习题答案 491 附录B ...
#### 一、Windchill简介与应用背景 Windchill是一款由PTC公司推出的强大的产品生命周期管理(PLM)软件解决方案,广泛应用于制造业的设计、工程、制造和服务等环节,帮助企业实现对产品数据的有效管理。随着版本的...
#### 一、简介 Robot Framework 是一款灵活且功能强大的自动化测试框架,它支持关键字驱动的测试方法,并能够与各种类型的自动化测试库集成。Robot Framework 3.0 版本进一步增强了其功能,并提供了对 Python 3 的...
1. IBM SPSS Modeler的简介:SPSS Modeler是一款用于数据挖掘和预测分析的软件。它提供了丰富的数据可视化、数据转换、统计分析和建模技术。 2. Python编程:Python是一种通用编程语言,具有简洁的语法和强大的功能...
**PyDev for Eclipse 简介** PyDev是Eclipse集成开发环境(IDE)的一个扩展,专门为Python开发者设计。这个强大的插件提供了丰富的功能,帮助程序员高效地编写、调试和优化Python代码。在Eclipse中集成PyDev后,...
一、Python 简介 Python 是一种高层语言,具有跨平台、开源、免费、简单易学、易扩展、可嵌入等特点。Python有多种实现版本,包括CPython、Jython、IronPython、PyPy等。 二、安装 Python 1. 在 Windows 下安装 ...
简介:MaxQ是一个开源的Web功能测试工具。它包含一个记录Jython测试脚本的HTTP代理,一个用于回放测试的命令行实用程序。代理记录器自动存储提交到表单的变量。 ...
本文将详细介绍 Python 中常用的几种 GUI 开发工具,包括 Tkinter、WxPython、PyQt、pyGTK、Jython、MFC、PythonCard、Dabo、AnyGui、WPY 和 IronPython。 ### 1. Tkinter #### 简介 - **背景**:Tkinter 是 ...
【Python 简介】 Python是一种高级编程语言,以其简洁明了的语法和良好的可读性而闻名。它强调代码的清晰性和维护性,通过强制使用空白符进行语句缩进来提升代码的视觉美感。Python的设计哲学是"有一条最佳解决方案...