Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Apa itu Gambar Runtime Kustom di Java 9?

Java 9 memperkenalkan ide gambar runtime modular dengan Project Jigsaw dan secara resmi memecahkan masalah pengiriman runtime Java sebagai artefak monolitik. Gambar runtime monolitik tidak hanya membebani penggunaan memori tetapi juga memperlambat kinerja keseluruhan aplikasi yang berjalan di atasnya. Kami sekarang dapat mengemas subset JRE yang disesuaikan, berdasarkan kebutuhan individu dari aplikasi yang berjalan di dalamnya dan meningkatkan manifold efisiensinya. Artikel ini membahas secara menyeluruh fitur gambar runtime kustom yang diperkenalkan dengan Java 9.

Ikhtisar

Dampak dari ide membuat gambar runtime modular dengan Java 9 sangat besar. Ini membuka pintu untuk aplikasi yang dibuat khusus langsung dari platform tempat aplikasi itu berjalan. Platform Java telah meningkatkan fungsinya dengan setiap versi baru. Tidak mengherankan bahwa pada titik tertentu runtime akan menjadi artefak monolitik dan sangat membebani memori dan kinerja. Karena itu, pengembang telah lama meminta jalan keluar dari masalah ini. Juga, sebagian besar program tidak menggunakan Platform Java secara keseluruhan. Jika sebuah program dapat dioptimalkan untuk kinerja dan penggunaan memori, mengapa platform yang menjalankannya juga tidak dapat dikustomisasi? Java 8 mengambil langkah awal dan mencoba menerapkan beberapa aspeknya dengan Profil Ringkas . Java 9 membawanya ke depan dan menerapkan cara untuk membuat gambar runtime secara kustom tanpa kendala yang Profil Ringkas dikenakan. Dibutuhkan pendekatan holistik dalam mengemas gambar runtime. Platform itu sendiri dimodulasi untuk mengaktifkan fitur ini. Kode aplikasi yang dikemas dalam modul dapat dikirimkan dengan gambar runtime kustom yang hanya berisi modul platform yang digunakan oleh aplikasi. Dengan demikian, program aplikasi dapat berupa artefak yang dibundel tunggal yang mencakup JRE khusus. Ini tentu saja meningkatkan kinerja, memberikan waktu startup dengan jejak memori yang lebih sedikit. Jika aplikasi berjalan di Cloud, ini akan mengurangi beban jaringan dan waktu pengunduhan secara signifikan.

Profil Ringkas

Meskipun Java 9 telah melewati konsep Profil Ringkas diperkenalkan dengan Java 8, sering kali membantu untuk memahami dan menghargai pencapaian yang dicapai. Di satu sisi, Java 9 memanfaatkan ide tersebut dan meningkatkan konsep Profil Ringkas secara lebih holistik.

Profil Ringkas mendefinisikan subset dari API platform Java SE yang dapat mengurangi ukuran statis runtime Java. Ide ini pada dasarnya ditargetkan untuk bekerja pada perangkat dengan sumber daya terbatas yang memiliki kapasitas penyimpanan lebih kecil, seperti perangkat tertanam. Pada dasarnya ada tiga profil, yang disebut compact1 , kompak2 , dan compact3 . Setiap profil bernomor lebih tinggi adalah super-set dari profil bernomor yang lebih rendah. Artinya compact1 adalah bagian yang tepat dari compact2 , kompak2 adalah bagian yang tepat dari compact3 , dan compact3 , pada gilirannya, adalah subset yang tepat dari tumpukan penuh Java 8 SE API.

Referensi:

  • Profil Ringkas, Dokumentasi Java SE 8
  • Ikhtisar Profil Ringkas Tertanam Java SE 8
  • Pengantar Profil Ringkas Java 8

Memperkenalkan JIMAGE

