En Java Decompiler er en spesiell type decompiler som tar en klassefil som input og produserer Java-kildekode som output. Dekompileringen er nøyaktig den omvendte prosessen med kompilering. Dermed produserer ikke dekompileren en kopi av kildekoden. Det er fordi litt informasjon går tapt fra kildekoden under kompileringen av programmet.
Men det er mange kompleksiteter, for eksempel er Java-kode strukturert, og bytekode er ikke strukturert. Dessuten er transformasjonen ikke én til én: to forskjellige Java-programmer kan gi identisk bytekode.
java saksuttalelse
Det er følgende Java-dekompilatorer tilgjengelig:
- DJ Java Decompiler
- JReversePro
- JØDER
- JD-CORE/ JD-GUI/ JD Eclipse
JAD Decompiler
JAD er et kommandolinjeprogram. Det er skrevet i C++. Hovedfunksjonen er å demontere .class-filene. JAD kan distribueres fra konsollen, og den vil dekompilere Java-klasser til kildekoden. På denne måten kan utviklere se dypt inn i koden til Java runtime-biblioteker og til og med forskjønne linjene, forberede dem for en rekompilering. Det er en risiko for overskriving av kildekodefiler, spesielt når parameteren '-o' (overskriv utdatafiler uten bekreftelse) brukes.
Eksempel
La oss lage et enkelt Java-program som legger til to tall.
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); } }
Følg trinnene for å konvertere .class til lesbar Java-kildekode. Her bruker vi JAD-dekompileren.
Trinn 1: Last ned JAD-verktøy fra https://bit.ly/2XuRzT5
nummer til streng java
Steg 2: Pakk ut zip-filen og få jad.exe.
Trinn 3: Lag en .java-fil (DecompilerDemo.java) i samme mappe som du har pakket ut zip-filen.
Trinn 4: Kompiler og kjør .java-filen. Den vil generere en .class-fil i den respektive mappen.
Trinn 5: Flytt nå .class-filen og jad-applikasjonen til en annen mappe.
Trinn 6: Skriv inn kommandoen: jad DecompilerDemo
Kommandoen ovenfor genererer en .jad-fil i den respektive mappen.
Trinn 7: Skriv inn kommandoen: jad ?s java DecompilerDemo
Den genererer .java-filen i samme mappe.
Åpne DecompilerDemo.java får vi følgende kode:
// 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()); } }
Vi kan observere at den skrevne .java-filen er forskjellig fra den genererte .java-filen, men gir samme utdata.
Java Class File Disassembler
armstrong nummer
javap kommando
De javap er et Java-kommandolinjeverktøy som følger med JDK. Den brukes til å demontere klassefilen og skriver ut en lesbar versjon av den klassen. Utgangen avhenger av alternativet som brukes. Uten å bruke noe alternativ, skriver javap ut pakken, beskyttede og offentlige felter og metodene for klassene som sendes til den. EN javap brukes også til å finne ut hvilke metoder som er tilgjengelige for en klasse hvis du ikke har kildekoden som ble brukt til å lage klassen. Det generelle formatet til javap-kommandoen er:
javap [options] filename
Alternativer
Med javap-kommandoen er mange alternativer tilgjengelige. Noen av dem er:
Demonter en klassefil ved å bruke javap-kommandoen
class DisassembleDemo { public static void main(String args[]) { System.out.println('Java'); } }
Generer klassefilen til programmet ovenfor og bruk følgende kommando for å demontere klassefilen.
javascript varslingsboks
javap -c -p DisassembleDemo
Produksjon
Følgende utdata viser hva klassefilen har inni.
Men vi får ikke Java-kildekoden ved å bruke javap-kommandoen. Så det er mange dekompileringsprogrammer tilgjengelig som konverterer en .class-fil til en .java-fil.