One frustrating aspect of being a Java developer is it’s lack of popularity in the web browser. There could be a number of causes for this. One is that installing Java, for most people, is not a very pleasant experience. The size of the JRE is much bigger than the size of a Macromedia Flash installer, and frequently after the JRE or JDK have been installed, additional configuration is needed in order to get Applets and/or Java Web Start to work for a specific browser. Unfortunately this configuration can be too complicated and/or frustrating for the average user. Sadly it’s easier for the user to run Applets or launch .jnlp files from Internet Explorer 6.0 on Windows XP than from Firefox on a Linux box. I had to manually create a symbolic link from Firefox plugin directory to a shared library in the JDK install directory, then I had to configure .jnlp files to start with javaws when Firefox was trying to open a Java Web Start program. Talk about a pain the arse!
Of course once the user is able to run an Applet or a Java Web Start program, if it sucks the user will still blame Java. It’s not hard to butcher a Swing application, and many applets available in the wild are examples of this. One often overlooked factor when writing an Applet (or any Swing or Windows Forms application), is that there is only ONE thread responsible for updating the view, and that thread should be kept free as much as possible! This gives the user the “appearance” of performance, because the GUI can remain responsive even when the CPU is being used for other tasks. In the past Swing (and earlier, AWT), had performance problems and nuances across OSes, and who can forget Microsoft trying to change Java and then bundle IE with their own version of the JVM, forcing Java developers to test their Applets on yet another platform. But Swing has come a long way since then, and it’s continually being improved. Because it’s been open sourced, now developers can contribute fixes for Swing. Download the latest JDK and write a Swing application to see for yourself how mature Swing is.
So, Sun should work on making Java easy to install and integrate with a web browser, they could consult Macromedia for help, I’ve never had a problem running Flash or opening a Acrobat document! As developers we should attempt to understand the Swing API better, use/require the latest JRE for our applications, and not lock the GUI up! Until then web developers will have to continue using Flash and JavaScript to get web pages to feel like a desktop application.