Jython是一種完整的語言,而不是一個Java翻譯器或僅僅是一個Python編譯器,它是一個Python語言在Java中的徹底實現。Jython也有不少從CPython中繼承的模塊庫。最有趣的事情是Jython不像CPython或其餘任何高級語言,它提供了對其實現語言的一切存取。因此Jython不只給你提供了Python的庫,同時也提供了全部的Java類。這使其有一個巨大的資源庫。html
Jython因爲繼承了Java和Python兩者的特性而顯得很獨特。與Java的無縫集成,Jython能使任何部署了Java應用和框架的公司受益而不須要額外的工做。接受任何一種部門的編程語言,對任何一個公司而言都是不容易的,須要深思熟慮,由於這牽涉到總體結構、服務器和外圍的工具。java
Jython做爲Java的一個無縫集成的語言,能夠在已存在的Java應用上無縫增長而不須要重大抉擇。不少公司都花費了不少資金來創建Java的應用,這使採用CPython、Perl、Ruby、PHP和其餘不能透明地集成已有Java實現的高級語言的效益下降,吸引力降低。而Jython有能力對已存在的Java框架進行補充,且兩者能無縫地結合。python
(1)maven方式編程
<dependency> <groupId>org.python</groupId> <artifactId>jython-standalone</artifactId> <version>2.7.0</version> </dependency>
(2)官網下載:http://www.jython.org/downloads.html服務器
(3)個人網盤:https://yunpan.cn/cBMNJJMQ63MhH 訪問密碼 ecffapp
本示例中使用到的Python源碼:框架
(1)input.pymaven
#open files print 'hello' number=[3,5,2,0,6] print number number.sort() print number number.append(0) print number print number.count(0) print number.index(5)
(2)my_utils.py編程語言
def adder(a, b): return a + b
package demo2; import org.junit.Before; import org.junit.Test; import org.python.core.PyFunction; import org.python.core.PyInteger; import org.python.core.PyObject; import org.python.util.PythonInterpreter; /** * jython庫測試 * @author mengfeiyang * */ public class JavaExecutePython { public PythonInterpreter interpreter ; public String basePath = JavaExecutePython.class.getResource("").getPath(); @Before public void start(){ interpreter = new PythonInterpreter(); } //在java類中直接執行python語句 @Test public void test01() { interpreter.exec("days=('mod','Tue','Wed','Thu','Fri','Sat','Sun'); "); interpreter.exec("print days[1];"); } //在java中調用本機python腳本中的函數 @Test public void test02(){ interpreter.execfile(basePath+"my_utils.py"); PyFunction func = (PyFunction) interpreter.get("adder",PyFunction.class); int a = 2010, b = 2; PyObject pyobj = func.__call__(new PyInteger(a), new PyInteger(b)); System.out.println("anwser = " + pyobj.toString()); } //直接執行Python腳本 @Test public void test03(){ interpreter.execfile(basePath+"input.py"); } }
新建一個javaSE工程,導入jython.jar包。將以上的input.py,my_utils.py和JavaExecutePython類放到同一目錄下:函數
在JavaExecutePython類編輯界面,右鍵菜單選擇Run as...,選擇Junit Test。執行結果以下: