0Pricing
Java Academy · Pelajaran

Migrasi ke Modul

Modul otomatis dan tanpa nama.

Migrasi ke Modul adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 4 pelajaran total.

Memodularisasi Kode yang Ada

Hanya sedikit proyek yang sejak awal mengadopsi modul. JPMS dirancang untuk migrasi bertahap, sehingga jalur kelas dan jalur modul dapat digunakan secara bersamaan.

Kuncinya adalah modul otomatis dan modul tanpa nama.

Modul Tanpa Nama

Semua yang dimuat dari jalur kelas berada dalam satu modul tanpa nama. Modul ini dapat membaca setiap modul lain dan mengekspor semua paketnya.

Inilah jembatan yang membuat kode jalur kelas lama tetap berfungsi.

Modul Bernama Tidak Dapat Membaca Modul Tanpa Nama

Aturan pentingnya adalah: modul bernama eksplisit tidak dapat bergantung pada modul tanpa nama. Anda tidak dapat menulis requires untuk kode di jalur kelas.

Karena itu, lakukan migrasi dari bawah ke atas: ubah representasi dependensi terlebih dahulu.

Modul Otomatis

Letakkan JAR biasa (nonmodular) di jalur modul, dan JAR tersebut akan menjadi modul otomatis. Modul itu memperoleh nama yang diturunkan secara otomatis, dapat membaca semua modul lain, dan mengekspor semua paketnya.

Dengan demikian, modul bernama dapat menggunakan requires untuk JAR yang belum memiliki module-info.

Asal Nama

Nama modul otomatis diturunkan berdasarkan urutan prioritas berikut:

  • Entri Automatic-Module-Name dalam manifes JAR, jika ada
  • Jika tidak ada, dari nama berkas JAR (versi dihapus dan tanda hubung diubah menjadi titik)

Pentingnya Nama yang Stabil

Penulis pustaka sebaiknya menambahkan Automatic-Module-Name ke manifes mereka sebelum melakukan modularisasi sepenuhnya. Hal ini menjanjikan nama modul yang stabil, sehingga klausa dependensi di proyek lain tetap berlaku ketika module-info yang sebenarnya akhirnya ditambahkan.

Automatic-Module-Name: com.example.json

Strategi dari Atas ke Bawah

Pendekatan yang disarankan untuk aplikasi Anda sendiri:

  • Pertahankan dependensi sebagai modul otomatis di jalur modul
  • Tambahkan module-info.java ke modul tingkat atas Anda terlebih dahulu
  • Deklarasikan requires untuk nama modul otomatis tersebut

Contoh Langkah Migrasi

Misalkan guava-32.jar berada di jalur modul sebagai modul otomatis com.google.common. Modul aplikasi Anda sudah dapat menggunakan requires untuk modul tersebut.

module com.example.app {
    requires com.google.common;
    exports com.example.app.api;
}

Masalah Paket Terpisah

Sistem modul melarang dua modul berisi paket yang sama. Pustaka lama yang membagi satu paket ke beberapa JAR akan menyebabkan galat.

Perbaiki dengan menggabungkan JAR, menggunakan --patch-module, atau meningkatkan versi ke versi yang mengatasi pemisahan tersebut.

Masalah Akses Refleksi

Kerangka kerja yang melakukan refleksi mendalam mungkin gagal dengan InaccessibleObjectException setelah Anda melakukan modularisasi. Tambahkan direktif opens atau, sebagai jembatan sementara, gunakan opsi peluncuran --add-opens.

Alat jdeps yang Berguna

Alat jdeps menganalisis JAR Anda, melaporkan dependensi, menandai penggunaan API internal JDK, dan bahkan dapat membuat kandidat module-info.java dengan jdeps --generate-module-info.

Jalankan alat ini terlebih dahulu untuk merencanakan migrasi Anda.

Pemeriksaan Singkat

Ingat kembali cara JAR biasa memperoleh identitas modul.

Ringkasan

Anda telah mempelajari teknik migrasi:

  • Kode di jalur kelas berada dalam modul tanpa nama; modul bernama tidak dapat menggunakan requires untuknya
  • JAR biasa di jalur modul menjadi modul otomatis
  • Tetapkan Automatic-Module-Name untuk memperoleh nama yang stabil
  • Waspadai paket terpisah dan akses refleksi; gunakan jdeps untuk merencanakannya

Kursus JPMS ini telah selesai.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Migrasi ke Modul” gratis?

Ya — teks lengkap “Migrasi ke Modul” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Migrasi ke Modul”?

Modul otomatis dan tanpa nama. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Java Academy?

Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Migrasi ke Modul” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?

Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. module-info.java
  2. requires dan exports
  3. Layanan dengan provides/uses
  4. Migrasi ke Modul
← Kembali ke Java Academy