Zum Inhalt springen

Java Decompiler

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 3. Juli 2024 um 07:59 Uhr durch Cw2k (Diskussion | Beiträge) (Quick'n'Dirty Übersetzungen des bulgarischen Wikipedia Artikels. Überarbeitungsbedürftig). Sie kann sich erheblich von der aktuellen Version unterscheiden.
JD – Java Decompiler

Java decompiler
JD mit dekompilierter Klasse von equinox.jar
Basisdaten

Entwickler Emmanuel Dupuy
Aktuelle Version JD-Core 1.1.3, JD-GUI 1.6.6, JD-Eclipse 2.0.0, JD-IntelliJ 0.6
Betriebssystem Plattformübergreifend
Programmier­sprache Java
Kategorie Softwaretechnik
Lizenz „free for non-commercial use“ (closed source, MIT-Haftungsausschluß)
java-decompiler.github.io

Java Decompiler (JD) ist ein Decompiler für die Programmiersprache Java. JD wird als GUI-Werkzeug sowie in Form von Plugins für die Eclipse IDE (JD-Eclipse) sowie IntelliJ IDEA (JD-IntelliJ) bereitgestellt.

JD unterstützt alle Java-Versionen von 1.1.8 bis 10.0.0 sowie JRockit 90_150, Jikes 1.2.2, Eclipse Java Compiler und Apache Harmony und wird daher oft dort eingesetzt, wo früher der populäre Jad (Dekompilierer) im Einsatz war.

JD-Eclipse 0.1.3 unterstützte Eclipse bis einschließlich Version 3.7 (Indigo), Version 0.1.4 enthält Korrekturen für Eclipse Juno (4.2) und Kepler (4.3), eine als Update-Archiv erhältliche Snapshot-Version 0.1.5-20131120 weitere signifikante Korrekturen. Zur Ansicht dekompilierten Codes muss die Ansicht „Class file editor“ für Bytecode ohne vorhandene Quellen manuell aktiviert werden[1].

Varianten

Auf Initiative von Alex Kosinsky entstand 2011 eine Variante[2] von JD-Eclipse, die die Ausrichtung von dekompiliertem Code an den Zeilennummern des Originals erlaubt, die oftmals als Debug-Informationen im Bytecode enthalten sind.

Eine Abspaltung von JDEclipse-Realign durch Martin „Mchr3k“ Robertson[3] erweiterte 2012 die Funktionalität um eine manuelle Steuerung der Decompilation und Unterstützung für Eclipse 4.2 (Juno) und 4.3 (Kepler).

Verschiedene Java-Decompiler

Procyon [4]

Dieser in Java Version 6 geschriebene Dekompiler ist besonders zuverlässig in folgenden Situationen:

  • Enum- und String-basierte switch-Anweisungen
  • Lokale Klassen (anonym und benannt)
  • Anmerkungen
  • Java-Lambda-Ausdrücke und Methodenverweise der Version 8 (z. B. ::-Operator).

Ein häufiges Problem besteht darin, dass Klassen, die mit der Eclipse-Umgebung kompiliert wurden, möglicherweise nicht vollständig korrekte Ergebnisse liefern. Dies tritt am häufigsten bei String-basierten switch-Anweisungen auf.

Luyten eine GUI für Procyon.

CFR

Kostenlos, kein Quellcode verfügbar.[5]

Der 2015 aktualisierte und vollständig in der Programmiersprache Java 6 geschriebene „CFR“-Decompiler unterstützt die Java-Versionen 6, 7 und 8 und ist in der Lage, erweiterte Java-Funktionen zu dekompilieren, wie zum Beispiel:

  • Lambda-Ausdrücke ab Java Version 8
  • String-basierte switch-Anweisungen aus Java Version 7

JAva_Decompiler

JAD ist seit langem einer der am häufigsten verwendeten Dekompiler der Programmiersprache Java. JAD ist vollständig in der Programmiersprache C++ geschrieben, wurde seit 2011 nicht mehr aktualisiert und hat seine Funktionalität gegenüber modernen Sprachen wie Java Version 5 und höher längst verloren.

Fernflower[6][7]

Open Source. Schöpfer: Egor Ushakov.

Dieser sich schnell entwickelnde analytische Dekompiler wurde zuletzt im Jahr 2015 aktualisiert und wird bald ein integrierter Bestandteil der Programmierumgebung Intellij Version 14 sein. Er ist kompatibel und unterstützt alle Versionen der Programmiersprache [[Java]“. und inklusive Java Version 6.

JD[8]

Kostenlose Software zur nichtkommerziellen Nutzung. Schöpfer: Emmanuel Dupuy.

Dieser Decompiler wurde zuletzt im Jahr 2014 aktualisiert und verfügt über eine eigene visuelle Oberfläche und Plugins für die Entwicklungsumgebungen Eclipse und Intellij. JD ist vollständig in der Programmiersprache C++ geschrieben und unterstützt nur Version 5 der Programmiersprache Java.

AndroChef[9]

Unterstützung bis Java Version 6.

Einzelnachweise

  1. Alexey Zvolinskiy: Fruzenshtein's notes. JD – Java decompiler. 1. April 2013, abgerufen am 2. Januar 2014.
  2. Alex Kosinsky – Realignment for JD-Eclipse. Version 1.0.2 vom 11. August 2011. Abgerufen am 19. Januar 2013. Gehostet bei SourceForge.
  3. Martin „Mchr3k“ Robertson – JDEclipse-Realign. Version 1.1.2 vom 6. Januar 2013. Abgerufen am 19. Januar 2013. Gehostet bei GitHub.
  4. Version 0.6.0 Procyon vom 02/2022
  5. www.benf.org
  6. the.bytecode.club
  7. github.com
  8. jd.benow.ca
  9. www.neshkov.com