1. Pengenalan
Dalam tutorial ini, kita akan membincangkan penguraian kelas Java. Apabila kod sumber tidak tersedia, penguraian kelas Java membantu menyahpepijat dan memahami tingkah laku kod sumber.
Mari kita lihat pelbagai pilihan yang ada.
2. Penguraian dalam IDE
Oleh kerana kebanyakan pembangunan dilakukan dalam lingkungan pengembangan yang terintegrasi (IDE), masuk akal bahawa penyahkompilasi juga harus dilakukan dalam IDE.
Untuk maklumat lebih lanjut mengenai IDE yang akan kami bekerjasama, lihat artikel kami mengenai cara debug di Eclipse dan konfigurasi untuk IntelliJ IDEA.
2.1. Gerhana
Pertama, di Eclipse kita memerlukan plugin seperti Enhanced Class Decompiler (ECD). Plugin ini menggunakan lima pengurai yang berbeza. Kita boleh memasangnya dari Eclipse Marketplace dan kemudian kita perlu memulakan semula Eclipse.
Seterusnya, ECD memerlukan sedikit persediaan untuk mengaitkan fail kelas dengan Class Decompiler Viewer:

Kita juga perlu mengaitkan fail " .class without source":

Akhirnya, kita boleh menggunakan penyahkompilasi dengan menekan Ctrl + Klik Kiri pada nama kelas . Kami melihat penyahkod yang digunakan pada tab fail dalam kurungan.
Dalam contoh ini, kami menggunakan FernFlower:

2.2. IntelliJ IDEA
Berbeza dengan Eclipse, IntelliJ IDEA menyediakan pengurai FernFlower sebagai lalai .
Untuk menggunakannya, kita cukup Ctrl + Klik Kiri pada nama kelas dan melihat kodnya:

Kita juga boleh memuat turun sumbernya. Memuat turun sumber akan memberikan kod dan komen sebenar.
Sebagai contoh, kelas anotasi Komponen dari tangkapan skrin di atas merangkumi Javadoc mengenai penggunaan Komponen . Kita dapat melihat perbezaannya:

Walaupun penyahkompilian sangat membantu, ia tidak selalu memberikan gambaran lengkap . Kod sumber penuh memberi kita gambaran lengkap.
3. Penguraian Garis Perintah
Sebelum pemalam IDE, baris perintah digunakan untuk kelas penyahkompilasi. Pengurai baris perintah juga dapat berguna untuk debug Java bytecode pada pelayan jauh yang tidak dapat diakses dengan IDE atau GUI.
Sebagai contoh, kita dapat menyahkompilasi dengan JDCommandLine menggunakan perintah balang sederhana:
java -jar JDCommandLine.jar ${TARGET_JAR_NAME}.jar ./classes
Jangan tinggalkan parameter ./classes. Ia menentukan direktori output.
Setelah penyahkompilasi berjaya, kita dapat mengakses fail sumber yang terdapat dalam direktori output. Mereka kini bersedia melihat melalui penyunting teks seperti Vim.
4. Kesimpulan
Kami melihat penguraian di Eclipse dan IntelliJ IDEA IDE serta pilihan baris perintah apabila tidak tersedia.
Kami juga melihat perbezaan antara menghubungkan kod sumber dan penyahkompilasi.