Jython-java-application

提供:Dev Guides
移動先:案内検索

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