Every developer has used a debugger once in a while. And sometimes, you had this "stepped once too many" problem: You ran your code too far. Since there is no way to go back, your only option was to start all over again.
A guy called "teawater" has just published a patch for GDB which does just that: It allows to reverse the program execution. Kind of an undo for the CPU registers, stack and memory. Can't wait to see this for Java!