In 1996, when the Web was just coming into its own, Java Applets quickly became the talk of the town in the developer community. People were very optimistic and excited about the possibilities it presented for creating a " way" of computing over the Web. However, at that time, client-side Java was not robust or mature enough to support this movement and the excitement did not sustain.
So where does Java for client-side computing stand today? The truth is that over the last eight-to-ten years Java has grown substantially and reached a high level of maturity, robustness and credibility. Also, Java has since been repositioned as a server-side technology, securing its position as the server technology of choice. In many cases, it is the only platform capable of delivering the promise of browser and platform independent applications that meet enterprise requirements.
Over the years, Java has grown significantly and overcome its initial Java Applet problems, such as limited user interface components, slow performance and limited cross-platform compatibility. If client-side installation is not a problem, there is the Java Swing package or Standard Widget Toolkit (SWT) that has significant UI capability, native-like performance and runs well cross-platform (both Swing and SWT are approaching native UI capabilities).
Alternatively, if zero-install is a requirement, there are novel solutions such as Nexaweb and Thinlet. Both have built a layer on top of JDK1.1 that provides Swing/SWT functionality in a tiny footprint, providing rich UI to Web applications in a zero-install fashion.
Two big advantages of Java over other client-side technologies are its industrial strength and broad developer base. For example, compared to Flash, Java Virtual Machine (JVM) is an industrial strength VM that supports robust programming, binary execution and multi-threading. From a development perspective, Java's client-side support can in large part be attributed to technology advancements driven by its huge development community. Also, Java's object-oriented programming model makes applications much easier to manage and maintain than using scripting based technologies.
Another important issue to consider when selecting a client-side Java solution is "deployment" capability. For Swing and SWT, a JDK1.2 or above JVM is required, which is not widely available on desktops. These solutions are suitable for Intranet applications, where desktop installation is not an issue. For JDK1.1 based technologies, such as Nexaweb and Thinlet, over 95 percent of the existing desktops support JDK1.1 and above and thus zero-install deployment is supported. If you take J2ME into account, Java is actually the most widely supported client-side computing platforms today.
There is a question about JVM availability on the desktop since Microsoft has stopped distributing its Java Virtual Machine with its recent release of Windows XP SP2. The good news is that Sun has signed distribution agreements with over 20 PC manufacturers, including DELL, HP, Apple, Toshiba, Gateway, to pre-bundle a JVM with each desktop (see the press release from Sun).
There have been many successful client-side Java development stories. The popular Eclipse and Netbeans IDE are both perfect examples of how Java can be successfully used for desktop applications. For example, Best Western Hotels deployed a Java-based hotel property management application to over 4000 hotels in its network. This Java-based application not only runs in a zero-install fashion on various desktop operating systems, including Windows 95 and 98 with only 64MB , but it also performs over 100 percent better than the original HTML application, while consuming 90 percent less bandwidth.
As the Web continues to become more widely adopted as a mission critical enterprise application platform, Java will follow suit by continuing its own progression around client-side computing -- in many situations, it is actually the only viable solution. For reasons described above, I believe it is safe to say that client-side Java is striking back!
About the Author:
Coach Wei currently serves as CTO for NexaWeb, which develops the leading technology software platform for building and deploying Enterprise Internet Applications. Previously, he played a key role at EMC Corporation in the development of a generation of storage network management software. Coach is a graduate from MIT, holds several patents and is an industry advocate for the proliferation of open standards.