Java Decompiler

Yet another fast Java decompiler

Introduction

The “Java Decompiler project” aims to develop tools in order to decompile and analyze Java 5 “byte code” and the later versions.

JD-Core is a library that reconstructs Java source code from one or more “.class” files. JD-Core may be used to recover lost source code and explore the source of Java runtime libraries. New features of Java 5, such as annotations, generics or type “enum”, are supported. JD-GUI and JD-Eclipse include JD-Core library.

JD-GUI is a standalone graphical utility that displays Java source codes of “.class” files. You can browse the reconstructed source code with the JD-GUI for instant access to methods and fields.

JD-Eclipse is a plug-in for the Eclipse platform. It allows you to display all the Java sources during your debugging process, even if you do not have them all.

JD-Core, JD-GUI and JD-Eclipse are free for non-commercial use. This means that JD-Core, JD-GUI and JD-Eclipse shall not be included or embedded into commercial software products. Nevertheless, these projects may be freely used for personal needs in a commercial or non-commercial environments.

What's New RSS

08 21 2010

JD-GUI 0.3.3 is ready. The main changes do not appear at the first glance. The aim of this release was to improve the quality of decompiled source code.

The core was modified to reduce the number of the errors of recognition of instruction flows.

07 25 2010

What's up since March?

First, I have a good news: the project is alive yet!

Next, JD-Core has been modified deeply. The goal was to reduce the number of statements "break label' and methods marked with "ERROR" significantly. Mission accomplished.

03 20 2010

JD-GUI 0.3.2 is (finally) released. Many corrections and improvements have been added.
Many thanks to the 30 donators! Your support is very much appreciated.

Tip : click on the middle button over a Java source page...

03 13 2010

Java 5 / Enum in switch statements : Test passed.
Java 7 / Strings in switch statements : Test passed.

Click here to view all news.

Main features

  • JD-Core and JD-GUI are written in C++. This allows an extremely fast decompilation and a display.
  • JD-Core does not require the Java runtime environment for its functioning, therefore no special setup is required.
  • JD-Core works with most current compilers including the following:
    • jdk1.1.8
    • jdk1.3.1
    • jdk1.4.2
    • jdk1.5.0
    • jdk1.6.0
    • jdk1.7.0
    • jikes-1.22
    • harmony-jdk-r533500
    • Eclipse Java Compiler v_677_R32x, 3.2.1 release
    • jrockit90_150_06
  • JD-Core supports the following new features of Java 5:
    • Annotations
    • Generics
    • Type “enum”
  • JD-GUI supports Drag and Drop.
  • JD-GUI supports JAR files.
  • JD-GUI displays color coded Java source code.
  • JD-GUI allows you to browse the “class” files hierarchy.
  • JD-GUI displays “log” files, and allow you to decompile “class” files appearing in Java stack traces.
  • JD-Core, JD-GUI and JD-Eclipse use the excellent cross-platform wxWidgets toolkit.

Known issues

JD-Core, JD-GUI and JD-Eclipse are currently under development.

  • Nested ternary operators are incorrectly reconstructed.
  • Try-Catch-Finally statements are not perfectly decompiled yet.
  • ...