Jython-java-application
Jython-Javaアプリケーション
ダウンロード jython-standalone-2.7.0.jar -JythonをJavaアプリケーションに埋め込むには、公式ダウンロードページ(http://www.jython.org/downloadsl)からJava CLASSPATH環境変数にこのjarファイルを含めます。
このライブラリには PythonInterpreter クラスが含まれています。 このクラスのオブジェクトを使用すると、* execfile()メソッドを使用してPythonスクリプトを実行できます。 PythonInterpreterを使用すると、 *PyObjects を直接使用できます。 Jythonランタイムシステムに認識されているすべてのオブジェクトは、クラスPyObjectのインスタンスまたはそのサブクラスの1つによって表されます。
PythonInterpreterクラスには定期的に使用されるメソッドがいくつかあります。これらのメソッドについては、以下の表で説明します。
Sr.No. | Method & Description |
---|---|
1 |
setIn(PyObject) 標準入力ストリームに使用するPythonオブジェクトを設定します |
2 |
setIn(java.io.Reader) 標準入力ストリームに使用するjava.io.Readerを設定します |
3 |
setIn(java.io.InputStream) 標準入力ストリームに使用するjava.io.InputStreamを設定します |
4 |
setOut(PyObject) 標準出力ストリームに使用するPythonオブジェクトを設定します |
5 |
setOut(java.io.Writer) 標準出力ストリームに使用するjava.io.Writerを設定します |
6 |
setOut(java,io.OutputStream) 標準出力ストリームに使用するjava.io.OutputStreamを設定します |
7 |
setErr(PyObject) 標準エラーストリームに使用するPythonエラーオブジェクトを設定する |
8 |
setErr(java.io.Writer 標準エラーストリームに使用するjava.io.Writerを設定します |
9 |
setErr(java.io.OutputStream) 標準エラーストリームに使用するjava.io.OutputStreamを設定します |
10 |
eval(String) 文字列をPythonソースとして評価し、結果を返します |
11 |
eval(PyObject) Pythonコードオブジェクトを評価し、結果を返す |
12 |
exec(String) ローカル名前空間でPythonソース文字列を実行します |
13 |
exec(PyObject) ローカル名前空間でPythonコードオブジェクトを実行する |
14 |
execfile(String filename) ローカル名前空間でPythonソースのファイルを実行します |
15 |
execfile(java.io.InputStream) ローカル名前空間でPythonソースの入力ストリームを実行します |
16 |
compile(String) Pythonソース文字列を式またはモジュールとしてコンパイルします |
17 |
compile(script, filename) Pythonソースのスクリプトを式またはモジュールとしてコンパイルします |
18 |
set(String name, Object value) ローカル名前空間にオブジェクト型の変数を設定します |
19 |
set(String name, PyObject value) ローカル名前空間でPyObject型の変数を設定します |
20 |
get(String) ローカル名前空間の変数の値を取得します |
21 |
get(String name, Classjavaclass ローカル名前空間の変数の値を取得します。 値は、指定されたJavaクラスのインスタンスとして返されます。 |
次のコードブロックは、PythonInterpreterオブジェクトのJythonスクリプト*“ hello.py” .usingexecfile()*メソッドが埋め込まれたJavaプログラムです。 また、set()およびget()メソッドを使用してPython変数を設定または読み取る方法も示します。
import org.python.util.PythonInterpreter;
import org.python.core.*;
public class SimpleEmbedded {
public static void main(String []args) throws PyException {
PythonInterpreter interp = new PythonInterpreter();
System.out.println("Hello, world from Java");
interp.execfile("hello.py");
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 ");
}
}
上記のJavaプログラムをコンパイルして実行し、次の出力を取得します。
Hello, world from Java
hello world from Python
42
x: 4
Goodbye