導航:首頁 > 編程語言 > jythonjava

jythonjava

發布時間:2022-04-27 20:14:24

1. jython 可以調用java包嗎

參考下面方法:
1.直接執行python腳本代碼
引用 org.python包
1 PythonInterpreter interpreter = new PythonInterpreter();
2 interpreter.exec("days=('mod','Tue','Wed','Thu','Fri','Sat','Sun'); "); ///執行python腳本
2. 執行python .py文件
1 PythonInterpreter interpreter = new PythonInterpreter();
2 InputStream filepy = new FileInputStream("D:\\demo.py");
3 interpreter.execfile(filepy); ///執行python py文件
4 filepy.close();
3. 使用Runtime.getRuntime()執行腳本文件
這種方式和.net下面調用cmd執行命令的方式類似。如果執行的python腳本有引用第三方包的,建議使用此種方式。使用上面兩種方式會報錯java ImportError: No mole named arcpy。
1 Process proc = Runtime.getRuntime().exec("python D:\\demo.py");
2 proc.waitFor();

2. 如何用java 執行jython

參考下面方法:
1.直接執行Python腳本代碼
引用 org.python包
1 PythonInterpreter interpreter = new PythonInterpreter();
2 interpreter.exec("days=('mod','Tue','Wed','Thu','Fri','Sat','Sun'); "); ///執行python腳本


2. 執行python .py文件
1 PythonInterpreter interpreter = new PythonInterpreter();
2 InputStream filepy = new FileInputStream("D:\\demo.py");
3 interpreter.execfile(filepy); ///執行python py文件
4 filepy.close();


3. 使用Runtime.getRuntime()執行腳本文件
這種方式和.net下面調用cmd執行命令的方式類似。如果執行的python腳本有引用第三方包的,建議使用此種方式。使用上面兩種方式會報錯java ImportError: No mole named arcpy。
1 Process proc = Runtime.getRuntime().exec("python D:\\demo.py");
2 proc.waitFor();

3. Java怎麼用jython調用python

args, 為可選參數,會被 JPype 直接傳遞給 JVM 作為 Java 虛擬機的啟動百參數。此處適合所有合法的度 JVM 啟動參數,例如:
-agentlib:libname[=options]
-classpath classpath
-verbose
-Xint

4. 如何將Jython類型轉換為Java類型

