; Date: Fri Oct 24 2008
On Windows applications usually deploy as a
.exe which hopefully doesn't contain a virus and which you run an installer which weaves registry entries and drops
.DLL's into the DLL Hole and so on ..
On Linux you have several packaging paradigms, from
.deb .. The Linux distros have varying policies for packaging Java app's and dropping them on the file system. And while there is a long standing issue about whether the Java VM implementations are LSB compliant at least with OpenJDK the distros can take care that the VM is installed correctly on the OS.
On Solaris is a similar problem but the package format is different.
On Mac there's several ways to install an app, usually a
.dmg and you drag a
/Applications. It's real simple. For Java the installation of the Java VM is more than a little screwy but there is a JDK style directory tree buried somewhere under
My point here is there doesn't seem to be any standard way to deploy a Java app (and have it properly integrated with the OS) .. and that it the root cause is outside the hands of the Java ecosystem to resolve. The root cause is that the OS vendors do not have a universal application delivery mechanism. The OS vendors all have their own ideas of how best to package and install and deploy applications.
For most cases a Java app can be deployed as a
.jar (depending on the requirements of external dependencies) and running the app is done with "
java -jar file.jar" or in some cases you can double click it's desktop icon. Maybe this is the 'standard way to deploy a Java app' ?? If so this way to deploy is not nicely integratable with the OS preferred way to deploy applications.
With 6u10 we have this idea of deploying a Java app via a packaged JNLP which you drag onto the desktop. That may improve the deployment of applications for some cases.