Pengembangan aplikasi berbasis Java Virtual Machine (JVM) tidak perlu lagi menggunakan bahasa pemrograman Java. Berbagai bahasa pemrograman baru hadir untuk memperbaiki kelemahan yang ada pada Java.
Bahasa pemrograman manakah yang lebih efisien untuk membuat program berbasis JVM?
Mungkin sebagian besar orang menganggap program berbasis Java Virtual Machine hanya dapat dibuat dengan bahasa pemrograman Java. Namun, bahasa pemrograman Java sendiri masih dianggap belum efisien oleh banyak programmer. Kesempatan ini diambil para programmer dan developer untuk membuat bahasa pemrograman baru yang lebih efisien dari Java, tetapi program yang dihasilkan tetap berjalan pada JVM. Berbagai bahasa pemrograman baru telah diciptakan untuk memperbaiki kelemahan yang ada di Java, bahkan bisa menggantikan Java itu sendiri. Bahasa pemrograman seperti Scala dibuat untuk memudahkan programmer dalam membuat program berbasis JVM. Bahasa pemrograman tersebut menawarkan penulisan kode yang lebih singkat dan di saat yang bersamaan memiliki fitur-fitur yang lebih kompleks. Masih lebih banyak lagi bahasa pemrograman lainnya yang memiliki keunikan masing-masing. Berikut akan saya jelaskan beberapa bahasa pemrograman yang dapat menjadi alternatif Java:
Scala Scala atau Scalable Language adalah bahasa pemrograman yang dibuat untuk menunjukkan pola suatu pemrograman secara singkat, praktis, dan elegan. Scala merupakan bahasa yang berorientasi objek, fungsional, extesible, dan interoperable. Bahasa pemrograman ini diciptakan oleh Martin Odersky pada tahun 2001 di École Polytechnique Fédérale de Lausanne (EPFL), Lausanne, Swiss. Scala mulai diperkenalkan kepada publik pada tahun 2004. Scala dikembangkan untuk memperbaiki kekurangan yang ada pada Java. Bahkan, banyak yang mengatakan bahwa Scala dikembangkan untuk menggantikan Java.
Program yang dikembangkan dengan bahasa Scala dapat berjalan dengan Java Virtual Machine. Meskipun hasil program dari Scala identik dengan program yang dibuat dengan Java, penulisan kode Scala cukup berbeda dengan Java. Perbedaan Scala dengan Java adalah dalam penulisannya tidak diperlukan semicolon atau titik koma ‘;’ untuk mengakhiri setiap statement. Pada Java, terkadang kita lupa untuk menambahkan ‘;’ di akhir statement. Kejadian ini dapat membuat programmer resah, tetapi dalam Scala tidak diperlukan lagi tanda ‘;’ untuk mengakhiri statement. Tak hanya itu saja, penulisan kode pada Scala juga jauh lebih singkat daripada Java. Contohnya seperti perintah System.out.println(); yang digunakan untuk mencetak sesuatu pada layar dalam Java. Dalam Scala, perintah tersebut dapat ditulis cukup dengan println().
Penulisan kode yang lebih singkat bukan berarti Scala jauh lebih simpel dibandingkan dengan Java. Justru sebaliknya, Scala merupakan bahasa yang lebih kompleks dibandingkan dengan Java. Dua puluh baris kode simpel pada Java dapat digantikan dengan satu baris kode kompleks dalam Scala. Ini membuat programmer harus berpikir lebih keras untuk menuangkan berbagai perintah dalam satu baris.
Kotlin
Pada sistem operasi Android, bahasa pemrograman yang paling umum digunakan adalah Java, diikuti oleh Scala. Google mengumumkan pada Google I/O 2017 bahwa Kotlin menjadi bahasa pemrograman official untuk Android. Kotlin semakin hari semakin terkenal sejak diumumkan oleh Google. Penulisan kode Kotlin cukup simpel. Bahkan programmer pemula dapat mulai coding dengan Kotlin. Kotlin dapat bekerja dengan kode Java yang telah ada, sehingga memudahkan programmer dan developer untuk perlahan-lahan berpindah ke Kotlin. Selain itu, kode yang ditulis dengan Java dapat diubah ke Kotlin dengan mudah menggunakan fitur dalam IDE seperti Android Studio. Bisa dikatakan bahwa Kotlin adalah bahasa pemrograman yang lebih baik dibandingkan dengan Java, terlebih lagi untuk pengembangan aplikasi Android. Namun, ukuran aplikasi yang dibuat dengan Kotlin lebih besar dibandingkan dengan aplikasi yang dibuat hanya menggunakan Java. Ukuran package aplikasi berbasis Kotlin lebih besar dikarenakan adanya tambahan standard library Kotlin di atas standard library Java.
Kedua bahasa pemrograman di atas memiliki kelebihan dan kekurangannya masing-masing. Bahasa pemrograman yang lebih efisien dan mudah digunakan untuk pengembangan program berbasis JVM masih menjadi topik yang hangat diperdebatkan. Ditambah lagi dengan cepatnya perkembangan berbagai bahasa pemrograman baru yang memperluas pencarian ini. Untuk saat ini, belum ada jawaban yang pasti bahasa pemrograman manakah yang lebih efisien untuk pengembangan aplikasi berbasis JVM. Semuanya dikembalikan pada kebutuhan dan preferensi masing-masing.
Java Virtual Machine (JVM) tidak hanya untuk Java saja. Beberapa ratus bahasa pemrograman JVM sendiri menyediakan berbagai fasilitas untuk proyek Anda. Ada berbagai macam bahasa pemrograman yang dinilai lebih efisien untuk membuat aplikasi berbasis JVM dalam praktiknya. Beberapa diantaranya adalah:
Groovy
Groovy adalah bahasa pemrograman berorientasi objek yang dapat digambarkan sebagai Java yang dipasangkan dengan bahasa scripting dinamis seperti JavaScript atau Python. Jika ingin menggunakan Groovy dapat dilakukan dalam dua “mode” yang berbeda yaitu: Anda dapat mengkompilasi Groovy ke JVM Bytecode seperti Java. Dengan begitu Anda hanya perlu mengemasnya dengan sebuah groovy library dan dapat dijalankan di JVM seperti Java .
Anda bisa membuat suatu sistem yang Anda inginkan (misalnya Groovy Gradle plugin) untuk menggunakan dan membangun Groovy dalam suatu proyek reguler. Selain dengan cara dikompilasi, Anda juga bisa menggunakannya sebagai bahasa scripting yaitu dengan menuliskan kode Groovy Anda di dalam file lalu menjalankan file tersebut.
Groovy memiliki sejarah unik yang menyoroti beberapa perubahan dunia open source. Proyek ini dimulai pada tahun 2003. Pendiri kemudian pindah ke proyek lain, dan pada beberapa waktu meremehkan ciptaan asli mereka. Bahkan tanpa mereka, ada cukup minat masyarakat kontributor untuk menjaga Groovy terus maju. Proyek ini kemudian ditangani dengan sungguh-sungguh oleh Guillaume Laforge, seorang pengembang dari Prancis, dan di bawah kepemimpinannya menikmati kebangkitan. Kerangka Web terkemuka, Grails, dibangun dengan menggunakan Groovy dan akhirnya perusahaan alat mulai mendukung Groovy dalam IDE dan produk pengembang lainnya.
Kemampuan :
Groovy juga menawarkan fitur lain yang disebut dengan closure. Groovy juga menyediakan konstruksi tingkat tinggi untuk menangani tugas standar seperti pemrosesan string, konsumsi XML,pengujian unit , dan lain sebagainnya yang dapat menghemat waktu. Sebenarnya, salah satu kasus penggunaan awal untuk Groovy memanfaatkan sintaks tingkat tinggi dan dukungan pengujian untuk menyingkirkan unit test pada kode Java.Groovy juga menyediakan pemeriksaan statis opsional, yang berarti Anda dapat menangkap kesalahan pada saat kompilasi. Groovy memiliki banyak fitur yang memungkinkan Anda menulis lebih banyak kode ringkas dibandingkan Java. Salah satunya adalah operator navigasi yang aman, yang mencegah NullPointerException. Selain itu, Groovy bersahabat dengan programmer Java karena hampir semua kode Java juga kode Groovy yang valid, sehingga memiliki banyak kesamaan.
Kelemahan :
Ketika popularitas bahasa ini sedang meningkat, ia menderita kelemahan lama yang masih ditangani yaitu runtime yang lambat. Meskipun kinerja JVM dioptimalkan, beberapa fitur Groovy memiliki biaya yang sangat tinggi. Berbagai upaya sedang dilakukan untuk mengubah fitur ini atau mengurangi dampak kinerjanya.
Jruby
JRuby adalah 100% implementasi Java dari bahasa pemrograman Ruby . Jruby dalam pengapliakasiannya digunakan sebagai Ruby untuk JVM.
JRuby menarik bagi pengembang karena sintaksnya sangat tinggi. Juga berguna untuk implementasi berorientasi objek (tidak seperti Java, di mana beberapa entitas adalah objek dan yang lainnya tidak) . Ada beberapa bagian yang tidak dimiliki oleh Ruby dan sebailiknya, JRuby memiliki library besar pada platform Java. Ruby memiliki banyak library bagus, tapi tidak banyak yang dapat digunakan sebagai library standar Java.
Kemampuan : JRuby lebih cepat daripada alternatif yang lain, selain itu Jruby sendiri juga memiliki keunggulan dalam arsitekturnya yang signifikan dalam memanfaatkan JVM contohnya dapat membentuk fungsi pararel.
Dalam aplikasi server web Mongol yang sesungguhnya yang diuji pada tahun 2007, kinerja JRuby lebih baik daripada Ruby MRI 1.8, setelah Java Virtual Machine telah di instantiasikan.
Dalam benchmark implementasi Ruby 2007, JRuby lebih cepat daripada Ruby MRI 1.8 dalam beberapa tes, namun YARV mengungguli keduanya.
Pada bulan April 2014, dalam Game Benchmarks Language Computer, JRuby 1.7.4 biasanya memiliki kinerja yang sama dengan Ruby MRI 2.1.0, namun menggunakan lebih banyak memori.
Sungguh banyak bahasa pemrograman yang dapat mengembangkan program berbasis JVM.Tapi memang yang paling terkenal memang java dan ruby.Tetapi ada banyak bahasa program yang tidak kalah baik dengan dua itu,seperti Fantom dan clojure yang akan kita bahas sekarang ini
1.Fantom
Fantom adalah bahasa pemrograman berorientasi objek yang dibuat oleh Brian dan Andy Frank yang dapat berjalan di Java Runtime Environment (JRE), JavaScript, dan .NET Common Language Runtime (CLR).Tujuan utamanya adalah menyediakan library API standar yang membuat user tidak akan mempertanyakan pertanyaan seperti apakah kode pada akhirnya akan berjalan pada JRE atau CLR. Seperti C # dan Java, Fantom menggunakan curly brace syntax(tanda {}). Fantom adalah open source di bawah naungan Academic Free License 3.0 dan tersedia untuk platform Windows dan Unix-like (termasuk Mac OS X).
Nama asli bahasa pemrograman Fantom adalah Fan, dinamai sesuai lingkungan tempat penciptanya tinggal di Richmond, Virginia. Setelah mendapatkan beberapa anggota komunitasnya, timbul kekhawatiran tentang pencarian nama tersebut. Pada bulan November 2009,nama proyek tersebut secara resmi diubah dari Fan menjadi Fantom.
Pengetikan fantom sangat sederhana,semua variabel harus diketik semuanya seperti halnya pengetikan bahasa C# dan Java. Di Fantom, unit deployment disebut pod. Pods berguna sebagai tempat nama, paket, dan modul. Mereka disimpan sebagai file .pod, yaitu file zip yang berisi FCode (the bytecode Fantom), dokumentasi, dan file sumber daya yang diperlukan untuk menjalankan pod. Sebuah pod dapat menentukan semua jenis tipe untuk digunakan di perpustakaan dan aplikasi lain. Nama pod sepenuhnya harus memenuhi syarat nama jenis. Misalnya, fwt :: Widget berbeda dengan webapp :: Widget. Jika sebuah pod berisi tipe bernama Main, maka bisa dijalankan pada command line dengan: fan .Build system Fantom dapat mengemas satu set Pods ke dalam arsip JAR melalui build :: JarDist.
2.Clojure
Clojure adalah salah satu bahasa pemrograman Lisp.Clojure adalah bahasa pemrograman yang bertujuan dalam penekanan pada pemrograman fungsional.Bahasa pemrograman ini dapat berjalan pada Java virtual machine dan the Common Language Runtime. Seperti bahasa program Lisps lainnya, Clojure memperlakukan kode sebagai data dan memiliki sistem makro. Proses pembangunan saat ini didorong oleh suatu komunitas,yang diawasi oleh Rich Hickey sebagai diktatornya yang baik hati.
Clojure mendorong kekonsistenan dan struktur data yang tidak berubah. Sementara sistem mengetiknya sepenuhnya dinamis, usaha baru-baru ini juga berusaha menerapkan pengetikan bertahap.Clojure mendorong programmer untuk bersikap eksplisit tentang mengelola negara dan identitas.Fokus pada pemrograman dengan nilai yang tidak berubah,konstruksi perkembangan waktu yang eksplisit atau terang terangan ini dimaksudkan untuk memfasilitasi pengembangan program untuk menjadi lebih kuat, terutama yang multithreaded.
Clojure digunakan dalam industri oleh perusahaan seperti Funding Circle,Walmart,Puppet,dan perusahaan perangkat lunak besar lainnya.Dukungan komersial untuk Clojure disediakan oleh Cognitect.Konferensi Clojure tahunan diselenggarakan setiap tahun di seluruh dunia, yang paling terkenal dari mereka adalah Clojure / conj (pantai timur AS), Clojure / West (pantai barat AS), dan EuroClojure (Eropa).
Keuntungan Clojure:
Clojure adalah bahasa berbasis JVM yang berarti Anda memiliki akses penuh ke API Java yang kaya dan memiliki segudang library yang telah diimplementasikan untuk Java selama 15 tahun terakhir.
Clojure adalah Lisp, jadi semua kelebihan yang dimiliki oleh Lisps juga dimiliki oleh Clojure
Clojure dirancang untuk konkurensi. Ini menawarkan struktur data yang tidak berubah, pemrograman fungsional dengan efek samping nol, Memori Transaksi Perangkat Lunak yang terpasang, dan lain-lain. Anda dapat memfokuskan upaya rekayasa Anda pada fitur dan bukan rincian konkurensi.