Kata pengantar
Sampai sekarang, versi JDK telah diperbarui menjadi 10. Meskipun siklus hidup Java9 hanya setengah tahun, saya pikir perubahan yang dibawa oleh versi ini tidak dapat dibatalkan. Ini adalah inovasi mendalam pertama dalam arsitektur dan ketergantungan. Mari kita pelajari lebih lanjut di bawah ini.
Fungsi modular memiliki beberapa tujuan:
1. Konstruksi Proyek Modular
Faktanya, modularisasi itu sendiri tidak sulit dipahami. Kami menggunakan Maven atau Gradle untuk membangun proyek dengan terlalu banyak modul. Kemudian kami masih dapat membangun proyek proyek modular kami di Java9. Seperti yang ditunjukkan pada gambar:
Perhatikan poin -poin berikut:
1. Harap buat file deskripsi modular yang disebut modul-info.java di bawah setiap modul
2. Mengkonfigurasi dependensi modul dalam IDEA. Di sini, jika modul Project.Portal kami tergantung pada Modul Siswa. Layanan, kami dapat mengaturnya seperti ini:
Temukan ikon opsi ini: dan atur seperti ini untuk menambahkan dependensi:
Jika Anda perlu menetapkan dependensi untuk proyek lain, silakan atur dengan cara ini.
2. Langkah Implementasi
2.1. Modul Layanan Siswa
2.1.1. Tulis Modul-Info.java Siswa
Kode contoh:
Impor com.bdqn.lyrk.student.service.secondStudentService; impor com.bdqn.lyrk.student.service.api.istudentservice;/** * Kelas deskripsi modular, disatukan dalam root direktori file sumber dari setiap modul adalah: module-info.java * Syntax Syntax dalam Sumbangan Sumber dari masing-masing modul adalah: Module-Info.java * Syntax Syntax: * * .... * * [buka] Modul Modul Nama { * Membutuhkan [Static | Transitive] Modul Name; * exports package name [to module name] * providers interface name with [interface implementation class,....] * uses interface name* * } * ** @author chen.nie* @date 2018/4/18**/module student.service { exports com.bdqn.lyrk.student.service.api; Berikan IstudentService dengan SecondStudentService;}2.1.2. Tentukan antarmuka
Paket com.bdqn.lyrk.student.service.api; antarmuka publik iStudentService {void study ();}2.1.3. Tentukan kelas implementasi
Paket com.bdqn.lyrk.student.service; import com.bdqn.lyrk.student.service.api.istudentservice; kelas publik SecondStudentService mengimplementasikan IstudentService {@Override public void Study () {System.out.println ("Studi Kedua"); }}2.2. Modul Project.Portal
2.2.1. Tulis Modul-Info.java
impor com.bdqn.lyrk.student.service.api.istudentservice; Modul Project.portal {menggunakan IstudentService; membutuhkan siswa transitif. Layanan;}2.2.2. Tulis metode utama
Paket com.bdqn.lyrk.portal; impor com.bdqn.lyrk.student.service.api.istudentservice; impor java.util.serviceloader; kelas publik {void public void main (string [] args) {serviceLoader <iStudents Service. SiswaLServices.findFirst (). get (). Studi (); }}Setelah berjalan, kita bisa mendapatkan hasil yang sesuai:
3. Konfigurasi Umum File Modul-Info.java
3.1. Tentang kata kunci terbuka
Buka: Jika kata kunci ini dimuat pada modul, visibilitas kelas di bawah paket ekspor melalui ekspor adalah yang tertinggi. Kami dapat membuat objek dan mengakses properti melalui refleksi.
3.2. Tentang kata kunci ekspor
Setelah kami mendefinisikan modul, kami dapat menentukan paket mana di bawah modul dapat diakses oleh modul lain, dan kata kunci ekspor memainkan peran ini. Kami juga dapat bekerja sama dengan untuk menentukan modul mana yang dapat mengakses isi paket
Nama Paket Ekspor Sintaks [ke] Nama Modul
Ekspor <Prack>; Ekspor <package> ke <dodule1>, <codule2> ...;
3.3. Membuka kata kunci
Buka mirip dengan terbuka. Jika kata kunci terbuka ditambahkan ke modul, paket ekspor yang diekspor secara default dalam modul dalam bentuk terbuka.
modul n {ekspor com.jdojo.claim.model; membuka com.jdojo.claim.model;}3.4. Membutuhkan kata kunci
Kata kunci ini menyatakan ketergantungan antara modul saat ini dan modul lain. Sedikit mirip dengan dependensi di Maven.
Membutuhkan <podule>; membutuhkan transitif <codule>; membutuhkan <modul> statis; membutuhkan statis transitif <Modul>; membutuhkan statis transitif <Modul>;
Pengubah statis juga dapat ditambahkan ke pernyataan yang diperlukan, yang berarti bahwa ketergantungannya wajib pada waktu kompilasi, tetapi opsional saat runtime. Pengubah transitif dalam pernyataan yang diperlukan akan menyebabkan dependensi implisit untuk modul lain yang tergantung pada modul saat ini. Silakan lihat gambar berikut:
Di sini kita dapat melihat file modul-info.class di bawah modul java.se:
/ * * Hak Cipta (c) 2014, Oracle dan/atau afiliasinya. Semua hak dilindungi undang -undang. * Kepemilikan Oracle/Rahasia. Penggunaan tunduk pada ketentuan lisensi. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // ** * Tentukan inti Java se Api. * <p> * Modul yang mendefinisikan Corba dan Java EE API tidak diharuskan oleh * modul ini, tetapi mereka diminta oleh * <a href = "java.se.ee-summary.html"> {@kode java.se.ee} </a> modul. * * <dl> * <dt style = "font-family: 'dejavu sans', arial, helvetica, sans serif"> opsional untuk platform java se: </dt> * <dd> * <a href = "../ specs/jni/index.html"> java virdone (jnI (jnI (jnI (jnI/jni/index.html "> java java (JnI (JnI/jni/index.html"> href="../specs/jvmti.html">Java Virtual Machine Tool Interface (JVM TI)</a><br> * <a href="../specs/jdwp/jdwp-spec.html">Java Debug Wire Protocol (JDWP)</a><br> * </dd> * </dl> * * @modulegraph * @since 9 */modul java.se {membutuhkan java transitif. membutuhkan java.datatransfer transitif; membutuhkan java.desktop transitif; membutuhkan java transitif; membutuhkan java transitif. Logging; membutuhkan java transitif. Manajemen; membutuhkan java.management.rmi; membutuhkan java transitif; membutuhkan java.prefs transitif; membutuhkan java.rmi transitif; membutuhkan java transitif. membutuhkan java.security.jgss transitif; membutuhkan java.security.sasl transitif; membutuhkan java.sql transitif; membutuhkan java.sql.rowset transitif; membutuhkan java.xml transitif; membutuhkan java.xml.crypto;} transitif;Pada saat ini, kami hanya membutuhkan java.se, dan kami secara tidak langsung akan memperkenalkan semua dependensi di bawah modul ini
3.5. Kata kunci Penggunaan dan Penyedia
Java memungkinkan penggunaan mekanisme penyedia layanan yang memisahkan penyedia layanan dan pengguna layanan. JDK 9 memungkinkan untuk mengimplementasikan layanannya menggunakan pernyataan dan memberikan pernyataan. Gunakan pernyataan untuk menentukan nama antarmuka layanan, dan modul saat ini akan menemukannya dan memuatnya menggunakan kelas java.util.serviceloader. Silakan merujuk ke contoh sebelumnya untuk kode. Catatan: Kelas yang disediakan oleh penyedia harus berada di bawah modul yang sama, dan implementasi modul lain tidak dapat dirujuk saat ini. Misalnya: SiswaServiceImpl hanya dapat ada di bawah Modul Siswa.
Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini memiliki nilai referensi tertentu untuk studi atau pekerjaan semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi. Terima kasih atas dukungan Anda ke wulin.com.