The syntax of Java in BNF has both BNF and syntax diagrams. You can click on
elements of a BNF expression to see their BNF definition.
Java syntax diagram applet which does the same thing as the previous site,
but graphically. Read the instructions because the user interface is not very obvious,
but once you understand it, it's cool.