You can go to
www.zerog.com to download their InstallAnywhere installer. It's buried pretty deep, so you need to do some searching, but they do offer a free version of their installer. It will make installers for every platform, but I pretty much find that I only need to create a Windows installer. You can specify that the installer include the Java runtime.
As for Mac OSX, you can be guaranteed that every copy ships with a Java runtime (and actually, the Java SDK for that matter.) You can't be guaranteed what version of Java the user has, but at this point, it's probably the rare OSX user that doesn't have Java 1.4+. So if you create an executable JAR, any OSX user will be able to double-click it to launch the app.
I don't think there's much of a philosophical problem with creating different installers or execution methods for different platforms, so long as the Java binary code is the same. But maybe that's just me...