使用Jython实现Python与java的互调

本文原是本人上传到公司内部供大家学习交流的wiki上的一篇文章,为防以后丢失,特转移至此!
跳转到:  导航搜索

目录

[隐藏]

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官方文档。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值