-
jvm.dll
is the actual Windows implementation of the JVM (or better, the main entry point). C or C++ applications can use this DLL to run an embedded Java runtime, and that would allow the application to interface directly with the JVM, e.g. if they want to use Java for its GUI. -
java.exe
is a wrapper around the DLL so that people can actually run Java classes without the need for a custom launcher application. It is a Win32 Console application, so Windows will open a fresh Command Prompt window if the exe is not run from a batch file. -
javaw.exe
is a wrapper likejava.exe
, but it is a Win32 GUI application. Windows doesn’t have to open a Command Prompt window, which is exactly what you want to run a GUI application which opens its own windows.
EDIT: These shouldn’t make any difference in performance except for the overhead of process creation and initialization.
The most important thing: it should’t matter; if you are worrying about this you might actually want to keep Java running instead of launching it hundreds of times.