一、 Jython 简介
Jython 是一种完整的语言,而不是一个 Java 翻译器或仅仅是一个 Python 编译器,它是一个 Python 语言在 Java 中的完全实现。 Jython 也有很多从 CPython 中继承的模块库。最有趣的事情是 Jython 不像 CPython 或其他任何高级语言,它提供了对其实现语言的一切存取。所以 Jython 不仅给你提供了 Python 的库,同时也提供了所有的 Java 类。这使其有一个巨大的资源库。
Jython,最初叫做 JPython,就是: Python 语言的 Java 实现。
Jython 和 Python 强调了代码的简明性、方便性和易读性。 Jython 使用缩排来对代码块定界以避免使用在 Java 中的大括号。 Jython 用新的一行来表示一个新的语句的开始,并有几个重要的区别,如允许在每个语句后省略分号。Jython没有像在Java中的 public、private和 protected 存取符,这样就给程序员提供了快速开发所需要的灵活性,并将注意力集中在程序逻辑上。正像前面所提到的, Jython 不用明显的静态的类型定义,故程序员不需要从程序逻辑转移到类型定义上来。
Jython 由于继承了 Java 和 Python 二者的特性而显得很独特。
二、 Jython 安装与使用
1.Jython 安装
首先需要安装好 JDK,并配置好环境变量。
从 Jython官网 下载 Jython,这里选择的 Jython 2.5.4rc1,下载 Jython 2.5.4rc1 – Installer, 在 windows 系统下双击文件进行安装。
(如果下载下来的文件名是 remotecontext 没有拓展名,在后面自己加一个 .jar 再双击安装即可。)
具体步骤截图:
2. 在 eclipse 中升级 jydt 并配置 jython
打开 eclipse,点 help--Install New Software--Add 输入
name: JyDT Update Site
Location:http://www.redrobinsoftware.net/jydt/updatesite
结果如图:
升级完成后重新启动 eclipse,
点击 Window--Preferences--Jython 配置路径:
classpath:即 jython 安装好时文件夹中 jython.jar 文件
installation:即 Jython 安装目录,添加 Jython home 后系统会自动补全后面两个,如果没有补全照图补全即可:
3.Eclipse 中使用 Jython
把 jython 安装目录加入到系统环境变量(包含 bin 目录和 Lib 目录),在 java 工程中加入 jython 安装目录下的 jython.jar 即可在 java 中使用 jython 了:
右键 jython.Jar,“Build Path”-->“Add to Build Path”后方可使用。
4.验证
创建新 jython Project
创建新 jython 文件
如图:
测试一下:
三、 Jython 一个简单例子
package py;
import org.python.util.PythonInterpreter;
import org.python.core.*;
public class PyTest {
public static void main(String[] args) {
//运行test.py脚本
PythonInterpreter interp1 = new PythonInterpreter();
interp1.execfile("test.py");
//运行python命令
PythonInterpreter interp = new PythonInterpreter();
System.out.println("Hello, brave new world");
interp.exec("import sys");
interp.exec("print sys");
interp.set("a", new PyInteger(42));
interp.exec("print a");
interp.exec("x = 2+2");
PyObject x = interp.get("x");
System.out.println("x: "+x);
System.out.println("Goodbye, cruel world");
}
}
测试 Python 脚本, test.py:
print "This is a Python exec"
from java.util import Random
rng = Random()
#This is a comment in Jythonprint "Flipping a coin..."
if rng.nextBoolean():
print "Came up heads"
else:
print "Came up tails"
OVER~~