この記事では主に JPype が Python で JAVA を呼び出す例を紹介していますが、編集者が非常に良いと思ったので、参考として共有します。編集者をフォローして一緒に見てみましょう
1. JPypeの簡単な紹介
1. JPypeとは何ですか?
JPype は、Python コードから Java コードを簡単に呼び出すことができるツールです。これにより、一部の領域 (サーバーサイド プログラミングなど) での Python の欠点が克服されます。
2. JPype と Jython (JPython の後継) の違いは何ですか?
1) 異なる実行環境: jython は jvm 上で実行されますが、JPype の実際の実行環境は依然として Python ランタイムですが、動作中に埋め込み jvm が開始されます。
2) 異なるユーザー: jython は Java プログラム用です。 JPype は Python プログラマー向けです。
2. JPypeのインストール
1. まずPython2.7とJAVA1.6をインストールします
2. JPype-0.5.4.2.win32-py2.7.exeをインストールします(http://sourceforge.net/ project/jpype/files/JPype/0.5.4/)
3. Ubuntu12.04 インストールコマンド: sudo apt-get install python-jpype
3. JPype の使い方
1. JVM を起動します
JPype が提供する startJVM() 関数は JAVA 仮想マシンの起動に使用されるため、後続の JAVA コードが呼び出される前に、このメソッドを呼び出して JAVA 仮想マシンを起動する必要があります。 jpype.startJVM() 定義startJVM(jvm, *args)jpype.startJVM() パラメータ
-agentlib:libname[=options] -classpath classpath -verbose -Xint
2. JVM をシャットダウンします
JVM の使用が完了したら、jpype.shutdownJVM() を通じて JVM をシャットダウンできます。入力パラメータ。 Python プログラムが終了すると、JVM は自動的にシャットダウンします。3. サードパーティの Java 拡張機能パッケージを参照する
多くの場合、サードパーティの Java 拡張機能パッケージを Python プロジェクトで呼び出す必要がありますが、これも JPype の重要な用途です。 JVM 起動パラメータに -Djava.class.path=ext_classpath を追加すると、Python コードで既存の Java 拡張機能パッケージを呼び出すことができます。4. JAVA システム プロパティにアクセスする
一部の Java アプリケーションでは、JVM でシステム プロパティを設定または取得する必要がある場合があります。-Dproperty=value
4. 例
1. JAVA APIfrom jpype import * import os.path startJVM("C:/Java/jdk1.6.0_10/jre/bin/client/jvm.dll", "-ea") java.lang.System.out.println("hello World") shutdownJVM()を直接呼び出します。 2. JAVA サードパーティ拡張パッケージを呼び出します1) JAVA カスタム サードパーティ jar パッケージ: JpypeDemo クラスを jpypedemo.jar ファイルとしてパッケージ化し、F:/sample_Py ディレクトリに保存します
package jpype; public class JpypeDemo { public String sayHello(String user){ return "hello" + user; } public int calc(int a, int b){ return a + b; } }2) Python はサードパーティの JAVA jar パッケージ プログラム
from jpype import * import os.path jarpath = os.path.join(os.path.abspath('.'), 'F:/sample_Py/') startJVM("C:/Java/jdk1.6.0_10/jre/bin/client/jvm.dll","-ea", "-Djava.class.path=%s" % (jarpath + 'jpypedemo.jar')) #ubuntu 中startJVM("/home/geek/Android/jdk1.6.0_43/jre/lib/i386/server/libjvm.so","-ea", "-Djava.class.path=%s" % (jarpath + 'XXX.jar')) JDClass = JClass("jpype.JpypeDemo") jd = JDClass() #jd = JPackage("jpype").JpypeDemo() #两种创建jd的方法 jprint = java.lang.System.out.println jprint(jd.sayHello("waw")) jprint(jd.calc(2,4)) shutdownJVM()3. JAVA システム プロパティにアクセスする 設定するプロパティの名前が yourProperty で、プロパティ値が yourValue であるとします。 1) JVM起動時のシステム変数の設定例
import jpype jvmPath = jpype.getDefaultJVMPath() jvmArg = “ -DyourProperty=yourValue ” if not jpype.isJVMStarted(): jpype.startJVM(jvmPath,jvmArg)2) プログラム内でのシステム変数の設定例
import jpype prop = “ yourProperty ” value = “ yourValue ” system = jpype.JClass('java.lang.System') system.setProperty(str(prop),str(value))3) プログラム内でのシステム変数の取得例
import jpype prop = “ yourProperty ” system = jpype.JClass('java.lang.System') value = system.getProperty(str(prop))
以上がJPypeを使用してPythonでJavaを呼び出す方法の共有例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。