อย่างที่พอจะรู้กันบ้างแล้ว ว่า 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 ทำมันมักจะเป็นอย่างนี้รึเปล่า ? ต้องดังวูบนึงก่อน แล้วก็ฟุบ แล้วค่อยฟื้นมาใหม่ 😛
4 responses to “JavaScript in Java 6”
รู้สึกว่า Sun จะกั๊กไว้บางอย่างครับMozilla Rhino คอมไพล์ .js เป็น .class ได้เลย (มีแค่ JRE+Rhino ก็สร้างไฟล์ .class ได้)แต่ Jrunscript (in Java6)คอมไพล์เป็น .class ไม่ได้้ล่าสุดเขาลองแล้วใช้ได้อีก 13 Script Lang.เลยhttp://scripting.dev.java.net/
ในสไลด์ก็ว่าไว้อย่างนั้นเหมือนกันครับฟีเจอร์ใน Rhino ที่ไม่ได้รวมเข้ามา ก็มี E4X, compiler/optimizer, shell, debuggerเข้าใจว่า คงเป็นเพราะมันซ้ำซ้อนกับสิ่งที่ Java API/SDK มีให้อยู่แล้ว/เอามาผสมกันไม่ลงตัวตัว javax.script นี่คงเน้นที่ integration/ใช้ร่วมกับตัวโปรแกรมภาษา Java มากกว่าจะให้ภาษาสคริปต์มาแทนที่ภาษา Java น่ะครับGroovy, Python, Ruby, XPath, XSLT พวกนี้น่าสน 🙂
ถ้าจำไม่ผิด Rhino นี่เขียนด้วย java ไว้สำหรับ Grendel (Java Thunderbird) ที่สุดท้ายโครงการล่มไป แต่ตัว Rhino ก็เสร็จทัน ไม่รู้นอกจากนี้มีใครเอาไปใช้เยอะแค่ไหนแต่ engine javascript หลักคือ SpiderMonkey ที่เขียนด้วย C และยังใช้ในโปรแกรมของ Mozilla ทุกตัว
ผมเคย 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/jyconsoleGUI Jython console + Jython2.1 มาเรียบร้อยGUI Jython console อันอื่นที่น่าสนใจก็เช่นhttp://don.freeshell.org/jython/http://www.nano.geo.uni-muenchen.de/~fxj/jcrust.htmlhttp://sourceforge.net/projects/pycrust/