Jython - Ứng dụng Java

Tải xuống jython-standalone-2.7.0.jar - Để nhúng Jython vào các ứng dụng Java từ trang tải xuống chính thức của chúng: http://www.jython.org/downloads.html và bao gồm tệp jar này trong biến môi trường Java CLASSPATH.

Thư viện này chứa PythonInterpreterlớp học. Sử dụng đối tượng của lớp này, mọi tập lệnh Python có thể được thực thi bằng cách sử dụngexecfile()phương pháp. PythonInterpreter cho phép bạn sử dụngPyObjectstrực tiếp. Tất cả các đối tượng được biết đến với hệ thống thời gian chạy Jython được biểu diễn bằng một thể hiện của lớp PyObject hoặc một trong các lớp con của nó.

Lớp PythonInterpreter có một số phương thức được sử dụng thường xuyên, được giải thích trong bảng dưới đây.

Sr.No. Phương pháp & Mô tả
1

setIn(PyObject)

Đặt đối tượng Python để sử dụng cho luồng đầu vào chuẩn

2

setIn(java.io.Reader)

Đặt java.io.Reader để sử dụng cho luồng đầu vào chuẩn

3

setIn(java.io.InputStream)

Đặt java.io.InputStream để sử dụng cho luồng đầu vào chuẩn

4

setOut(PyObject)

Đặt đối tượng Python để sử dụng cho luồng đầu ra tiêu chuẩn

5

setOut(java.io.Writer)

Đặt java.io.Writer để sử dụng cho luồng đầu ra tiêu chuẩn

6

setOut(java,io.OutputStream)

Đặt java.io.OutputStream để sử dụng cho luồng đầu ra tiêu chuẩn

7

setErr(PyObject)

Đặt một đối tượng lỗi Python để sử dụng cho luồng lỗi chuẩn

số 8

setErr(java.io.Writer

Đặt java.io.Writer để sử dụng cho luồng lỗi chuẩn

9

setErr(java.io.OutputStream)

Đặt java.io.OutputStream để sử dụng cho luồng lỗi chuẩn

10

eval(String)

Đánh giá một chuỗi dưới dạng nguồn Python và trả về kết quả

11

eval(PyObject)

Đánh giá một đối tượng mã Python và trả về kết quả

12

exec(String)

Thực thi một chuỗi nguồn Python trong không gian tên cục bộ

13

exec(PyObject)

Thực thi một đối tượng mã Python trong không gian tên cục bộ

14

execfile(String filename)

Thực thi một tệp nguồn Python trong không gian tên cục bộ

15

execfile(java.io.InputStream)

Thực thi luồng đầu vào của nguồn Python trong không gian tên cục bộ

16

compile(String)

Biên dịch một chuỗi nguồn Python dưới dạng một biểu thức hoặc mô-đun

17

compile(script, filename)

Biên dịch một tập lệnh của nguồn Python dưới dạng một biểu thức hoặc mô-đun

18

set(String name, Object value)

Đặt một biến kiểu Đối tượng trong không gian tên cục bộ

19

set(String name, PyObject value)

Đặt một biến kiểu PyObject trong không gian tên cục bộ

20

get(String)

Nhận giá trị của một biến trong không gian tên cục bộ

21

get(String name, Classjavaclass

Nhận giá trị của một biến trong không gian tên cục bộ. Giá trị sẽ được trả về dưới dạng một thể hiện của lớp Java đã cho.

Khối mã sau là một chương trình Java có tập lệnh Jython được nhúng “hello.py”.usingexecfile()phương thức của đối tượng PythonInterpreter. Nó cũng cho thấy cách một biến Python có thể được đặt hoặc đọc bằng cách sử dụng các phương thức set () và 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 ");
   }
}

Biên dịch và chạy chương trình Java trên để có kết quả sau.

Hello, world from Java
hello world from Python
42
x: 4
Goodbye