No Longer the Applet of the Developer’s Eye
Oct 7, 2019 | 7 MIN READ
Oct 7, 2019 | 7 MIN READ
I recently noticed that Applets are now, to use a Monty Python analogy, the Norwegian Blue of client-side development.
If you go all the way back to when Java was being developed, it was an Applet that caught everyone’s attention.
In early 1995, John Gage, Director of Sun Microsystems’ Science Office was heading to Monterey to do a presentation at the TED conference. The demonstration he planned was of a new web browser called WebRunner (the name being derived from Blade Runner). This included new technology that would, “bring the static Web to life”. James Gosling went with John to handle the demo. He moved the cursor over a colour 3D molecule image in the browser, clicked on it, and rotated the molecule back and forth. The entire audience, who had not really being paying much attention up to this point, went Aaaah! The web as we know it today, with all its interactivity, was born. And all thanks to an Applet.
Being a collector of arcane technology and related things, I still have my first Java CD from when I joined Sun in 1996.
Included in the picture is my copy of “HELLO WORLD(S)!” from which I drew details of John and James’ demo.
In addition to having a copy of Netscape 2.0 and JDK 1.0 the CD also has various Applets, including the MoleculeViewer. (I had planned to install all of the CD software but the system requirements are “Any SPARCstation with Solaris 2.4 or later”, which I don’t have). In order to run the applets I initially tried using JDK 1.2.2 on a Linux machine but that wouldn’t run because my machine was 64-bit and JDK 1.2 did not understand an architecture name of x86_64. Even fixing the .java_wrapper (remember that?) it turns out the libc is way to modern and the java executable just gave a segmentation violation. I switched to JDK 8 and was reminded that not all classes compiled with JDK 1.0 will run on a JDK 8 JVM due to a security fix introduced in JDK 1.1.2. (Very early compiled code from JDK1.0prebeta1 does not always set the maxlocals value correctly, resulting in a ClassFormatError).
Having recompiled the source files with JDK 8 the applets ran happily using good old appletviewer. I’ve included a couple of screen shots. (Of course, it would have been great to include it embedded in the blog webpage but, as we’ll see that wasn’t going to work).
As history has shown, that first Eureka demonstration did not lead to a situation today where all web-based applications use Java. In fact, quite the opposite. The Java runtime was initially integrated with Netscape, the most popular browser in the late 1990s (anyone else remember having to pay for a browser?) There were a number of reasons that prevented Applets from achieving the potential they initially suggested:
In 2013, all the major browser providers started to phase out support for the underlying technology used by applets (primarily the NPAPI). By 2017, it was impossible to run an applet in a modern browser. At the same time, Oracle announced, with the release of JDK 9, that applets were being deprecated. With the release of JDK 11, in 2018, the browser plugin was removed from the Oracle JDK.
Although the java.applet package is still part of the Java SE specification, all classes have been deprecated since JDK 9. The browser plugin and appletviewer standalone tool are not part of the OpenJDK reference implementation so it is not possible to build these from open-source.
The sad news is then, that Applets are well and truly dead, they have ceased to be, they are no more. The good news, however, is that Java is still very much alive and well and continues to be the most popular programming platform on the planet.