An overview of the Java application launcher is here:
http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/java.html
The most important thing someone from the Microsoft Windows world needs to understand about the Java application launcher is that we can execute a class with its fully qualified name—and this class does not correspond to a dedicated file on disk. Rather, this class can exist in any of the locations on the class path. It follows that you are not required to use a physical *.class or *.jar file in the class argument.
The second most important thing to understand is that when the -jar option is used, “the JAR file is the source of all user classes, and other user class path settings are ignored.” This is why one would rarely use the -jar option. One would place *.jar references in the -classpath option and call out class names instead.