SourceGlider - Code analyzer for Java that helps to understand the code, display its impact and dependencies, reveal what variables refer to and monitor code quality. [Commercial, trial version] - http://www.sourceglider.com/
Extended Static Checker for Java - A programming tool that attempts to find common run-time errors in JML-annotated Java programs by static analysis of the program code and its formal annotations. [Open source, SRC license] - http://secure.ucd.ie/products/opensource/ESCJava2/
JLint - Checks code and finds bugs, inconsistencies, and synchronization problems by doing data flow analysis and building a lock graph. [Open Source, GPL] - http://jlint.sourceforge.net/
Lint4j - A static Java source code analyzer that detects locking and threading issues, performance and scalability problems, and checks complex contracts such as Java serialization by performing type, data flow, and lock graph analysis. [Freeware] - http://www.jutils.com/
PMD - Scans source code and looks for potential problems possible bugs, unused and suboptimal code, over-complicated expressions and duplicate code. [Open Source, BSD license] - http://pmd.sourceforge.net/
JiveLint - A command line tool employing static analysis on Java source code. Potential bugs and weak points are reported and a manual describes how source code can be improved. [Commercial, trial version] - http://www.bysoft.se/sureshot/javalint/