Java Virtual Machine Bukan Hanya untuk Java

Ridwan Fajar 31 Agustus 2014

Java Virtual Machine Bukan Hanya untuk Java

Menurut Webopedia, Java Virtual Machine (JVM), sebuah mesin abstrak yang dapat mengeksekusi Java Bytcode menjadi bahasa mesin kemudian menjalankannya. Serta tida tergantung dengan platform apapun. Tidak seperti bahasa pemrograman lain yang kodenya langsung dikompilasi sesuai dengan mesin target dan sistem operasinya. JVM adalah mesin dalam mesin yang meniru mesin inangnya dan dapat menjalankan kode Java yang Anda tulis dimanapun. Setiap mesin yang menginstall JVM, dapat menjalankan kode program yang telah Anda buat. JVM dibangun oleh James Gosling.

class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); // Display the string.
    }
}

JVM ini dapat Anda peroleh dengan mengunduh JDK dari Oracle dengan versi terbaru atau yang Anda inginkan. Di dalamnya terdapat JVM, JRE, dan perangkat lainnya yang digunakan untuk membangun aplikasi diatas JVM. Umumnya orang mengenal hanya Java yang dapat digunakan untuk membuat aplikasi di JVM. Padahal ada bahasa pemrograman lainnya yang memanfaatkan JVM. Apa sajakah bahasa pemrograman tersebut. Mari kita simak beberapa bahasa pemrograman yang berjalan diatas JVM lainnya.

Clojure

Dirancang pertama kali oleh Rich Hickey, Clojure merupakan bahasa pemrograman mirip Scheme dan Lisp yang berjalan diatas JVM. Tentu saja dengan sintaksnya yang agak nyentrik ini Clojure memiliki peminat yang cukup banyak di kalangan pengguna bahasa pemrograman fungsional. Mulanya Rich Hickey menginginkan bahasa pemrograman Lisp yang modern untuk functional programming. Rich juga menginginkan ada sebuah fasilitas konkuren di dalam bahasa tersebut. Maka saat itu Rich mengembangkan dotLisp, sebuah proyek Lisp yang diimplementasikan diatas .NET Framework. Tapi akhirnya Rich mengembangkan Clojure yang diimplementasikan diatas JVM. Salah satu web framework terkenal yang dirancang menggunakan Clojure adalah Noir. Berikut adalah contoh source code Clojure yang dikutip dari Wikipedia:

(let [i (atom 0)]
  (defn generate-unique-id
    "Returns a distinct numeric ID for each call."
    []
    (swap! i inc)))

Groovy

Groovy adalah sebuah bahasa pemrograman dinamis yang mirip dengan Python, Perl, Ruby, dan Smalltalk yang berjalan diatas Java. Groovy dapat berinterkasi dengan library Java lainnya, serta dapat menciptakan paduan antara Java dan Groovy. Groovy memiliki sebuah web framework yang terkenal yaitu Grails. Groovy ini dikembangkan oleh James Strachan. Groovy ini dikelola oleh sebuah perusahaan bernama Pivotal. Jika Anda menggunakan Netbeans pertama kali, Anda dapat melihat ada pilihan membuat aplikasi dengan Groovy.Berikut ini adalah contoh source code Groovy yang dikutip dari Wikipedia:

class AGroovyBean {
  String color
}

def myGroovyBean = new AGroovyBean()

myGroovyBean.setColor('baby blue')
assert myGroovyBean.getColor() == 'baby blue'

myGroovyBean.color = 'pewter'
assert myGroovyBean.color == 'pewter'

Jython

Jika Python yang aslinya diimplementasikan dalam bahasa C, maka Jython tentu saja diimplementasikan diatas JVM. Jython dikompilasi menjadi bytecode baru dapat dijalankan diatas JVM. Dengan Jython Anda dapat mengakses library Java dan JVM seperti Swing, AWT, SWT, dan lainnya. Beberapa library Python standard tidak dapat diakses di Jython. Selain membangun aplikasi desktop, Anda dapat membangun aplikasi web servlet dengan Jython.s Jython ini dikembangkan pertama kali oleh Jim Hugunin, Barry Warsaw, Samuele Pedroni, Brian Zimmer, dan Frank Wierzbicki. Berikut ini adalah contoh source code Jython yang dikutip dari Jython Cookbook:

from javax.swing import JButton, JFrame

frame = JFrame('Hello, Jython!',
            defaultCloseOperation = JFrame.EXIT_ON_CLOSE,
            size = (300, 300)
        )

def change_text(event):
    print 'Clicked!'

button = JButton('Click Me!', actionPerformed=change_text)
frame.add(button)
frame.visible = True

JRuby

