title: How to distribute Java Application
body: <p>I would like to know about the various options for distributing a Java application. </p>
  
  <p>I know that you can</p>
  
  <ul>
  <li>Distribute the Source Code and let users compile it themselves, or provide make files, etc..</li>
  <li>Package it into a JAR, and have self extracting archives</li>
  <li>and (I'm sure, myriad other ways)</li>
  </ul>
  
  <p>I'm hoping for some explanations about the most common options (and one's I haven't thought of) and in particular, do they require a user to have a JVM, or can it be bundled with one - personally I'm not too fond of an installer which halts due to a lack of JVM. Who says an app needs an installer, stand-alone solutions are fine too. </p>
  
  <p>Also, worth asking is how to handle cross-platform distributing, exe's vs dmg's, etc...</p>
  
  <p>My primary motivation for this question (which I appreciate is similar to others) is to find solutions that don't require the user to already have a JVM installed - but for completeness, I'm asking generally. </p>
  
  <p>Thanks very much</p>