ย้ายบล็อกไปที่ bact.cc แล้วนะครับ

พ.ร.บ.คอมพิวเตอร์
หยุด ร่างพ.ร.บ.คอมพิวเตอร์
พื้นที่เก็บข้อมูลออนไลน์ ฟรี 2GB จาก Dropbox (sync กับ Windows, Linux, Mac, iPhone, Android ฯลฯ ได้)

2006-04-21

JavaScript in Java 6

อย่างที่พอจะรู้กันบ้างแล้ว ว่า Java 6 จะใช้รองรับภาษาสคริปต์อย่างเป็นทางการ (ในตัว API เลย โดยจะอยู่ในแพคเกจ javax.script แล้วก็มีเครื่องมือสนับสนุนอื่น ๆ อีก) วันนี้เผอิญไปเห็นสไลด์เกี่ยวกะเรื่องนี้ เลยเอามาฝาก: Scripting for Java Platform (JavaOne 2005)

นอกจากการเรียกใช้ภาษาสคริปต์ภาษา API ได้แล้ว ในส่วนของเครื่องมือ (ซึ่งจะมาพร้อมกับ Java 6 SDK แต่ไม่ได้เป็นส่วนหนึ่งของสเป็ค Java 6 SE) จะมีโปรแกรมเพิ่มขึ้นมาตัวนึงสำหรับเรื่องนี้โดยเฉพาะ คือ jrunscript (กดเพื่อดูวิธีใช้) เอาไว้รันสคริปต์จากคอมมานด์ไลน์ (ค่าปริยายเป็น JavaScript แต่จะระบุภาษาอื่นก็ได้)

ตัวอย่าง:

ผ่านคำสั่งเป็นพารามิเตอร์ (เหมือนพวก Perl)

jrunscript -e "print('hello world')"

ระบุภาษาด้วยออปชั่น -l / เรียกชุดคำสั่งจากไฟล์

jrunscript -l js -f test.js

ตัว ScriptEngine ที่จะมากับ Java 6 ก็คือเอนจิ้นของภาษา JavaScript ซึ่งพัฒนามาจากตัว Mozilla Rhino

ตัว NetBeans IDE รุ่นหน้า (หลัง 5.5) ก็จะมี JavaScript editor ด้วย แต่ถ้ารอไม่ไหว มีคนทำออกมาแล้ว ใช้กับ NetBeans 5 ได้เลย

ช่วงนี้ไปไหนก็มีแต่ JavaScript ... อะไร ๆ ที่ Netscape ทำมันมักจะเป็นอย่างนี้รึเปล่า ? ต้องดังวูบนึงก่อน แล้วก็ฟุบ แล้วค่อยฟื้นมาใหม่ :P

4 comments:

bpitk said...

รู้สึกว่า Sun จะกั๊กไว้บางอย่างครับ
Mozilla Rhino คอมไพล์ .js เป็น .class ได้เลย (มีแค่ JRE+Rhino ก็สร้างไฟล์ .class ได้)
แต่ Jrunscript (in Java6)คอมไพล์เป็น .class ไม่ได้

ล่าสุดเขาลองแล้วใช้ได้อีก 13 Script Lang.เลย
http://scripting.dev.java.net/

bact' said...

ในสไลด์ก็ว่าไว้อย่างนั้นเหมือนกันครับ

ฟีเจอร์ใน Rhino ที่ไม่ได้รวมเข้ามา ก็มี E4X, compiler/optimizer, shell, debugger
เข้าใจว่า คงเป็นเพราะมันซ้ำซ้อนกับสิ่งที่ Java API/SDK มีให้อยู่แล้ว/เอามาผสมกันไม่ลงตัว
ตัว javax.script นี่คงเน้นที่ integration/ใช้ร่วมกับตัวโปรแกรมภาษา Java มากกว่าจะให้ภาษาสคริปต์มาแทนที่ภาษา Java น่ะครับ

Groovy, Python, Ruby, XPath, XSLT พวกนี้น่าสน :)

Isriya said...

ถ้าจำไม่ผิด Rhino นี่เขียนด้วย java ไว้สำหรับ Grendel (Java Thunderbird) ที่สุดท้ายโครงการล่มไป แต่ตัว Rhino ก็เสร็จทัน ไม่รู้นอกจากนี้มีใครเอาไปใช้เยอะแค่ไหน

แต่ engine javascript หลักคือ SpiderMonkey ที่เขียนด้วย C และยังใช้ในโปรแกรมของ Mozilla ทุกตัว

bpitk said...

ผมเคย D/L jython_21.class (ตัวinstall)
มาลงใน Fedora Core 5 (64bit)ใช้ java6 เปิดแล้วมันลงไม่ได้ครับ
( บน WinXP+Java6ก็ลงไม่ได้ javaที่มากับ Linux ก็ลงไม่ได้ )
ไม่รู้เป็นอะไรมันฟ้องว่า
Exception in thread "main" java.lang.ClassFormatError:
Extra bytes at the end of class file jython_21
ต้อง D/L Java5 มาลงก่อนถึงใช้เปิด jython_21.class ได้
แต่พอ install ได้แล้วเรียกใช้ด้วย Java6ได้ดีทั้ง Linux ,WinXP

ถ้าสนใจลองใช้ Python บน Java6 แนะนำให้ลองอันนี้ครับ
http://artenum.libresource.net/projects/jyconsole
GUI Jython console + Jython2.1 มาเรียบร้อย

GUI Jython console อันอื่นที่น่าสนใจก็เช่น
http://don.freeshell.org/jython/
http://www.nano.geo.uni-muenchen.de/~fxj/jcrust.html
http://sourceforge.net/projects/pycrust/