JRuby dikembangkan oleh Charles Oliver Nutter dan Thomas Enebo. Awalnya JRuby dikembangkan di Sun Microsystem tapi kmudian berpindah ke Engine Yard pada tahun 2009. Pada Mei 2012, duo JRuby tersebut pindah tempat ke Red Hat dan fokus mengembangkan JRuby disana. Dua kontributor lainnya adalah Ola Bini dan Nick Sieger. Salah satu keunggulan JRuby adalah adanya fitur multiple virtual machine collaboration. Berikut ini adalah contoh source code JRuby yang dikutip dari Wikipedia:

require 'java'

frame = javax.swing.JFrame.new
frame.getContentPane.add javax.swing.JLabel.new('Hello, World!')
frame.setDefaultCloseOperation javax.swing.JFrame::EXIT_ON_CLOSE
frame.pack
frame.set_visible true

Scala

Scala merupakan bahasa pemrograman yang diklaim lebih sederhana dibandingkan Java. Salah satu web framework terkenal dari Scala adalah Lift dan Scalatra. Scala diciptakan oleh Martin Odersky karena Martin menginginkan bahasa pemrograman fungsional yang powerful yang dapat berjalan diatas JVM. Selain itu Martin terlibat juga dalam pengembangan JVM bersama James Gosling dan tim pengembang JVM lainnya. Berikut ini adalah contoh source code Scala yang dikutip dari Wikipedia:

// Scala
class Point(
    val x: Double, val y: Double,
    addToGrid: Boolean = false
) {
  import Point._

  if (addToGrid)
    grid.add(this)

  def this() = this(0.0, 0.0)

  def distanceToPoint(other: Point) =
    distanceBetweenPoints(x, y, other.x, other.y)
}

object Point {
  private val grid = new Grid()

  def distanceBetweenPoints(x1: Double, y1: Double,
      x2: Double, y2: Double) = {
    math.hypot(x1 - x2, y1 - y2)
  }
}

Fantom

Sebuah bahasa pemrograman yang unik karena dapat berjalan diatas JVM, .NET, dan Javascript. Bahasa pemrograman Fantom ini dkembangkan oleh Brian dan Andy Frank. Selain itu Anda dapat mengerjakan aplikasi lebih mudah karena Fantom dapat berjalan diatas platform apapun. Berikut ini adalah contoh source code Fantom yang dikutip dari Wikipedia:

// Hello from Fantom!
class HelloWorld
{
  static Void main()
  {
    echo("Hello, World!")
  }
}

Rhino

Rhino adalah engine untuk Javascript yang dikembangkan oleh Mozilla Foundation. Tentunya merupakan open source software. Rhino dikembangkan sejak 1997 dan seluruhnya ditulis menggunakan bahasa Java. Engine lainnya yang dimiliki oleh Mozilla yaitu SpiderMonkey yang ditulis menggunakan C++. Rhino dapat menghasilkan java bytecode dari kode Javascript yang ditulis untuk Rhino. Karena Javascript Rhino dapat mengakses library Java, maka sangat mudah sekali untuk mengintegrasikan Javascript dan Java dalam satu aplikasi dengan lebih mudah. Berikut ini adalah contoh source code Javascript di Rhino yang dikutip dari Oracle Documentation:

// create Java String array of 5 elements
var a = java.lang.reflect.Array.newInstance(java.lang.String, 5);

// Accessing elements and length access is by usual Java syntax
a[0] = "scripting is great!";
print(a.length);

Jacl

Jacl adalah TCL interpreter yang ditulis seluruhnya menggunakan Java. Jacl juga dapat berkomunikasi antara Java interpreter dengan Tcl interpreter. Jacl ini hadir agar dapat menyambungkan Tcl ke aplikasi Java yang sudah ada tanpa harus melakukan usaha yang lebih banyak dalam merombak kode Tcl. Berikut ini adalah contoh source code Jacl yang dikutip dari http://cx20.main.jp/blog:

package require java

java::import org.eclipse.swt.internal.win32.OS
java::import org.eclipse.swt.internal.win32.TCHAR

set lpText [java::new {TCHAR int java.lang.String boolean} 0 "Hello, Win32 API World!" true]
set lpCaption [java::new {TCHAR int java.lang.String boolean} 0 "Hello, World" true]
java::call OS MessageBox 0 $lpText $lpCaption [java::field OS MB_OK]

Bahasa pemrograman diatas merupakan sekian dari banyak bahasa pemrograman lainnya yang diimplementasikan diatas JVM. Menurut artikel List of JVM Language di Wikipedia, Ada sekitar 60-an bahasa pemrograman yang dikembangkan diatas JVM termasuk bahasa pemrograman yang sudah dipaparkan diatas, baik itu merupakan bahasa pemrograman baru ataupun bahasa pemrograman yang sudah ada. Dengan berbagai karakteristik dan target yang spesifik, JVM menjadi alas bagi pengembang bahasa pemrograman lainnya untuk menciptakan bahasa pemrograman mereka dengan mengandalkan JVM sebagai landasannya. Jadi JVM bukan hanya untuk Java

(rfs/wikipedia/webopedia)