Un decompiler Java este un tip special de decompilator care ia un fișier de clasă ca intrare și produce cod sursă Java ca ieșire. Decompilarea este exact procesul invers al compilarii. Astfel, decompilerul nu produce o replică a codului sursă. Se datorează faptului că un pic de informație s-a pierdut din codul sursă în timpul compilării programului.
Dar există multe complexități, de exemplu, codul Java este structurat, iar codul octet nu este structurat. Mai mult decât atât, transformarea nu este unul la unu: două programe Java diferite pot produce cod octet identic.
Există următoarele decompilatoare Java disponibile:
- DJ Java Decompiler
- JReversePro
- Evreii
- JD-CORE/ JD-GUI/ JD Eclipse
Decompiler JAD
JAD este o aplicație de linie de comandă. Este scris în C++. Funcția principală este de a dezasambla fișierele .class. JAD poate fi implementat din consolă și va decompila clasele Java în codul sursă. În acest fel, dezvoltatorii pot cerceta în profunzime codul bibliotecilor Java runtime și chiar pot înfrumuseța liniile, pregătindu-le pentru o recompilare. Există riscul suprascrierii fișierelor de cod sursă, mai ales atunci când este utilizat parametrul „-o” (suprascrierea fișierelor de ieșire fără confirmare).
Exemplu
Să creăm un program Java simplu care adaugă două numere.
import java.util.*; class DecompilerDemo { public static void main(String args[]) { int a,b,c; Scanner sc=new Scanner(System.in); System.out.print('Enter the value of a: '); a=sc.nextInt(); System.out.print('Enter the value of b: '); b=sc.nextInt(); c=a+b; System.out.println('sum of a and b is: '+c); } }
Urmați pașii pentru a converti .class în cod sursă Java care poate fi citit. Aici folosim decompilatorul JAD.
dimensiunea textului latex
Pasul 1: Descărcați instrumentul JAD de la https://bit.ly/2XuRzT5
Pasul 2: Extrageți fișierul zip și obțineți jad.exe.
Pasul 3: Creați un fișier .java (DecompilerDemo.java) în același folder în care ați extras fișierul zip.
Pasul 4: Compilați și rulați fișierul .java. Va genera un fișier .class în folderul respectiv.
Pasul 5: Acum mutați fișierul .class și aplicația jad într-un alt folder.
Pasul 6: Tastați comanda: jad DecompilerDemo
Comanda de mai sus generează un fișier .jad în folderul respectiv.
Pasul 7: Tastați comanda: jad ?s java DecompilerDemo
Acesta generează fișierul .java în același folder.
Deschideți DecompilerDemo.java obținem următorul cod:
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.kpdus.com/jad.html // Decompiler options: packimports(3) // Source File Name: DecompilerDemo.java import java.io.PrintStream; import java.util.Scanner; class DecompilerDemo { DecompilerDemo() { } public static void main(String args[]) { Scanner scanner = new Scanner(System.in); System.out.print('Enter the value of a: '); int i = scanner.nextInt(); System.out.print('Enter the value of b: '); int j = scanner.nextInt(); int k = i + j; System.out.println((new StringBuilder()).append('sum of a and b is: ').append(k).toString()); } }
Putem observa că fișierul .java scris este diferit de fișierul .java generat, dar dă aceeași ieșire.
care este sistemul de fișiere linux
Dezasamblator de fișiere de clasă Java
Comanda javap
The javap este un instrument de linie de comandă Java care vine cu JDK. Este folosit pentru a dezasambla fișierul de clasă și pentru a tipări o versiune care poate fi citită de om a acelei clase. Ieșirea sa depinde de opțiunea utilizată. Fără a folosi nicio opțiune, javap tipărește pachetul, câmpurile protejate și publice și metodele claselor transmise acestuia. A javap este, de asemenea, folosit pentru a afla ce metode sunt disponibile pentru o clasă dacă nu aveți codul sursă care a fost folosit pentru a crea clasa. Formatul general al comenzii javap este:
javap [options] filename
Opțiuni
Cu comanda javap, sunt disponibile multe opțiuni. Unii dintre ei sunt:
Dezasamblați un fișier de clasă folosind comanda javap
tipuri de învățare automată
class DisassembleDemo { public static void main(String args[]) { System.out.println('Java'); } }
Generați fișierul de clasă al programului de mai sus și utilizați următoarea comandă pentru a dezasambla fișierul de clasă.
javap -c -p DisassembleDemo
Ieșire
Următoarea ieșire arată ce conține fișierul de clasă.
Dar nu obținem codul sursă Java folosind comanda javap. Deci, există multe decompilatoare disponibile care convertesc un fișier .class într-un fișier .java.