JIMAGE adalah format file khusus yang diperkenalkan dengan Java 9 untuk menyimpan gambar runtime kustom. Format file ini dioptimalkan untuk kinerja dan penyimpanan. Format file pada dasarnya bertindak sebagai wadah untuk sumber daya, kelas, dan modul JDK, dan mengindeksnya untuk pencarian cepat dan pemuatan kelas yang lebih cepat. Tidak seperti format file lain seperti JAR dan JMOD, JIMAGE jarang digunakan oleh pengembang karena berkaitan dengan internal JDK kecuali jika seseorang ingin membuat image runtime kustom. Pemuatan kelas lebih cepat dengan JIMAGE daripada JAR atau JMOD karena secara khusus dioptimalkan untuk itu. Juga, JIMAGE hanya dapat digunakan pada saat runtime. JIMAGE masih dalam tahun-tahun awal. Ada sangat sedikit informasi pengembang yang tersedia; mungkin lebih banyak yang akan diungkap nanti.

Membuat Gambar Kustom

Java 9 memasok jlink alat untuk membuat gambar runtime khusus platform. Gambar khusus berisi modul khusus aplikasi dan modul platform yang diperlukan. Karena ukuran gambar runtime alias JRE dikurangi menjadi minimum, gambar aplikasi bersama dengan JRE juga minimal. Ini menggabungkan JRE sebagai satu unit pengiriman bersama dengan program. jlink alat ini terletak di /bin direktori JDK9 direktori yang diinstal. Ada beberapa pilihan yang tersedia yang terkait dengan alat ini yang dapat digunakan sesuai dengan kebutuhan. Deskripsi dapat diperoleh dengan menggunakan –help opsi yang tersedia dengan jlink memerintah. Di sini, itu diekstraksi untuk kenyamanan, atau Anda dapat mengetik jlink –help di baris perintah untuk mendapatkan daftar berikut.

Penggunaan:

jlink <options> --module-path <modulepath>
   --add-modules <module>[,<module>...]
Opsi Deskripsi
–tambahkan-modul [,…] Modul root untuk diselesaikan
–bind-services Tautan dalam modul penyedia layanan dan dependensinya

-c, –kompres=<0|1|2>

–nonaktifkan-plugin

–endian

Aktifkan kompresi sumber daya:

Level 0:Tanpa kompresi

Level 1:Berbagi string secara konstan

Tingkat 2:ZIP

Nonaktifkan plugin yang disebutkan

Urutan byte jimage yang dihasilkan (default:native)

-h, –help

–ignore-signing-information

–launcher =[/]

–limit-modul [,…]

–list-plug-in

Cetak pesan bantuan ini

Menekan kesalahan fatal saat JAR modular yang ditandatangani ditautkan dalam gambar. File terkait tanda tangan dari JAR modular yang ditandatangani tidak disalin ke gambar runtime.

Tambahkan perintah peluncur dari nama yang diberikan untuk modul dan kelas utama jika ditentukan.

Batasi semesta modul yang dapat diamati.

Cantumkan plugin yang tersedia.

-p, –module-path

–no-header-file

–tidak ada halaman manual

–keluaran

–save-opts

Jalur modul

Kecualikan sertakan file header

Kecualikan halaman manual

Lokasi jalur keluaran

Simpan opsi jlink di file yang diberikan

-G, –strip-debug

–suggest-providers [,…]

Hapus informasi debug

Sarankan penyedia yang menerapkan jenis layanan yang diberikan dari jalur modul

-v, –verbose

–versi

@

Aktifkan penelusuran verbose

Informasi versi

Baca opsi dari file

Contoh Sederhana

Di sini, kita akan membahas program yang sangat sederhana dari awal hingga akhir tentang cara membuat gambar runtime aplikasi Java. Kami akan berasumsi bahwa JDK9 diinstal dengan benar dan PATH dan JAVA_HOME variabel lingkungan diatur dengan tepat. Dalam kasus saya, ini diinstal dan disetel sebagai berikut (pada Platform Linux):

  • JDK9 direktori yang diinstal /usr/lib/jvm/java-9-Oracle
  • JALAN disetel ke /usr/lib/jvm/java-9-Oracle/bin
  • JAVA_HOME disetel ke /usr/lib/jvm/java-9-Oracle

Langkah 1

Buat direktori bernama /Home/SampleProject dan src direktori di dalamnya (misalnya, /Home/SampleProject/src ).