要將 Jython類型轉換為 Java類型(以及相反),使用下面例子中的函數:def mapMapFromJava (map): """ Convert a Map to a Dictionary. """ result = {} iter = map.keySet().iterator() while iter.hasNext(): key = iter.next() result[mapFromJava(key)] = mapFromJava(map.get(key)) return result def mapCollectionFromJava (coll): """ Convert a Collection to a List. """ result = [] iter = coll.iterator(); while iter.hasNext(): result.append(mapFromJava(iter.next())) return result def mapFromJava (object): """ Convert a Java type to a Jython type. """ if object is None: return object if isinstance(object, util.Map): result = mapMapFromJava(object) elif isinstance(object, util.Collection): result = mapCollectionFromJava(object) else: result = object return result def mapSeqToJava (seq): """ Convert a sequence to a Java ArrayList. """ result = util.ArrayList(len(seq)) for e in seq: result.add(mapToJava(e)); return result def mapDictToJava (dict): """ Convert a Dictionary to a Java HashMap. """ result = util.HashMap() for key, value in dict.items(): result.put(mapToJava(key), mapToJava(value)) return result def mapToJava (object): """ 將Jython類型轉換為Java類型 """ if object is None: return object t = type(object) if t == TupleType or t == ListType: result = mapSeqToJava(object) elif t == DictType: result = mapDictToJava(object) else: result = object return result 在使用了 mapToJava 後,這些類型可以寫為java.io.ObjectOutputStream。從 java.io.ObjectInputStream 讀出一個對象後,可以用 mapFromJava 將對象轉換回 Jython 類型。注意這些方法支持有限的、但是廣泛使用的一組內置 Jython類型。Jython 自動轉換類似值的類型,如數字和字元串。不支持用戶定義的類。映射Java類型繼續這個例子,下面顯示了繼續使用上一屏討論的映射函數的情況:data = (1,2,3, [1,2,3], [c for c in "Hello!"], "Hello!", {1:'one', 2:'two'}) print "data:", data toJava = mapToJava(data) print "toJava:", toJava fromJava = mapFromJava(toJava) print "fromJava:", fromJava print print "type(%s)=%s" % ("data", type(data)) print "type(%s)=%s" % ("toJava", type(toJava)) print "type(%s)=%s" % ("fromJava", type(fromJava)) 列印:data: (1, 2, 3, [1, 2, 3], ['H', 'e', 'l', 'l', 'o', '!'], 'Hello!', \ {2: 'two', 1: 'one'}) toJava: [1, 2, 3, [1, 2, 3], [H, e, l, l, o, !], Hello!, {2=two, 1=one}] fromJava: [1, 2, 3, [1, 2, 3], ['H', 'e', 'l', 'l', 'o', '!'], 'Hello!', \ {2: 'two', 1: 'one'}] type(data)=org.python.core.PyTuple type(toJava)=org.python.core.PyJavaInstance type(fromJava)=org.python.core.PyList 注意PyTuple變成了 PyJavaInstance,然後是 PyList.還要注意 toJava 表單的格式不一樣了。這是因為它是一個 Java 對象,並且它是由 Java toString() 方法而不是 Jython repr()函數列印的。Jython 將 PyJavaInstance 這種類型原樣傳遞給 Java API。 最後,注意 data 和 fromJava 值是相同的,只不過元組現在是一個相應的列表。更多可咨詢遠標老師

5. Python和Jython的區別簡述

jython用途比較少。主要在兩個場景下:

  1. 操作系統不提供cpython, 只有JAVA可以用。比如sun工作站,或者是某些嵌入式設備

  2. 不得不用一些JAVA的包來提供功能。所以只能用jython來調用JAR包

  3. jython因為有java的即時編譯器和編譯優化效果,所有速度還是不錯的。


不過jython的總體來講,支持包不夠多。不象是cpython 2.7那樣,幾乎所有的包都支持。極其豐富。不過純python的包都可以在jython上安裝使用。


jython的版本號通常比cpython的要低。不過現在到了2.7也基本上持平了。流行的jython就是2.5, 2.7兩個版本


另外jython似乎對於GIL處理的更好些。所以原則上講,並發性能更好。所以jython的線程應該會比cpython的線程更強大。可以更好的利用到java的性能,把CPU的各個核都用上。


另外內存的使用上,按理jython也可以利用到java的一些優點。cpython通常字典超 過2GB內存就會很慢。也許jython要好些。


總體來講,性能上還是cpython要更快些。最快的是pypy,其次是cython, 再次是cpython, jython應該在後面。

6. jython和python的區別是什麼

我們通常意義上說的python是cpython,也就是完全用C實現的python,它支持C的擴展,不支持java什麼的擴展。
jython是完全用jython實現的python,它支持用java擴展,貌似無法用C擴展。
相關推薦:《python培訓視頻》
jython用途比較少。主要在兩個場景下:
1、操作系統不提供cpython, 只有JAVA可以用。比如sun工作站,或者是某些嵌入式設備。
2、不得不用一些JAVA的包來提供功能。所以只能用jython來調用JAR包。
jython因為有java的即時編譯器和編譯優化效果,所有速度還是不錯的。
不過jython的總體來講,支持包不夠多。不象是cpython 2.7那樣,幾乎所有的包都支持。極其豐富。不過純python的包都可以在jython上安裝使用。
jython的版本號通常比cpython的要低。不過現在到了2.7也基本上持平了。流行的jython就是2.5,2.7兩個版本。
另外jython似乎對於GIL處理的更好些。所以原則上講,並發性能更好。所以jython的線程應該會比cpython的線程更強大。可以更好的利用到java的性能,把CPU的各個核都用上。
另外內存的使用上,按理jython也可以利用到java的一些優點。cpython通常字典超 過2GB內存就會很慢。也許jython要好些。
總體來講,性能上還是cpython要更快些。最快的是pypy,其次是cython, 再次是cpython, jython應該在後面。

