Java Decompiler
JD – 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 |
Programmiersprache | 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
- undString
-basierteswitch
-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
-basierteswitch
-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.
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.
Weblinks
Einzelnachweise
- ↑ Alexey Zvolinskiy: Fruzenshtein's notes. JD – Java decompiler. 1. April 2013, abgerufen am 2. Januar 2014.
- ↑ Alex Kosinsky – Realignment for JD-Eclipse. Version 1.0.2 vom 11. August 2011. Abgerufen am 19. Januar 2013. Gehostet bei SourceForge.
- ↑ Martin „Mchr3k“ Robertson – JDEclipse-Realign. Version 1.1.2 vom 6. Januar 2013. Abgerufen am 19. Januar 2013. Gehostet bei GitHub.
- ↑ Version 0.6.0 Procyon vom 02/2022
- ↑ www.benf.org
- ↑ the.bytecode.club
- ↑ github.com
- ↑ jd.benow.ca
- ↑ www.neshkov.com