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

ยกตัวอย่างเช่น การติดตั้งภาษาต่าง ๆ ด้วยคำสั่ง

เห็นใน 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 ก็ได้นะ