The goto has been known to create unreadable undebuggable "spaghetti" code since the 1960's (The seminal "goto considered harmful" paper of Edsger W. Dijkstra was written in 1968).
It was a simple decision (and 100% correct IMHO) that Java would not have one. Not then, not now, not ever.
Sun's own web site has a white paper on the design of Java which includes
Java has no goto statement1.
Studies illustrated that goto is (mis)used more often than not simply "because it's there". Eliminating goto led to a simplification of the language--there are no rules about the effects of a goto into the middle of a for statement, for example. Studies on approximately 100,000 lines of C code determined that roughly 90 percent of the goto statements were used purely to obtain the effect of breaking out of nested loops. As mentioned above, multi-level break and continue remove most of the need for goto statements.