| I could write a book on the missteps that killed applets. The idea of applets was great and very forward-thinking - self-contained pieces of functionality to provide UI that HTML couldn't. Web Components are a similar idea 20 years later. And Java was a good bedrock to build applets on - a safe language that runs everywhere in a VM. But the implementation was terrible - let me count the ways: * Performance was awful. Java applets performed OK (and sometimes excellently if you put the work in) once they got started but the initial start-up cost of standing the VM was just woeful. Your browser would freeze for 10-20 seconds while MBs of JVM were slowly loaded and JIT'ed. People started to avoid sites with applets for this reason. Sun never even tried to fix it, and in fact told people it was for their own good because your CPU might have changed since last time the Applet was loaded. * The GUIs were ugly. People back then complained endlessly about the Applets looking non-standard, which was true. Big a far bigger problem was that they were just hideous. Poor default fonts (and bad font rendering), bad default colors, bad fit-and-finish. Sure you could spend time making everything look nice, but it was a huge effort. Sun did try to fix this but with limited success. * Security. The original idea was good - perfectly sandboxed executables. But Sun fell to the pressure from people who should have known better to provide ways of calling out to native DLLs. This was a terrible idea and was the source of many, many security problems. Browsers were wise to disable applets entirely. * Failure to respond to competition. People wanted video on the web and tried to use Java, but the Java graphics stack was pretty slow for that kind of thing. Flash came along with its bad but usable codec built in and everyone jumped ship. A missed opportunity. If Sun had fixed these problems I might be typing this comment into a Java Applet text control with formatting and spell-checking right now. |
The problem is they ran in an environment where only "dangerous" APIs were blacklisted but otherwise you had pretty much full access to all JVM features and capabilities. A blacklist approach does not work for security. It only takes one hole. With an expansive API like the JDK, that ended up being a horrible game of whack-a-mole to try and patch holes as they come up.
Applet security would have been much better done as a completely separate runtime from the standard JDK with only the APIs that make sense for applets. That, however, is a lot harder to pull off (at least initially).
Agree about everything else, though. Applets were in the right place at the right time but poorly executed. So poorly that techs like flash ate their lunch. (And I don't believe flash was particularly well executed, just better than Applets).