2006/Jul/15

ทำความรู้จัก jython (Java ฝังตัวใน Python) กันเถอะ !![Message #1]

หลายคนพยายามเปรียบเทียบว่าภาษาจาวาและไพธอนใครเจ๋งกว่า !!
อันนี้ตอบได้ยาก ครับ..

แต่วันนี้ผมจะพาเพื่อน ๆ ที่รักฝังภาษาจาวาลงในตัวไพธอน เราใช้ Jython ซึ่งย่อมาจาก Java for Python รายละเอียดคนสร้างผมไม่ขอกล่าวถึงนะครับ ให้ศึกษากันเอง...


ขั้นตอนการติดตั้ง
1.โหลด jython.class
2. ติดตั้ง java
3. ติดตั้ง python
4. ติดตั้งด้วยคำสั่ง java jython (เป็นการเรียกใช้ไฟล์ jython.class)
5. เมื่อติดตั้งครบเสร็จเรียบร้อย เรียกคำสั่ง jython

จะปรากฎหน้าต่างรับข้อความดังนี้ :
>>

ให้พิมพ์ import java
มีไลบรารี่ต่อไปนี้
['__name__', 'applet', 'awt', 'beans', 'io', 'lang', 'math', 'net', 'rmi', 'security', 'sql', 'text', 'util']

ผมจะทดลองเรียกใช้คำสั่ง System.out.print("HELLO"); ผ่านไพธอน..
เพื่อน ๆ ที่เคยเขียนจาวา จะรู้ว่าคำสั่งดังกล่าวอยู่ในคลาส lang ซึ่งลองพิมพ์คำสั่ง
dir(java.lang) จะพบว่ามีฟังก์ชั่นอีกเยอะมาก !! ดังนี้
['AbstractMethodError', 'ArithmeticException', 'ArrayIndexOutOfBoundsException', 'ArrayStoreException', 'Boolean', 'Byte', 'Character', 'Class', 'ClassCastException', 'ClassCircularityError', 'ClassFormatError', 'ClassLoader', 'ClassNotFoun
dException', 'CloneNotSupportedException', 'Cloneable', 'Comparable', 'Compiler', 'Double', 'Error', 'Exception', 'ExceptionInInitializerError', 'Float', 'IllegalAccessError', 'IllegalAccessException', 'IllegalArgumentException', 'IllegalMo
nitorStateException', 'IllegalStateException', 'IllegalThreadStateException', 'IncompatibleClassChangeError', 'IndexOutOfBoundsException', 'InheritableThreadLocal', 'InstantiationError', 'InstantiationException', 'Integer', 'InternalError',
'InterruptedException', 'LinkageError', 'Long', 'Math', 'NegativeArraySizeException', 'NoClassDefFoundError', 'NoSuchFieldError', 'NoSuchFieldException', 'NoSuchMethodError', 'NoSuchMethodException', 'NullPointerException', 'Number', 'Numb
erFormatException', 'Object', 'OutOfMemoryError', 'Package', 'Process', 'Runnable', 'Runtime', 'RuntimeException', 'RuntimePermission', 'SecurityException', 'SecurityManager', 'Short', 'StackOverflowError', 'StrictMath', 'String', 'StringBu
ffer', 'StringIndexOutOfBoundsException', 'System', 'Thread', 'ThreadDeath', 'ThreadGroup', 'ThreadLocal', 'Throwable', 'UnknownError', 'UnsatisfiedLinkError','UnsupportedClassVersionError', 'UnsupportedOperationException', 'VerifyError',
'VirtualMachineError', 'Void', '__name__', 'ref', 'reflect']


ในลีสต์ด้านบนมี "System" หรือเปล่า ? อาจจะถามได้ด้วยคำสั่ง
>>> 'System' in dir(java.lang)
>>> 1
ตอบ 1 แสดงว่ามีคำสั่ง System อยู่ใน java.lang

ขอให้พิจารณาตัวอย่างการใช้งานต่อไปนี้
>>> import java
>>> java.lang.System.out.print("HELLO WORLD")
ผลลัพธ์แสดงคำว่า
HELLO WORLD ให้ปรากฎบนจอภาพคอมพิวเตอร์

เอาล่ะ ถ้าเพื่อน ๆ เคยใช้ java มาแล้วก็จะทราบว่าเราต้องเีีขียนโค๊ด.. คอมไพล์ และสั่งเอ็กซีคิวส์ ซึ่งโค๊ดจาวาต้องอยู่ในฟอร์มที่ถูกต้อง เช่น
class test{
public static void main(String argssss[]){
System.out.print("HELLO WORLD");
}
}

javac test.java
java test
ผลลัพธ์
HELO WORLD

จะเห็นว่ามีขั้นตอนเยอะเลยในการเขียนโค๊ดด้วยจาวา แต่ไพธอนอนุญาตให้พวกเราเรียกใช้ฟังก์ชั่นเหล่านั้น ได้ตรง ๆ !!

นอกจากนั้นแล้วไลบารี่ต่าง ๆ ของจาวา ก็เรียกใช้ได้หมด ถ้าเพื่อน ๆเก่งจาวาก็สามารถฝังมันลงในไพธอนได้เลย.. แม้แต่ไลบรารี่ด้านกราฟิกอินเตอร์เฟส AWT ก็สามารถเรียกใช้ได้เช่นกัน !!

เอาล่ะครับ.. สำหรับวันนี้เสนอเกร็ดความรู้พอเป็นสังเขปเท่านี้ หวังว่าเพื่อน ๆ จะมีความสุขกับการเรียนรู้สิ่งใหม่ ๆ สไตล์ไพธอนกับผมครับ.. พบกันโอกาสหน้า สวัสดีครับ !!

_________________________________
nprotech !!


edit @ 2006/07/15 09:51:54
ชื่อ: 
เว็บไซต์: 
คอมเมนต์:


smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry ???????????????   ??????????????????
smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry ???????????????

Excellent & remarkable post!
I have been visiting various blogs for my Dissertation writing research. I have found your blog to be quite useful. Keep updating your blog with valuable information....... Regards
#1  by  Dissertation writing (182.178.115.79) At 2010-10-05 16:37, 

<< Home