Java Runtime dengan jlink

Microsoft mengakui dan mendukung adopsi runtime Java kustom yang dibuat untuk kebutuhan aplikasi tertentu, bukan penggunaan runtime Java tujuan umum. Metode penyebaran Java ini memastikan runtime Java hanya berisi bagian platform Java yang benar-benar diperlukan oleh aplikasi, oleh karena itu meningkatkan keamanan, mengurangi ukuran penyebaran, dan meningkatkan performa, untuk aplikasi Java berbasis Cloud dan server serta aplikasi desktop/GUI.

Secara tradisional, Oracle/Sun Microsystems akan menghasilkan penginstal Java Runtime Environment (JRE) yang hanya akan berisi Java Virtual Machine, Java API, dan OS dan integrasi spesifik browser, yang bertujuan untuk memungkinkan komputer untuk menjalankan aplikasi Java yang diunduh dari Internet, atau untuk menjalankan Applet dan aplikasi Java Web Start melalui browser.

Dengan munculnya aplikasi web dan browser modern, teknologi Applet dan Java Web Start menjadi tidak digunakan lagi, dan browser tidak lagi mendukung plugin Java. Kebutuhan akan Lingkungan Java Runtime tujuan umum yang telah diinstal sebelumnya di komputer menjadi lembur yang kurang signifikan. Dengan Java 9, Applet API menjadi tidak digunakan lagi (lihat JEP 289) dan dengan Java 17, API ditandai untuk dihapus, yang berarti itu pasti akan dihapus pada rilis Java di masa mendatang.

Perubahan signifikan lainnya adalah modularisasi Java, juga dimulai dengan rilis Java 9 (lihat JSR 376). Sebagai bagian dari perubahan ini, pengembang sekarang dapat menggunakan baris perintah yang baru ditambahkan di JDK yang disebut jlink untuk menghasilkan runtime Java kustom yang dirancang khusus agar sesuai dengan kebutuhan aplikasi, untuk disebarkan sebagai runtime tersemat bawaan bersama dengan kode aplikasi sering kali sebagai bagian dari gambar kontainer untuk beban kerja berbasis Cloud, atau sebagai bagian dari alat penginstal untuk aplikasi berbasis GUI.

Saat ini, Minecraft: Java Edition disebarkan ke jutaan gamer Minecraft dengan runtime Java kustom yang disematkan dalam game. Di balik layanan online seperti LinkedIn, Yammer, Bing, dan Azure, Microsoft juga menyebarkan ratusan ribu JVM menggunakan teknik ini.

Membuat runtime Java kustom

Untuk membuat runtime Java, Anda harus menginstal JDK 9 atau yang lebih baru di lingkungan Anda. Unduh dan instal Microsoft Build of OpenJDK terlebih dahulu.

Identifikasi modul yang diperlukan dengan jdeps

Java Platform sekarang disegmentasi menjadi modul. Lihat dokumentasi Java 17 untuk daftar lengkap; versi Java lainnya dapat mencakup modul baru.

Alat JDK jdeps dapat digunakan untuk menganalisis .class file, direktori, atau JAR file, untuk mengidentifikasi dependensi modul Java, dependensi internal JDK, dan informasi berguna lainnya yang akan membantu pengembang menghasilkan runtime Java.

$ cat HelloWorld.java
public class HelloWorld {
  public static void main(String args[]) {
    System.out.println("Hello World!");
  }
}

$ jdeps HelloWorld.class
HelloWorld.class -> java.base
   <unnamed>                                          -> java.io                                            java.base
   <unnamed>                                          -> java.lang                                          java.base

Alat ini jdeps menunjukkan bahwa kelas ini hanya tergantung pada jenis dalam java.lang paket dan java.io, oleh karena itu hanya membutuhkan modul java.base. Output serupa akan diproduksi untuk JAR file sebagai input. Dengan daftar modul yang diperlukan, Anda sekarang dapat membuat runtime Java.

Untuk membuat runtime Java dari JDK, Anda harus mengetahui modul mana yang Anda inginkan. Gunakan jdeps untuk mengidentifikasinya. Untuk detail tentang jlink alat baris perintah, silakan lihat dokumentasi.

Contoh:

$ jlink \
         --add-modules java.base \
         --strip-debug \
         --no-man-pages \
         --no-header-files \
         --compress=2 \
         --output /javaruntime

Anda sekarang dapat menggunakan runtime Java yang terletak di /javaruntime untuk menjalankan kode aplikasi tergantung pada java.base modul. Struktur dari javaruntime folder yang dihasilkan oleh jlink mirip dengan struktur direktori JDK, dan java alat baris perintah untuk memulai JVM, terletak di ./bin/ folder seperti biasa. Mengingat runtime Java kustom berisi semua modul yang diperlukan dari aplikasi yang ada, itu dapat dirujuk oleh JAVA_HOME.

$ /javaruntime/bin/java HelloWorld
Hello, World!

Dalam contoh di atas, runtime Java yang diproduksi pada Windows mengonsumsi sekitar 24 MB pada Windows.

Membuat runtime Java dengan gambar kontainer Docker

Anda dapat menggunakan build multi-tahap Docker untuk membuat, mengonsumsi, dan mengemas runtime Java kustom sebagai bagian dari build gambar Anda. Lihat cara membuat runtime Java menggunakan Docker.

Dasar pengetahuan

javax.net.ssl.SSLHandshakeException: Menerima pemberitahuan fatal: handshake_failure

Kunjungi Keamanan dan Kriptografi Java untuk penjelasan tentang cara memperbaiki masalah ini.

Sumber

Memberikan umpan balik tentang Microsoft Build of OpenJDK

Kirimi kami komentar, pemikiran, dan ide Anda untuk membantu kami meningkatkan Microsoft Build of OpenJDK. Kunjungi halaman diskusi OpenJDK kami di GitHub untuk mengirimkan umpan balik Anda kepada kami.

Java dan OpenJDK merupakan merek dagang yang terdaftar dari Oracle dan/atau afiliasinya.