7. 如何在Java項目中嵌入Jython代碼

Hello World!——它在Jython中如下所示:
清單1. Jython的Hello World!
print"HelloWorld!"
在Jython中(就像在Python中),源文件使用擴展名「py」。「Hello World」語句放在hello.py之類的源文件中時,就是一個完整的程序。
作為比較,看一下等效的Java程序,看看下面的hello.java文件:
清單2.Java的Hello World!
publicclasshello{
publicstaticvoidmain(String[]args){
System.out.println("HelloWorld!");}}
Jython的格式顯然更簡單,通常都是如此。Jython好的方面當然是代碼可以直接解釋,也可以翻譯成Java源代碼並自動編譯為類文件。可以用下面的Java命令來運行Hello World程序:C:\java-Dpython.home=C:\jython-2.1-cpC:\jython-2.1\jython.jar
org.python.util.jythonhello.py
也可以用下面更方便的Jython腳本運行這個程序:C:\
jythonhello.py

8. Jython是編程語言嗎與python和java有什麼關系簡單介紹下,不要百科的資料。

jython是用java寫的python解釋器,用jython解釋的python程序可以調用java寫的拓展庫

9. jython 可以和java用同一個虛擬機嗎

答案是肯定的,可以,兩個軟體的使用不會受到影響,更不會因為環境變數的設置受到影響。
環境變數(environment variables)一般是指在操作系統中用來指定操作系統運行環境的一些參數,如:臨時文件夾位置和系統文件夾位置等。
[網路環境變數](http://ke..com/link?url=__i_oFjCHoZZAykcXN2K2Veq)
1、打開環境變數設置:
2這里系統應該是默認有個叫做Path的環境變數(上面是用戶環境變數,設置的變數只會影響到當前的用戶;下面是系統環境變數,其他的用戶進入系統也是可以使用這些變數的,這種設置是因為windows可以擁有多個用戶使用,伺服器版本可以同時多個用戶在線,桌面版同時只能一個用戶在線),包括你設置的一些java的可執行文件的目錄。
3、但凡設置到這裡面的文件,都可以dos系統直接執行,比如:我這Path裡面添加了一條maven的環境變數:C:\Program Files (x86)\apache-maven-3.0.5\bin;
4、執行mvn -version
5、這里有兩個的運行結果:python -V java -version

閱讀全文

與jythonjava相關的資料

熱點內容
壓縮機異音影響製冷嗎 瀏覽:711
德斯蘭壓縮機 瀏覽:490
程序員太極拳視頻 瀏覽:531
網上購買加密鎖 瀏覽:825
安卓為什麼軟體要隱私 瀏覽:83
虛擬主機管理源碼 瀏覽:811
java圖形圖像 瀏覽:230
單片機輸出口電平 瀏覽:486
java配置資料庫連接 瀏覽:479
java多態的體現 瀏覽:554
java的split分隔符 瀏覽:128
跪著敲代碼的程序員 瀏覽:238
web和php有什麼區別 瀏覽:120
加密的電梯卡怎麼復制蘋果手機 瀏覽:218
warez壓縮 瀏覽:137
黑馬程序員培訓機構官網天津 瀏覽:904
mainjavasrc 瀏覽:58
如何買伺服器挖礦 瀏覽:292
php批量上傳文件夾 瀏覽:560
安卓固件怎麼更新 瀏覽:169