The JDK ships with jdb, the Java Debugger.

JSwat is a better way to debug Java. JSwat is a graphical Java debugger front-end which is licensed under the GPL.

Patricia Sherman has written an excellent tutorial on debugging Java, titled Debug Strategy.