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 มีวิธีการบางอย่างที่ใช้เป็นประจำซึ่งอธิบายไว้ในตารางด้านล่าง
ซีเนียร์ | วิธีการและคำอธิบาย |
---|---|
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) ตั้งค่าตัวแปรประเภท Object ในเนมสเปซโลคัล |
19 | set(String name, PyObject value) ตั้งค่าตัวแปรประเภท PyObject ในเนมสเปซโลคัล |
20 | get(String) รับค่าของตัวแปรในเนมสเปซโลคัล |
21 | get(String name, Class
รับค่าของตัวแปรในเนมสเปซโลคัล ค่าจะถูกส่งกลับเป็นอินสแตนซ์ของคลาส 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 ด้านบนเพื่อรับเอาต์พุตต่อไปนี้
Hello, world from Java
hello world from Python
42
x: 4
Goodbye