Skip to content

Applet Trauma

I never had a good impression of Java. My first encounter was the applet.

Many people now have never seen a Java applet. It was a mechanism for running Java programs inside the browser. You visited a web page, the JVM spun up, downloaded bytecode, and executed it. The vision was beautiful. Write Once, Run Anywhere. The same program running identically in every browser. That was the promise.

In practice, every page load meant waiting tens of seconds for the JVM to start. A gray rectangle squatted in the middle of the browser. When it finally ran, it was sluggish. Worse, each browser shipped a different JVM version with different behavior. Run Anywhere was not the phrase that came to mind.

JavaScript, on the other hand, was a good first meeting. It was light. The browser executed it directly. No compilation step. Write it in a text editor, save, reload. It runs. That immediacy was a thrill.

I never expected JavaScript to still be serving roughly the same purpose in 2026. Its position as the browser's scripting language has not changed. What changed was everything around it. Node moved into server-side territory. The npm ecosystem exploded. A lightweight in-browser script language quietly swallowed servers, CLIs, and desktop apps.

Languages rise and fall in ways you cannot predict. CPAN, once dominant, has stopped breathing. Perl's module ecosystem was state of the art at the time. Everything was on CPAN. It held the same position npm holds now. Then it quietly finished its run. Will npm end the same way someday?

Java survived on the server side. The applet died, but Spring Boot is alive and well. The language that made the worst possible first impression still underpins enterprise infrastructure. My first impressions are not to be trusted.