subrutin
a sequence of programmer life

Advertisement

Mengenal GraalVM : JVM Yang Mengubah Java Menjadi “Native Binary”

0 1,341

Java sebagai bahasa pemrograman yang didukung beragam platform sistem operasi, memerlukan apa yang disebut Java Virtual Machine, agar instruksi kode – kode tersebut dapat dijalankan oleh mesin komputer. Di belakang layar, source code java diubah terlebih dahulu menjadi bytecode (menggunakan javac), kemudian diubah menjadi bahasa mesin oleh JVM.

Advertisement

Java Virtual Machine, pada perkembangannya berubah dari waktu ke waktu. JVM sebagai sebuah konsep dan spesifikasi memiliki beragam implementasi, salah satu implementasi utama adalah HotSpot yang dikelola dan didistribusikan oleh Oracle. Java HotSpot Performance Engine dirilis di April 1999 bersamaan dengan Java 1.3 dan awalnya dikembangkan oleh Animorphic, sebuah perusahaan yang diakuisi Sun Microsystem, yang kemudian kini dimiliki oleh Oracle.

HotSpot JVM sebagian besar ditulis dalam bahasa pemrograman C/C++, dan menjadi semakin kompleks seiring dengan waktu (diperkirakan 250.000 baris kode program di tahun 2007) . Tujuan utama Hotspot adalah menjalankan bytecode java (file .class) dan secara kontinyu menganalisa unjuk kerja program, lalu me-compile menggunakan JIT (just-in-time) bagian program yang sering dieksekusi menjadi bahasa mesin native guna meningkatkan performa aplikasi. Semua proses ini dilakukan saat program dijalankan (runtime), bukan sebelum eksekusi program, karena itulah disebut sebagai just-in-time (yang secara harfiah berarti tepat waktu).

Diagram berikut mengilustrasikan secara sederhana, bagaimana program Java dijalankan oleh JVM HotSpot

Advertisement

JVM HotSpot secara umum akan berlaku sebagai interpreter dari bytecode namun juga secara bersamaan bertindak sebagai compiler, yang mengubah bytecode menjadi bahasa mesin ketika ketika bagian yang sesuai dari aplikasi ditemukan selama analisis runtime program. Ketika sebuah method dicompile dengan compiler JIT, JVM tidak lagi melakukan proses interpreter pada pemanggilan method selanjutnya, namun akan langsung mengeksekusi bahasa mesin secara langsung. Hal ini berguna untuk meningkatkan unjuk kerja dari program tersebut.

Advertisement

Namun karena proses compile memakan waktu proses di CPU dan ruang memori, JVM harus memilih method mana yang harusnya di-compile secara runtime dan mana yang cukup menggunakan interpreter.

Semenjak Java 9, spesifikasi JEP295 (Java Enhancement Proposal) mulai diimplementasikan dengan adanya compiler ahead-of-time alias jaotc yang menggunakan project OpenJDK yang bernama Graal. Hal ini dimotivasi fakta bahwa meskipun compiler JIT cukup cepat, namun efeknya program Java akan menjadi begitu besar dan memerlukan banyak waktu untuk JIT dapat menyeleseikan tugasnya. methodmethod java yang jarang digunakan di dalam program mungkin tidak pernah dicompile sama sekali, sehigga berpotensi mengurangi performa karena terjadinya perulangan proses interpretasi.

Project Graal OpenJDK menujukan bahwa compiler yang ditulis dengan Java murni tersebut dapat menghasilkan code dengan optimasi tinggi. Dengan AOT-compiler, programmer dapat secara manual menggunakan compile ahead-of-time program java, yang artinya menghasilkan bahasa mesin sebelum eksekusi program, dan bukan saat runtime sebagaimana compiler JIT.

Hal ini menghasilkan waktu start-up yang lebih cepat ketimbang menggunakan compiler JIT karena tidak ada proses intercept saat program dijalankan. Berikut adalah diagram dari penggunaan compiler aot

  • GraalVM

Berbasis compiler Graal tersebut, Oracle memulai pengembangan GraalVM yang ditujukan tidak hanya bekerja dengan basis kode C/C++ yang besar dan kompleks dari JVM HotSpot namun juga menangani bahasa pemrograman lain (seperti Python, Ruby, Java Script dan lainnya ).

Arsitektur dari GraalVM sendiri diilustasikan pada gambar sebagai berikut

 

Perhatikan bahwa compiler Graal bukan satu -satunya komponen dari GraalVM, meskipun merupakan bagian yang utama. Di dalam GraalVM juga terdapat Sulong, interpreter LLVM, yang membuat GraalVM dapat menjalankan bahasa pemrograman lain seperti C++ dan Go. Framework Truffle yang juga ditulis dengan menggunakan Java, memungkinkan GraalVM menjalankan bahasa pemrograman seperti R, Ruby, Python, hingga JavaScript. SubstrateVM memungkinkan programmer mendapatkan binary native dari code Java  menggunakan kompilasi Ahead-of-Time (AoT)

GraalVM allows you to compile your programs ahead-of-time into a native executable. The resulting program does not run on the Java HotSpot VM, but uses necessary components like memory management, thread scheduling from a different implementation of a virtual machine, called Substrate VM. Substrate VM is written in Java and compiled into the native executable. The resulting program has faster startup time and lower runtime memory overhead compared to a Java VM.

https://www.graalvm.org/docs/reference-manual/native-image/

GraalVM kini tersedia dalam dua edisi, yaitu  Community Edition dan Enterprise Edition, pembaca dapat merujuk ke situs resminya jika ingin mencicipi kemampuan GraalVM yang dapat membuat performa aplikasi java menjadi semakin cepat.

 

advertisement

Get real time updates directly on you device, subscribe now.

Tinggalkan pesanan

Alamat email anda tidak akan disiarkan.