运行在java虚拟机上的Python
Posted AAA软件教育官方
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了运行在java虚拟机上的Python相关的知识,希望对你有一定的参考价值。
Jython是建立在java虚拟机之上的一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是一个Python语言在Java中的完全实现。Jython也有很多从CPython中继承的模块库。最有趣的事情是Jython不像CPython或其他任何高级语言,它提供了对其实现语言的一切存取。所以Jython不仅给你提供了Python的库,同时也提供了所有的Java类。这使其有一个巨大的资源库。
介绍
要了解Jython(旧称JPython),首先要了解Python。Python是用C编写的高级的、面向对象的、开放源代码的编程语言。Guido vanRossum是Python的原创者,继而在Python的快速发展中产生了一大群高水平的设计者和程序员。使用Python的开发人员增长迅速,并一直在持续增长。然而Java编程语言也是深入人心的。随着用Java实现的项目的数量接近了用C/C++实现的项目,Python的Java实现也变得很有必要。Jython,最初叫做JPython,就是:Python语言的Java实现。
Jython和Python强调了代码的简明性、方便性和易读性。Jython使用缩排来对代码块定界以避免使用在Java中的大括号。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的两个主要开发者。
特点
学习周期短
任何Java程序员在数日内就能熟悉Jython。由于有很多内容,关键在于细节的学习,但仅仅用几天的时间就能拥有Jython的快速开发功能确实是很有价值的。对于那些从事测试和技术支持的小组通常并没有很多时间去学习复杂的Java代码,但通过对Jython的学习能在开销很少的情况下很快提高公司的技术水平和效率。
写一次,处处可用
由于Jython是用Java编写的且由于其可编译成Java字节码,因此Jython也具有Java的“写一次,处处可用”的特点。Jython能运行在任何可兼容的Java1.1‘或更高的Java虚拟机(JVM)版本的平台上。另外你可将Jython应用编译成自足的字节码,它能运行在任何兼容的JVM上。在Linux上编译的应用能运行在有兼容JVM的任何其他平台上。
Java的安全性是特别的而且越来越重要。从沙箱到信号,Jython有能力使用Java的特别的安全框架。
代码的清晰性是Python最大的优点,当然也是Jython最大的优点。不必要的标点和行都避免了。Jython代码在可读性和清晰性方面近似于自然语言。这起源于Python对代码块和语句的简单描绘的承诺。缩排标记代码块,换行符标记新的语句。在此之上,语法通常支持。
效率
计算编程语言的效率是一个很广泛的课题,它要考虑程序员的时间、总体复杂性、代码的行数、可用性、可维护性和运行效率。当然很多人不同意赋予这些变量的权重,经常是在不同的情况下偏重有所不同。然而本文的前提是Jython除运行时的效率外,其他方面都超过其他语言。Jython的运行速度是可以与其他高级语言相比的,但速度并不是高级语言的目标和特点。区别在于当加速一个需要的应用时,将Jython代码翻译成Java更有效,这是由于Jython与Java的无缝集成性。另外对所有有效的Java类的直接访问增加了改进已存在的类的可能性。
优势
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框架进行补充,且二者能无缝地结合。
示例
1.按钮
import java
from java import awt
def exit(e): java.lang.System.exit(0)
frame = awt.Frame('AWT Example', visible=1)
button = awt.Button('Close Me!', actionPerformed=exit)
frame.add(button, 'Center')
frame.pack()
运行效果:
AAA软件教育(大学生实训校区)
官网:www.zzaaa.net
以上是关于运行在java虚拟机上的Python的主要内容,如果未能解决你的问题,请参考以下文章