|
Rationale
Why we decided to replace Java Web Start.
Major design goalsJava Web Start, how dost thee spite me? Let me count the ways. To illustrate why we should take the pains to implement such a system instead of using Java Web Start, let us state its primary design goals:
I have seen Java Web Start fail unrecoverably in more ways than I have fingers to count them, frequently with the only recourse to the user to be totally uninstalling and reinstalling my application and/or Java.
Java Web Start frequently fails thanks to over agressive caching proxies, proxies that mangle response headers, proxies that do strange things to the request URI. 'But it's the proxies that are at fault!' you say. Tell that to the user whose application no longer works.
Java Web Start made questionable design choices in this regard by making use of a sophisticated protocol that requires a running servlet engine to service (for those who don't want to reimplement the complex protocol using a more lightweight mechanism). Hardly scalable and annoyingly fragile.
Java Web Start provides a plethora of marginally useful functionality in the form of an application manager, web browser integration, a security model, etc. etc. etc. While those things are lovely for Sun and maybe even useful to Bigcorp, we care only about getting our application to our users in as simple an robust a manner as possible, not the creation of a general purpose platform for application deployment and management. Minor design goalsIf not for the major design goals, we wouldn't be doing this. But since we are, let's take the opportunity to remedy some of the various annoyances presented by Java Web Start.
Java Web Start annoyingly insists that data be placed across a vast swathe of directories, the locations of which are not knowable by the application without making unsupported, prone to future breakage, guesses. Moreover, without the user making use of the 'Advanced' tab of the Java Web Start management application, that directory cannot reside anywhere but the user's home directory; nor can different applications be made to reside in different places on the file system.
Java Web Start claims to support this option, but heaven forbid you actually use it and then try something like specifying a non-default heap size which will cause it to choke and die because it can't find the JVM to reinvoke with the new heap size when running your application.
|
► Sign in to add a comment
"Java Web Start made questionable design choices in this regard by making use of a sophisticated protocol that requires a running servlet engine to service" That's wrong. Plain wrong. Java Web Start does not need a servlet running. It never required that and it never will.
Java Web Start requires a servlet to perform any incremental updates, which is the main reason people use Web Start.
From the Java Web Start Developer's Guide: "If you require additional services, such as version-based downloading, incremental updates, or pack200 compression for your applications, the web server will need to support servlets or Java Server Pages. A sample servlet implementing these features is provided in the samples directory of the JDK."
Java Web Start has been causing numerous problems for us. I will look into GetDown? to see if we can replace our application's deployment mechanisms with it.
The Java Web Start Developer's guide is just wrong, we have pack200 compression for our applications using the headers to negotiate the encoding of the jars using simple mod_rewrite rules in an apache server, no servlets or jsp whatsoever the other features (version based downloading, or incremental updates) can also be made to work with some apache magic or php use.