GraalVM นั้นเป็นงานวิจัยจาก Oracle Lab
และถูกใช้งานบน production ของ Twitter
GraalVM นั้นมีเป้าหมายเพื่อให้เราสามารถ share runtime ให้กับภาษาต่าง ๆ
แน่นอนว่า ไม่ใช่เพียงแค่ JVM เท่านั้น
ที่สามารถ run พวก Java, Kotlin, Scala, Groovy ได้
แต่ยังสนับสนุนภาษาอื่น ๆ เช่น JavaScript, Ruby, Python และ R
นี่มัน Polyglot ชัด ๆ
โดยที่ performance ของการทำงานยังคงสูงอยู่
มาลองใช้งานกันดู
ทำการ Download มาใช้งานกันหน่อย
ตอนนี้ GraalVM version 19.0 ประกอบไปด้วย
- JDK 1.8.0_212
- Node 10.15.2
- JavaScript engine ซึ่งสนับสนุนพวก ECMAScript 2019
- Runtime สำหรับ run LLVM 6.0.0 bitcode
จะมีทั้งของฟรีและเสียเงิน
- Community Edition (CE) ตัวนี้ฟรี
- Enterprise Edition (EE) ตัวนี้เสียเงิน เพิ่มเรื่อง performance, security และการ scale
ใน blog นี้จะใช้ตัวฟรี
เมื่อติดตั้งเรียบร้อยแล้ว GraalVM จะมี command ให้ใช้ดังนี้
- gu (GraalVM Updater) สำหรับ update และติดตั้ง runtime ภาษาอื่น ๆ
- node คือ JavaScript Engine ของ GraalVM เอง
- js คือ JavaScript console
- lli สำหรับการ run native language บน GraalVM
ยกตัวอย่างเช่น การติดตั้งภาษาต่าง ๆ ด้วยคำสั่ง
[gist id="61cc5cea40942d7ace8aa4b033028761" file="ruby.txt"]เห็นใน GitHub Issue มีเกี่ยวกับภาษา Go ด้วยนะ
แต่ละภาษาจะใช้ Runtime ดังต่อไปนี้
จากภาพจะเห็นได้ว่า
ภาษาอื่น ๆ ที่ไม่ใช่ JVM language เช่น R, JavaScript, Ruby และ C/C++ นั้น
จะทำงานบน Truffle framework
ดังนั้นสามารถใช้เครื่องมือในการ monitor, debug และ profiling เดียวกัน
น่าจะช่วยทำให้การพัฒนาระบบงานง่ายขึ้น
ยกตัวอย่าง การ debug ผ่าน Chrome DevTool protocol
หรือสามารถใช้งานผ่าน Docker ก็ง่ายกว่า
โดย Docker Image ใช้ OS คือ Oracle Linux
ขนาดของ Docker Image ก็ใหญ่น่าดูคือ 1.71 GB !!
จากนั้นก็ลองใช้งานกันดูเลย
ว่าแต่จะเอาไปทำอะไรดีละ ?
VDO สำหรับการ tuning performance ของ Scala จากทาง Twitter
VDO :: นำ Clojure มา run ก็ได้นะ