Is there a standard way to do this? I realize this can be somewhat platform dependent. Our product right now is only supported on Windows - so I suppose that\'s what I\'m
System.out.println(System.getProperty("java.version"));
Other properties here
I would firstly start by looking for the JAVA_HOME environment variable (and possibly JDK_HOME although thats far less common) and then determining what version that is and whether it's a JDK or JRE.
After that check for common instead locations. Find out the system's program files directory (don't just assume it's C:\Program Files even though it is 99.5% of the time) and look for common install locations under that (eg Java).
I wouldn't do an exhaustive search.
It's worth asking: do you really need to find JDKs this way? Can't you just ask the user what JDK he or she wishes to use, possibly suggesting any easy ones you've found already?
I'd probably go for a combination of looking for the Java installed registry keys and crawling the default locations for installation (which shouldn't take too long).
An alternative approach would be to bundle a tiny Java application which prints various details such as the running JVM.