Langkah 2

Buat direktori bernama org.app.test di dalam src direktori (sebagai contoh, /Home/SampleProject/src/org.app.test ).

Langkah 3

Sekarang, di dalam org.app.test direktori, buat file bernama module-info.java . Dan, ketik konten berikut:

module org.app.test{
   requires javafx.controls;
   exports org.app.test;
}

Langkah 4

Sekarang, buat direktori bernama org, app, test satu di dalam yang lain (misalnya, org.app.test/org/app/test ) lalu buat file bernama MyApplication.java di dalam pengujian direktori dan ketik konten berikut:

package org.app.test;

import javafx.application.Application;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonType;
import javafx.stage.Stage;

public class MyApplication extends Application{

   public static void main(String[] args) {
      Application.launch(args);
   }

   @Override
   public void start(Stage stage) throws Exception {

      Alert alert = new Alert(Alert.AlertType.INFORMATION);
      alert.setTitle("Congratulation!");
      alert.setHeaderText("You did it. The application is
         running.
      Press OK to close");
      alert.setContentText("You have successfully created a
         custom image");
      alert.showAndWait().ifPresent(rs -> {
         if (rs == ButtonType.OK) {
            System.out.println("Pressed OK.");
         }
      });
   }
}

Langkah 5

Buat /Home/SampleProject/mods direktori. Di sini, kami akan menyimpan kode yang dikompilasi. Kompilasi kode sumber sebagai berikut. Direktori kerja saat ini adalah /Home/SampleProject .

javac -d mods --module-source-path src
src/org.app.test/module-info.java
src/org.app.test/org/app/test/MyApplication.java

Langkah 6

Sekarang, mari buat file JAR dan simpan di lib direktori (seperti /Home/SampleProject/lib ) sebagai berikut:

jar --create --file lib/org.app.test.jar
--main-class org.app.test.MyApplication
-C mods/org.app.test .

Langkah 7

Untuk menguji, jalankan aplikasi sebagai berikut:

java --module-path lib -m org.app.test

Langkah 8

Sekarang, mari kita buat file JMOD dan simpan di jmods direktori (misalnya, Home/SampleProject/jmods ):

jmod create --class-path lib/org.app.test.jar
   jmods/org.app.test.jmod

Langkah 9

Terakhir, mari kita buat gambar kustom dengan menggunakan perintah berikut:

jlink --module-path /usr/lib/jvm/java-9-oracle/jmods/:jmods
--add-modules org.app.test
--launcher runapp=org.app.test
--output dist

Ini akan membuat folder bernama dist yang berisi semua yang diperlukan untuk menjalankan aplikasi. Program, dengan nama peluncur yang diberikan sebagai runapp , terdapat dalam dist/bin direktori. Klik dua kali untuk menjalankannya.


Gambar 1: Program sedang berjalan

Itu saja.

Kesimpulan

Lihat dokumentasi yang sesuai untuk penjelasan rinci tentang setiap opsi perintah yang digunakan dalam artikel ini. Cobalah program sederhana dan bangun dari awal hingga akhir. Ini akan membangun kepercayaan diri yang diperlukan untuk bereksperimen dengan program yang sedikit lebih rumit, seperti menggunakan lebih dari satu modul dan menangani dependensinya. JDK9 telah memberdayakan pengembang untuk menyiapkan bagasi runtime untuk diisi hanya dengan modul yang diperlukan. Ini luar biasa dan luar biasa, sesuatu yang sebagian besar dari kita telah harapkan dari Jawa untuk waktu yang lama. Aplikasi Java sekarang dapat mengabaikan beban yang harus dibawanya untuk alasan yang tampaknya kecil dan menjadi platform yang dioptimalkan dalam distribusi.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menyimpan File dalam Database SQL Menggunakan FILESTREAM – Bagian 1

  2. Mengurangi Biaya Hosting Basis Data Anda:DigitalOcean vs. AWS vs. Azure

  3. Apa itu Operator Perbandingan?

  4. Menghubungkan Aplikasi 32-bit ke jBASE

  5. KUNCI SQL