Java — Now and Then

Peter Naulls
Adventures in Software Development
3 min readJan 3, 2020


Back in 1995 (or thereabouts, perhaps it was a little earlier), Java hit the scene, and it was the hottest thing in programming. This was a time when Pascal was still seriously taught in College (or at least, it was in mine). C++ was widely used, but perhaps not the powerhouse it was today — it was yet to get all the enhancements it has today.

And so, what did we get taught? Java? No, Modula 2. The language was a creation of the famous Niklaus Wirth — a kind of bastard child of Pascal and quasi object-oriented ideas that didn’t really pan out (remember that both Smalltalk and C++ had been around for more than a decade already).

By my 4th year of college, Java was in full swing (no pun intended, the GUI library was called “Swing”) in use, and my supervisor at the time (who was already quite elderly) suggested I do a project around an entirely different language — Sather. The less said about this language the better, but it’s got Python beat for pedantic syntax and strong typing. His opinion of Java was that it was a fad and would eventually take its place in history. My opinion as a naive college student was that “this time it was different”.

He had a point of course. He had been in the industry decades and seen numerous computer languages come and go. Perl was just getting started at the time, as was the unhelpfully named Javascript. The 70s and 80s had seen variations of BASIC, developments in COBOL and Fortran, C and C++ to name but a few of the most obvious.

Java Everywhere

I had a point too — despite my naivete — Java was a bit different. It was an early (earlyish, Smalltalk had come much earlier) language to be only partially compiled — that is, the compiler would generate an intermediate “bytecode”, rather than fully machine language, which would then only be able to run on a specific machine. Compiled Java runs in a “virtual machine” or Java Virtual Machine (JVM). And so it seemed for a time that Java would be the application language of choice.

Indeed, many stand alone applications were written in Java — this was the time before web-base applications. One of my first jobs out of college was working on an application to fit laser cut shapes onto sheet metal — all in Java. And of course the explosion of Java applets that for a time, promised to be everywhere, and then somehow that promise evaporated, when it turned out that mostly people were interested in playing video in browsers, and instead, in time, Javascript-based frontends driven by backends in various languages (especially Python, Perl, PHP) were to become the norm, and would evolve into websites we have today.

Not so much

Java continues to have niche support as an application programming language, but really, the bulk of software development is done in other languages: Windows — C# and C++, Linux — historically C, but now C++ and increasingly Python, MacOS — Objective-C and Swift. For web-based, Javascript/HTML/CSS and numerous frameworks on top of those and an explosion of options in the Backend.

Java doesn’t quite fit into any of this. Unless of course you’re using Android.

Java Really Everywhere

Java is in heavy use in Android. That is, almost every non-iPhone is now using Java. It’s used for services and many apps; the use is not quite the same as originally designed (more on that in this article). So, to a very great extent, Java has achieved the ubiquity it Sun once dreamed of. But not in the way really anyone could predict then. Perhaps that’s OK.

Problem is, programming Android is not really about Java. That’s just the language underneath. It’s about Android build environments and frameworks and so forth. It’s definitely not the same.


Of course, no one could have predicted this. The evolution of computer languages is pretty hard to predict — or then, perhaps it’s not — C, an invention of the 1970s for operating system development is still used for the Linux kernel. C++ is a mainstay of system software development, and C# is exactly the language that Microsoft intended. And I’m sure there’s plenty of Fortran and COBOL out there doing exactly what they were intended for.