Учебники

Jython – Java-приложение

Загрузите jython-standalone-2.7.0.jar – для встраивания Jython в приложения Java с их официальной страницы загрузок: http://www.jython.org/downloads.html и включите этот файл jar в переменную среды Java CLASSPATH.

Эта библиотека содержит класс PythonInterpreter . Используя объект этого класса, любой скрипт Python может быть выполнен с использованием метода execfile () . PythonInterpreter позволяет вам использовать PyObjects напрямую. Все объекты, известные системе времени исполнения Jython, представлены экземпляром класса PyObject или одним из его подклассов.

Класс PythonInterpreter имеет несколько регулярно используемых методов, которые описаны в таблице ниже.

Sr.No. Метод и описание
1

setIn (PyObject)

Установите объект Python для использования для стандартного потока ввода

2

setIn (java.io.Reader)

Установите java.io.Reader для использования в качестве стандартного потока ввода

3

setIn (java.io.InputStream)

Установите java.io.InputStream, чтобы использовать для стандартного потока ввода

4

накрытый стол (PyObject)

Установите объект Python для использования в стандартном потоке вывода

5

накрытый стол (java.io.Writer)

Установите java.io.Writer, чтобы использовать для стандартного потока вывода

6

накрытый стол (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 (строковое имя файла)

Выполнить файл исходного кода Python в локальном пространстве имен

15

ExecFile (java.io.InputStream)

Выполнить входной поток источника Python в локальном пространстве имен

16

компиляции (String)

Скомпилируйте исходную строку Python как выражение или модуль

17

компилировать (скрипт, имя файла)

Скомпилируйте скрипт из исходного кода Python как выражение или модуль

18

set (имя строки, значение объекта)

Установите переменную типа объекта в локальном пространстве имен

19

set (имя строки, значение PyObject)

Установите переменную типа PyObject в локальном пространстве имен

20

получить (String)

Получить значение переменной в локальном пространстве имен

21

получить (строковое имя, класс JavaClass

Получить значение переменной в локальном пространстве имен. Значение будет возвращено как экземпляр данного Java-класса.

setIn (PyObject)

Установите объект Python для использования для стандартного потока ввода

setIn (java.io.Reader)

Установите java.io.Reader для использования в качестве стандартного потока ввода

setIn (java.io.InputStream)

Установите java.io.InputStream, чтобы использовать для стандартного потока ввода

накрытый стол (PyObject)

Установите объект Python для использования в стандартном потоке вывода

накрытый стол (java.io.Writer)

Установите java.io.Writer, чтобы использовать для стандартного потока вывода

накрытый стол (Java, io.OutputStream)

Установите java.io.OutputStream, чтобы использовать для стандартного потока вывода

setErr (PyObject)

Установите объект ошибки Python для использования в стандартном потоке ошибок

setErr (java.io.Writer

Установите java.io.Writer, чтобы использовать для стандартного потока ошибок

setErr (java.io.OutputStream)

Установите java.io.OutputStream, чтобы использовать для стандартного потока ошибок

Eval (String)

Оцените строку как источник Python и верните результат

Eval (PyObject)

Оценить объект кода Python и вернуть результат

Exec (String)

Выполнить исходную строку Python в локальном пространстве имен

Exec (PyObject)

Выполнить объект кода Python в локальном пространстве имен

execfile (строковое имя файла)

Выполнить файл исходного кода Python в локальном пространстве имен

ExecFile (java.io.InputStream)

Выполнить входной поток источника Python в локальном пространстве имен

компиляции (String)

Скомпилируйте исходную строку Python как выражение или модуль

компилировать (скрипт, имя файла)

Скомпилируйте скрипт из исходного кода Python как выражение или модуль

set (имя строки, значение объекта)

Установите переменную типа объекта в локальном пространстве имен

set (имя строки, значение PyObject)

Установите переменную типа PyObject в локальном пространстве имен

получить (String)

Получить значение переменной в локальном пространстве имен

получить (строковое имя, класс JavaClass

Получить значение переменной в локальном пространстве имен. Значение будет возвращено как экземпляр данного Java-класса.

Следующий блок кода представляет собой Java-программу, имеющую встроенный Jython-скрипт «hello.py» .usingexecfile () метода объекта PythonInterpreter. Также показано, как можно установить или прочитать переменную Python с помощью методов set () и get ().

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-программу, чтобы получить следующий вывод.