Fitur dan masa depan GraalVN – DZone

Fitur dan masa depan GraalVN – DZone
GraalVM, seperti namanya, mewakili cawan suci pengembangan cloud native modern dengan meningkatkan kinerja aplikasi Java dan, pada saat yang sama, mewujudkan pemrograman polyglot yang sangat efisien dan transparan. Tapi apa sebenarnya yang ada di balik klaim ini? Dalam artikel ini, kita akan melihat evolusi dan prospek platform untuk memahami mengapa Anda akan mendapat manfaat dari mengintegrasikan teknologi ke dalam produksi. Kami juga akan meringkas aspek utama dari lisensi GraalVM, termasuk lisensi baru yang diperkenalkan oleh Oracle pada tahun 2023.
Manfaat GraalVM untuk Pengembangan Java
GraalVM adalah platform VM HotSpot berbasis Java yang diimplementasikan di Java. Ini termasuk Java Development Kit (JDK), Kompiler Just-In-Time Tingkat Lanjut, Kompiler Antisipatif, dan alat untuk menambahkan bahasa pemrograman ke proyek. Tujuannya adalah untuk mempercepat aplikasi berbasis JVM dan menyediakan dasar untuk pemrograman multibahasa. Manfaat teknologi untuk pengembang Java dapat diringkas sebagai berikut:
-
Kompiler JIT yang disempurnakan yang ditulis hanya di Java meningkatkan kinerja aplikasi dibandingkan kompiler HotSpot C1/C2 tradisional;
-
Kompilasi AOT (Native Image) memungkinkan transformasi aplikasi berbasis JVM menjadi gambar asli dengan startup yang hampir seketika, sehingga menghilangkan pemanasan program Java yang terkenal;
-
Kerangka kerja Truffle dan Sulong (penerjemah LLVM) memungkinkan integrasi tanpa batas dari bahasa non-JVM seperti JavaScript, Python, dan C/C++ ke dalam aplikasi.
Native Image membantu mengoptimalkan jejak memori dan menyediakan boot instan, yang sangat penting untuk beberapa kasus penggunaan (mis., Fungsi Lambda). Tetapi meskipun sulit untuk memigrasikan aplikasi ke Native Image, pemrogram masih dapat menggunakan GraalVM untuk meningkatkan throughput dan membawa layanan mikro mereka ke tingkat berikutnya, di mana setiap layanan menggunakan kemampuan berbagai bahasa pemrograman untuk tugas tertentu. .
Peningkatan Graalvm yang terkenal di versi terbaru
GraalVM adalah teknologi yang berkembang pesat. Lusinan fitur dan ratusan peningkatan telah diperkenalkan di GraalVM CE sejak rilis pertama pada tahun 2019. Perubahan tersebut terkait dengan teknologi Native Image dan framework bahasa. Tidak mungkin untuk mencantumkan semuanya dalam satu artikel, jadi inilah beberapa penyempurnaan untuk Native Image dan Java yang menunjukkan kemajuan proyek dalam rilis terbaru:
-
Native Image sekarang disertakan dengan GraalVM (untuk JDK 20), jadi tidak perlu menginstalnya dengan perintah gu install native-image ;
-
Memperluas Platform yang Didukung dan Konfigurasi Sistem: Teknologi ini berjalan di x64 dan AArch64 dengan Linux dan macOS dan di x64 dengan Windows. Gambar kontainer Docker juga tersedia di GitHub untuk mendukung pengembangan berbasis kontainer;
-
Pengembang Java kini dapat menggunakan GraalVM Reachability Metadata Repository, yang berisi metadata untuk pustaka dan kerangka kerja Java terpopuler yang belum mendukung GraalVM Native Image secara default. Repositori memungkinkan pengguna untuk meminimalkan kesalahan runtime;
-
Konsumsi memori terus ditingkatkan. Misalnya, ukuran biner GraalVM dasar berkurang sebesar 42% di versi 22.2.0. Rilis Juni 2023 memberikan jejak memori yang lebih baik dari proses pencitraan asli, mengurangi risiko kesalahan kehabisan memori dan menggunakan sumber daya yang tersedia secara lebih efisien.
-
Menambahkan dukungan untuk toolkit AWT dan Swing untuk pengembangan aplikasi GUI.
Selain itu, GraalVM selalu didasarkan pada OpenJDK versi terbaru dengan perbaikan bug dan tambalan keamanan, jadi disarankan untuk memperhatikan rilis CPU triwulanan untuk memastikan keamanan lingkungan pengembangan.
Integrasi ParallelGC
GraalVM saat ini menggunakan SerialGC dan EpsilonGC di Community Edition. Oracle GraalVM juga menyediakan G1GC (informasi lebih lanjut tentang versi ini disediakan di bagian bawah). SerialGC berjalan dalam satu utas dan membekukan semua utas aplikasi hingga pengumpulan selesai, sehingga meningkatkan latensi. Untuk mengurangi waktu istirahat, diputuskan untuk mengatur ParallelGC ke GraalVM CE. Kolektor baru didasarkan pada kode SerialGC tetapi menggunakan banyak utas untuk memparalelkan pekerjaannya.
ParallelGC baru menggunakan satu utas per inti CPU secara default (maks. delapan utas per inti) untuk melakukan pengumpulan sampah. Jumlah utas dapat diatur dengan opsi -XX: ParallelGCThreads. Karena pengumpulan sampah dilakukan dalam beberapa fase, fase komputasi penutupan transitif diparalelkan terlebih dahulu, tetapi rencananya termasuk memparalelkan beberapa fase GC.
Insinyur BellSoft, siapa berpartisipasi aktif dalam pengembangan dan integrasi kolektor baru, mengukur performanya dengan tolok ukur HyperAlloc yang ditujukan untuk mensimulasikan karakteristik aplikasi yang memengaruhi latensi GC. Hasilnya menunjukkan penurunan waktu jeda GC sebesar 10-40%.
Saat ini ParallelGC diimplementasikan di Liberica Native Image Kit sebagai fitur eksperimental. Setelah menerima masukan komunitas dan memvalidasi kinerjanya, para insinyur akan mengintegrasikannya ke dalam cabang utama GraalVM CE.
GraalVM CE vs Oracle GraalVM dan lisensi Oracle baru
Hingga Juni 2023, dua distribusi GraalVM tersedia: GraalVM Community Edition (CE) berdasarkan OpenJDK dan GraalVM Enterprise Edition (EE) berdasarkan Oracle JDK. Namun tahun ini, Oracle mengubah ketentuan lisensi GraalVM. Dimulai dengan rilis Juni 2023, distribusi GraalVM baru tersedia untuk JDK 17 dan JDK 20, bukan EE, yaitu Oracle GraalVM.
GraalVM EE, masih tersedia untuk GraalVM versi 19 hingga 22, didistribusikan di bawah Dukungan Oracle Saya untuk pelanggan komersial dan OTN untuk GraalVM EE termasuk lisensi untuk versi Early Adopter untuk pribadi, pengembangan, dan pengguna lainnya.
Oracle GraalVM didistribusikan di bawah yang baru Syarat dan Ketentuan GraalVM Gratis (GFTC), termasuk lisensi untuk versi Pengguna Awal yang memungkinkan penggunaan pribadi dan komersial gratis. Lisensi mengizinkan pengembang untuk menggunakan program untuk tujuan komersial internal dan untuk mendistribusikan kembali program yang tidak dimodifikasi tanpa membebankan biaya untuk distribusi tersebut, termasuk biaya untuk produk yang menyertakan atau dipaketkan dengan salinan program. Apa itu build Pengguna Awal? Rilis produk ini terus dikembangkan dan dimodifikasi sehingga rilis mendatang mungkin berisi fitur dan perubahan yang tidak sesuai dengan rilis sebelumnya.
Di sisi lain, GraalVM CE (atau GraalVM Open Source) adalah perangkat lunak sumber terbuka yang dibuat dari sumber GitHub dan dilisensikan di bawah GPLv2 + Pengecualian Classpath. GPLv2+CPE adalah lisensi perangkat lunak gratis yang memungkinkan pengembang memodifikasi dan mendistribusikan kode sumber produk secara bebas. Namun pada saat yang sama memberi mereka hak untuk menambahkan modul atau pustaka ke classpath yang dapat Anda distribusikan di bawah persyaratan lisensi lainnya.
Build GraalVM CE tersedia di GitHubsementara Oracle GraalVM dapat diunduh dari situs web.
Tabel di bawah merangkum versi dan lisensi GraalVM:
Versi GraalVM |
Rilis |
Lisensi |
GraalVM untuk Java 20 |
Oracle GraalVM |
Syarat dan Ketentuan GraalVM Gratis (GFTC), termasuk lisensi untuk versi Pengguna Awal |
Edisi Komunitas GraalVM |
GPLv2+CPE |
|
GraalVM untuk Java 17 |
Oracle GraalVM |
GFTC, termasuk lisensi untuk versi Pengguna Awal |
Edisi Komunitas GraalVM |
GPLv2+CPE |
|
GraalVM 22 untuk Java 11, 17 |
Edisi Perusahaan GraalVM |
Dukungan Oracle Saya untuk Pelanggan Oracle Termasuk lisensi versi Early Adopter untuk pengguna pribadi, pengembangan, dan lainnya |
Edisi Komunitas GraalVM |
GPLv2+CPE |
|
GraalVM 21 untuk Java 11, 17 |
Edisi Perusahaan GraalVM |
Dukungan Oracle Saya untuk Pelanggan Oracle Termasuk lisensi versi Early Adopter untuk pengguna pribadi, pengembangan, dan lainnya |
Edisi Komunitas GraalVM |
GPLv2+CPE |
Untuk dukungan, GraalVM adalah proyek komunitas dan ada berbagai saluran untuk mendapatkan bantuan:
- Dokumentasi;
- Repositori GitHub (tempat pengembang dapat melaporkan bug);
- Saluran Slack dengan insinyur GraalVM;
- Milis.
Perusahaan dengan langganan Java SE Oracle menerima dukungan perusahaan untuk GraalVM dalam batas langganan mereka. Dimungkinkan juga untuk memanfaatkan dukungan dari penyedia distribusi GraalVM lainnya. Misalnya, BellSoft menawarkan dukungan perusahaan untuk teknologi Gambar Asli sebagai bagian dari Liberica Native Image Kit, kompiler gambar asli berdasarkan GraalVM CE.
Bagaimana dengan fitur? Komunitas GraalVM sedang mengerjakan pengembangan GraalVM CE di bawah naungan Dewan Penasihat Proyek GraalVM, yang mencakup perwakilan dari organisasi besar: Oracle, VMWare, BellSoft, Red Hat, dll. Pada saat yang sama, Oracle berjalan secara terpisah di Oracle GraalVM.
Sebagian besar, Oracle GraalVM dan GraalVM CE menawarkan fungsionalitas serupa dengan beberapa variasi yang belum di-porting ke edisi komunitas. Misalnya, Oracle GraalVM Native Image menyertakan G1 GC, inferensi profil berbasis pembelajaran mesin (ML), dan pengoptimalan yang dipandu profil, yang tidak ada di GraalVM CE.
Kesimpulan dan rencana masa depan
Tren pengembangan utama dalam proyek terkait dengan peningkatan Native Image yang berkelanjutan dan konvergensi yang signifikan dengan JDK, yaitu penyelarasan basis kode, fitur, API, dan strategi pertumbuhan. Salah satu langkah menuju keselarasan ini adalah pengenalan Proyek Galahad pada tahun 2022, bertujuan untuk menyumbangkan teknologi GraalVM terkait Java ke OpenJDK.
GraalVM digunakan dalam produksi oleh perusahaan terkemuka seperti Twitter, Facebook, Alibaba, dan banyak lagi. Selain itu, ini didukung secara native di kerangka kerja utama Java: Spring Boot, Quarkus, Micronaut, dan Helidon. Ketertarikan para pemimpin industri terhadap GraalVM memberi kami alasan untuk mengharapkan adopsi teknologi yang lebih luas dalam waktu dekat.