This should have been in Java from the beginning, instead of outsourcing this functionality to third parties (Mainly Windows only installer applications that sucks, and also isnt used that much).
That said, I think it is misguided to include a JRE in the bundle. The correct way would be something like OS X Lion has, promt the user if Java is not installed. and then do a more or less automatic install of Java, in the system.
Apple is recommending that as of Mountain Lion, Java apps should bundle the JRE from Oracle's OpenJDK and use that. Apple's unofficial Java spokesperson Mike Swingler is adamant that this new approach (for Apple) is better.
Windows' SxS DLL system has the same basic issues but it solves so many distribution, UX and versioning problems that the downsides are totally worth it.
Some other apps have their own mechanisms to do the same, e.g. Google Chrome.
I don't think it's a good idea though, as it makes those apps more susceptible to being modified by malware.
Here on Ubuntu I had to write a custom minecraft launcher just so that I could launch the .jar from my desktop.
That Ubuntu doesn't do it by default, that's just their choice (a sane choice I think).
Kernel module seems a bit drastic. You can just change the file association.
Still, its not 100% the way OS X users expect apps to work.
Windows does the same thing as OS X. You can do the same on Linux, even on the console over there (using binfmt_misc, see ) without a desktop environment.
For as long as I can remember Java installed an entry in HKEY_CLASSES_ROOT for .jar files. On my machine it's currently set up to run
"C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -jar "%1" %*
Java does try to get that to work by default, though.
JWS is awful. It is totally not the way users expect to install applications.
Actually, please start. I install the JDK via an installer, unzip Eclipse, run eclipse.exe, and it just works. Am I missing something?