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”.
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.
Not so much
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.