Java was far, far ahead of its time

3-5-2021

Sometimes innovations come along that are just a bit too far ahead of their time. One of these are Java applets. Back in 2003 (i was fifteen!) I came across a web page that showed a Java applet rendering 3D scenes in real-time. To learn C++ I downloaded the source code and ported it to native code. Thanks to WebAssembly and the wonderful Emscripten compiler toolchain, it can now run in the browser as well. While it is admittedly quite impressive that browsers can run code at near-native speeds these days, it’s actually quite sad that it took more than fifteen years to get where we were in 2003 again.

To an innovation scientist like myself, Java is a fascinating phenomenon. At the time (and we can only say this in hindsight), Java was far, far ahead of its time, with the vision of write-once-run-anywhere programs delivered over the internet. Most of us unfortunately got to know Java as the slow-to-start, insecure, resource hogging and ugly (looking at you, Swing!) platform. I still remember being extremely impressed by the performance of the idx3dIII applets, thinking there was some kind of black magic going on – Java was supposed to be slow, right?

It really is a pity that Java never took off in the way it was once intended. It took us more than a decade to find an alternative to running near-native performance code in a portable way, delivered by the browser (and still we are struggling to add nice GUIs to it – a problem Java already solved as well). WebAssembly looks very promising and has some very enticing use cases – people have been running complete OS’es in it. Compared to good old Java applets, WebAssembly integrates much better with the existing web ecosystem than Java applets (which has become a lot more mature as well since the DHTML mess that Java applets found themselves in). It is much better sandboxed and thanks to great compiler infrastructure, you can generate WebAssembly from a lot of languages, including C/C++. Still, it makes we wonder – what if we spent 15 years improving Java applets?

Hopefully in fifteen years, I will dig up this blog post to add that I am still able to run the same thing because this time, we got it right.