`

Jython

阅读更多

Jython语言结合了Python的灵活高效与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实现。为避免混淆,

   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代码翻译成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各个版本下载地址

    ### Jython 各个版本下载地址解析 Jython 是一种Python的实现,它允许Python代码在Java平台上运行。本文将详细介绍Jython不同版本的下载地址及相关文件信息。 #### Jython 2.2 版本 - **发布日期**:2007年8月24...

    jython-standalone-2.7.0.zip

    标题 "jython-standalone-2.7.0.zip" 提供了我们正在处理的是一个Jython的独立版本,具体是2.7.0的发行版。Jython是一种Python的实现,它允许Python代码在Java平台上运行。这个压缩包很可能包含了一个完整的Jython...

    jython-standalone-2.7.0.jar

    《Java调用Python脚本:Jython详解及应用》 在现代软件开发中,常常需要在不同的编程语言之间进行交互,比如Java与Python。Jython是这样一种工具,它允许Java开发者无缝地运行Python代码,使得Java应用可以利用...

    jython-standalone-2.7.1.jar

    《Jython:Java与Python的桥梁》 Jython,这个名字源于Java和Python的结合,是一种Python的实现,它允许在Java平台上运行Python代码。标题中的"jython-standalone-2.7.1.jar"是一个独立的Jython版本,特别适用于...

    Burpsuite环境Jython安装方法1

    **Burp Suite 环境 Jython 安装详解** Burp Suite 是一款广泛使用的网络安全测试工具,主要用于 web 应用程序的安全性测试。而 Jython 是 Python 语言的一个实现,它运行在 Java 虚拟机(JVM)上,使得 Python 代码...

    jython-standalone-2.7.1 burpsuite的python环境配置

    标题"jython-standalone-2.7.1 burpsuite的python环境配置"指的是使用Jython(一个Python的Java实现)的独立版本2.7.1来配置Burp Suite(一个流行的网络安全测试工具)的Python环境。Burp Suite允许用户通过编写...

    jython中文详细教程

    **Jython 中文详细教程** Jython是一种基于Python语言的解释器,它是针对Java平台设计的,能够直接运行在Java虚拟机(JVM)上。它不仅提供了Python的全部功能,还能够无缝集成Java类库,使得开发者可以利用Python的...

    jython-standalone-2.7.0(最新版本)

    如果windows的用户安装插件有问题的,尝试一下换这个jython: Jython官网: https://www.jython.org/downloads.html Jython环境安装包: ...

    Jython简单配置和使用

    Jython 简单配置和使用 Jython 是一种完整的语言,而不是一个 Java 翻译器或仅仅是一个 Python 编译器,它是一个 Python 语言在 Java 中的完全实现。Jython 也有很多从 CPython 中继承的模块库。最有趣的事情是 ...

    jython安装和使用方法

    Jython 安装和使用方法 Jython 是一个基于 Java 语言的 Python 实现,它可以让 Python 语言运行在 Java 平台上。下面将详细介绍 Jython 的安装和使用方法。 安装 Jython 首先,需要从 Jython 官方网站下载 Jython...

    jython2.5-安装包

    Jython是一种Python编程语言的实现,它允许开发者在Java平台上编写和运行Python代码。这个"jython2.5-安装包"显然包含了Jython 2.5版本的安装程序,这是一个较旧但仍然有其用途的版本。Jython 2.5b1是该系列的beta1...

    jython的用法及学习文档

    ### Jython的用法及学习文档 #### 一、引言 Jython 是一种能够运行在 Java 平台上的 Python 解释器,它允许开发者直接使用 Python 代码调用 Java API,同时也支持 Java 代码调用 Python 的功能。本文档旨在帮助...

    jython

    标题 "Jython" 提到的是一个与Python编程语言相关的开源项目——Jython。Jython是Python的一个实现,它允许Python代码在Java平台上运行。Jython将Python语言的灵活性和简洁性与Java平台的强大功能相结合,使得开发者...

    Jython示例

    **Jython概述** Jython是一种基于Java平台的Python实现,它允许Python代码与Java平台无缝集成。Jython的出现使得Python开发者能够利用Java的强大功能,同时保持Python的简洁性和易读性。它不仅实现了Python标准库,...

    jython_installer-2.5.2

    Jython是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是一个Python语言在Java中的完全实现。Jython也有很多从CPython中继承的模块库。最有趣的事情是Jython不像CPython或其他任何高级语言,它...

    python&jython;

    Python 和 Jython 都是基于 Python 语言的实现,但它们之间存在一些关键差异。Python 是一种广泛使用的高级编程语言,以其简洁明了的语法和强大的功能而闻名,尤其在数据处理、网络编程和科学计算等领域。Jython,另...

    java中jython操作把python数据类型转成java类型

    在Java中,Jython是一个非常有用的工具,它允许我们在Java应用程序中嵌入Python代码,并能够无缝地在Python数据类型和Java数据类型之间进行转换。这极大地扩展了Java的生态系统,让我们能够利用Python丰富的库和简洁...

    jython-installer27.jar

    《Jython:Python在Java平台上的桥梁》 Python是一种强大且易学的编程语言,而Java则以其跨平台性和稳定性闻名。然而,在某些场景下,我们可能需要在Java环境中运行Python代码,这时Jython就成为了关键的角色。...

    jython解析xml文件

    Jython是一种Python的实现,它允许开发者使用Python语法在Java平台上运行代码。当涉及到在Java环境中处理XML时,Jython提供了一个灵活且高效的解决方案。 首先,我们要理解如何在Jython中导入处理XML的库。在Python...

Global site tag (gtag.js) - Google Analytics