4 มกราคม 2558

Published มกราคม 04, 2558 by with 0 comment

Jython ใช้ Java กับ Python : ตอนที่ 2 การใช้งานพื้นฐาน

หลังจากที่ผมได้แนะนำวิธีการติดตั้ง Jython กันไปแล้ว บทความนี้ผมจะพาผู้อ่านไปรู้จักกับความสามารถของ Jython กันครับ

ความแตกต่างระหว่าง Python กับ Jython

Python
  • พัฒนาบนภาษา C
  • รองรับแพลตฟอร์มหลากหลาย
  • คอมไพล์ได้ .pyc
  • ขยายความสามารถด้วยภาษา C
  • GIL 1
  • Python Garbage Collection
Jython
  • พัฒนาบนภาษา Java 100%
  • รันบน JVM ใด ๆ (ในปัจจุบัน 1.1 +)
  • คอมไพล์ได้ .class
  • ขยายความสามารถด้วยภาษา Java
  • multi-threaded ของจริง
  • Java garbage collection

การดึงความสามารถของ Java มาใช้งานร่วมกับ Python

เป็นความสามารถเด่นของ Jython ทำให้เราสามารถเรียกใช้ความสามารถของ Java มาใช้งานร่วมกับ Python ได้ ตัวอย่างเช่น
>>> from java.util import Date
>>> d = Date()
>>> print(d)
Sun Jan 04 12:15:32 ICT 2015
>>> from java.util import Random
>>> print(dir(Random))
['__class__', '__copy__', '__deepcopy__', '__delattr__', '__doc__', '__eq__', '_
_format__', '__getattribute__', '__hash__', '__init__', '__ne__', '__new__', '__
reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', '__subclasshoo
k__', '__unicode__', 'class', 'doubles', 'equals', 'getClass', 'hashCode', 'ints
', 'longs', 'nextBoolean', 'nextBytes', 'nextDouble', 'nextFloat', 'nextGaussian
', 'nextInt', 'nextLong', 'notify', 'notifyAll', 'seed', 'setSeed', 'toString',
'wait']
และการดึงความสามารถด้าน GUI ของ Java มาใช้งานร่วมกับ Jython
from javax.swing import *

def hello(event):
    print "Hello. I'm an event."

def test():
    frame = JFrame("Hello Jython")
    button = JButton("Hello", actionPerformed = hello)
    frame.add(button)
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
    frame.setSize(300, 300)
    frame.show()

test()
ผลลัพธ์

เราสามารถรันโค้ดไฟล์ py กับ Jython ได้ด้วยคำสั่ง
jython โค้ดที่ต้องการรัน.py
สำหรับบน Windows ใช้คำสั่ง
C:\jython2.7b3\jython โค้ดที่ต้องการรัน.py
เพิ่มเติมจากผู้เขียน ในขณะนี้ Jython ยังไม่รองรับ Python 3 นะครับ
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

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

แสดงความคิดเห็น

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