30 ธันวาคม 2560

Published ธันวาคม 30, 2560 by with 1 comment

ใช้งานโค้ด Python ใน Java ง่าย ๆ

สวัสดีผู้อ่านทุกท่านครับ หากผู้อ่านเขียนภาษาจาวา (Java) ต้องการใช้งานไลบารีเฉพาะด้าน แต่กลับพบว่าไลบารีเหล่านั้นมีเฉพาะในภาษาไพทอน (Python) เช่น ไลบารี PyThaiNLP และอื่น ๆ เป็นต้น

บทความนี้จะพาผู้อ่านไปใช้งานโค้ด Python ใน Java ง่าย ๆ ด้วย Jep กันครับ

Jep เป็นโมดูลสำหรับเชื่อมต่อการทำงานระหว่างภาษาไพทอนกับภาษาจาวา ใช้ zlib License
  • รองรับทั้งไพทอน 2.7 และไพทอน 3
  • JDK >= 1.7
สามารถติดตั้งได้โดยใช้คำสั่ง pip (เตรียมคอมไพเลอร์กับภาษาไพทอนให้พร้อม)
pip install jep

เรียกใช้งานโค้ด Python ใน Java

ตั้งค่าก่อนใช้งาน

สำหรับ Windows
ให้เพิ่ม path ที่ตั้งของ jep ดังนี้
ที่ตั้งไพทอน\Lib\site-packages\jep
เข้าไปใน path ใน environmental variable
สำหรับ Linux
ให้เพิ่ม path ที่ตั้ง jep เข้าไป
ที่ตั้งไพทอน/site-packages/jep
เข้าไปใน LD_LIBRARY_PATH  ใน environmental variable
สำหรับ OS X
ให้เพิ่ม path ที่ตั้ง jep เข้าไป
ที่ตั้งไพทอน/site-packages/jep
เข้าไปใน DY_LD_LIBRARY_PATH  ใน environmental variable

การใช้งานโค้ดภาษาไพทอนในภาษาจาวา

ใน NetBeans ให้คลิกที่ Libraries > Add JAR/Folder...

เข้าไปที่ ที่ตั้งไพทอน/site-packages/jep  ทำการเลือก jep.jar เข้ามา

จากนั้น ใส่
import jep.Jep;
import jep.JepException;
เข้าไปในส่วนหัวโค้ดข้างบนนอก class
แล้วลองโค้ดด้วยการใส่โค้ดตามตัวอย่างข้างล่างลงไปใน main แล้วลองรัน
ผลลัพธ์
Hello World
Hello World
ello Worl

คำสั่ง jep
  • jep.eval(โค้ดไพทอน) ใช้รันโค้ดไพทอน
  • jep.getValue(ค่าหรือตัวแปรไพทอน) ใช้ดึงค่าจากไพทอนเข้ามายังภาษาจาวา
หากต้องการดึงค่ามาใช้งาน สามารถทำได้ตามตัวอย่างนี้
ถ้าต้องการตัดคำภาษาไทยโดยใช้ PyThaiNLP สามารถทำได้ดังนี้

ผลลัพธ์
ทดสอบ|การ|ตัด|คำ
หากคุณไม่ได้ใช้ NetBeans คุณสามารถใช้งานได้เช่นกัน แต่ในเวลาทำการแปลงให้เป็น class ให้ทำการเรียก jep.jar มาด้วยนะครับ
สมมุติ คุณสร้างไฟล์ชื่อ t1.java และใส่โค้ดไว้ ให้ใช้คำสั่ง
javac -cp ที่ตั้งไพทอน\site-packages\jep\jep-เวชั่นjep.jar  t1.java 
แล้วจะได้ t1.class มา รันได้ด้วยคำสั่ง
java -cp .;ที่ตั้งไพทอน\site-packages\jep\jep-เวชั่นjep.jar  t1

อ่านเอกสารเพิ่มเติมได้ที่ https://github.com/ninia/jep/wiki
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

เขียนโดย นาย วรรณพงษ์ ภัททิยไพบูลย์
นักศึกษาชั้นปีที่ 1
สาขาวิทยาการคอมพิวเตอร์และสารสนเทศ
คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์
มหาวิทยาลัยขอนแก่น วิทยาเขตหนองคาย

ข่าวฝากประชาสัมพันธ์
มาเรียนสาขาวิทยาการคอมพิวเตอร์และสารสนเทศ คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น วิทยาเขตหนองคาย กันเยอะ ๆ นะครับ

1 ความคิดเห็น:

  1. โค้ดภาษาไพทอนรันข้ามแพลตฟอร์มได้ทั้งหมดจริงหรือไม่ ?

    คำตอบคือ ไม่จริง โค้ดหลาย ๆ ส่วนของไพทอนถึงแม้จะรันข้ามแพลตฟอร์มได้ แต่มันก็ไม่ได้ช่วยให้ภาษาไพทอนเป็นภาษาไม่ยึดติดกับแพลตฟอร์ม เพราะโค้ดหลาย ๆ อย่างเมื่อข้ามแพลตฟอร์มต้องมีการปรับโค้ด เช่น โค้ดที่ใช้ไลบารี sys (path ไม่เหมือนกัน) , winsound เป็นต้น ต้องมีการปรับโค้ดเมื่อนำไปรันต่างแพลตฟอร์มหรือพิ่งพาโมดูลภายนอก ไม่ใช่ไลบารีที่มากับภาษาไพทอน ถ้าเทียบกับภาษาจาวา ภาษาจาวาจึงดีกว่าถ้าพูดเฉพาะในด้านการทำงานข้ามแพลตฟอร์มและในด้านประสิทธิภาพการทำงาน

    ตอบลบ

แสดงความคิดเห็นได้ครับ :)