Java Disassembler (JDA) is a fork of Bytecode Viewer (BCV) that adds advanced code analysis features. The basic principles of BCV are maintained; however, many aspects are different.

The main reason JDA was forked was that BCV was becoming too large and cumbersome, with many redundant, unused, or useless features. The issue with removing them is that there could be many BCV users that relied on such features. Because of this, it is more appropriate to fork JDA as a separate project. Additionally, BCV's development has stagnated, and the last official build is from July 2015. It has since grown increasingly difficult and arcane to compile BCV from source, and full jars often range into 20Mb in size. It has become necessary to fork BCV in order to make large-scale changes.

With that in mind, JDA's goal is to be a light-weight yet powerful Java static disassembler. BCV suffered from a multitude of issues, but a large one was that it tried to be a dynamic reverse engineering tool (debugger) as well as a static tool (disassembler) at the same time, only succeeding partially in the latter. In the future, JDA will have powerful static analysis tools, such as control and data flow analysis, code contraction (copy and constant propagation), whole binary cross referencing (xrefs), and an IR engine. Additionally, many useless or irrelevant features have been removed. JDA's scope as a program currently is only to be a powerful Java disassembler and analyzer, not a debugger or unpacker.

Keyboard Short-cuts:

Misc. Notes: