目录[隐藏] |
Jython简介
介绍Jython之前,先简单说说python。 python是用C实现的高级、面向对象、开放源代码的动态解释性脚本语言。具有语法简洁、上手快速、方便易用等优点。
Jython原名JPython,是python的Java实现,python与jython源文件通常以.py为扩展名。它不是python的扩展,你可以把它理解为一门全新的语言,但它与python具有完全一致的语法,支持所有python标准库。也就是说它与python几乎完全一致,具有python的所有特点,可以运行绝大部分python源程序,除了底层实现不同以及尚不支持部分扩展库之外。当然它还具有python所不具备的无缝访问java代码这一最重要的特性。由于jython的解释器是Java实现的,jython代码最终也是在JVM中运行,Jython在运行时仅仅是另一写Java类。因此在jython中使用java类或方法以及在java中执行python代码都是轻而易举的事了。
运行环境
Jython与python有各自不同的运行环境。基本上绝大多数Python代码都可以在Jython环境下很好的运行,但Jython代码很难保证都能在Python环境中运行。当Jython代码中调用了java库时这样的Jython程序是无法在Python环境下运行的。因此本文所说Python与Java互访中的python代码是运行在Jython环境中的,严格意义上说这里将的实际上是Jython与Java的互访。
Jython安装包可以在下面的地址中下载到:
http://www.jython.org/downloads.html
安装Jython之前你的机器上必须具备Java运行环境。
安装包中的Jython.jar文件是将要调用python的Java程序所需要的。
调用实例
Python中调用JDK类库
使用Jython运行环境可以直接调用JDK类库,例如调用java.net包下的URL类:
Python代码:
Python调用Java类
访问其他java类或Jar包需将该类的Class文件所在路径添加到PYTHONPATH这个环境变量中。在装有Pydev插件的Eclipse中可以如下设置:
右键项目-->“属性”-->“PyDev-PYTHONPATH”-->“External Libraries”-->“Add source folder”-->选中class文件所在位置后点确定
示例如下:
Java 代码:
Python 代码:
Python中扩展java类
Python代码:
在Java中执行python代码
在java中执行python代码需要导入Jython.jar这个包。该包中用java实现了一个python代码解释器PythonInterpreter。使用该解释器就可以逐条执行python语句:
Java代码:
PythonIterpreter还提供了execfile(filename)方法可以直接执行某个python脚本文件
Java调用Python对象
Java代码:
Java调用python函数
Java代码:
结语
本文简单举例介绍了python代码与java代码通过jython互相调用的几种方式。可以看出实现互调是比较简单的。在实际使用中,部分地方需要考虑传递参数或对象的类型转换、异常捕捉等问题,具体细节及更多高级使用技巧请参考Jython官方文档。