FindBugs uses static analysis to inspect Java bytecode for bug patterns without executing the program. It looks for bugs that arise from difficult language features, API misuse, code modifications, and mistakes. The tool matches Common Weakness Enumerations including SQL injection and deserialization of untrusted data.
The Java decompiler aims to decompile Java bytecode from version 5 and later. It has different options for command line use, a graphical user interface, and plugins for Eclipse and IntelliJ IDEs. The GUI allows browsing source code from .class files.
Common weaknesses in Java that could be exploited include null pointer exception handling, trust of system events without authentication, race conditions from improper synchronization, omitted break statements