I am rediscovering Java again, and my mind was transported to Fabricio, an excellent programmer I met and the person who opened my eyes to the language. Back then, I knew a little bit about programming. I knew BASIC, Pascal, and some COBOL. I had a very solid yet incomplete knowledge of Assembler, based on a reduced macro-instruction set. So you can safely say I was not a newcomer to programming, yet I lacked an important piece: object-oriented programming.
But back then – circa 1997 – Fabricio told me that Java was the greatest because it would do all kinds of things. First, it was its own environment. I thought he meant it was its own OS, but he said no, that the idea was complex, but the language could be written once and ran on all platforms. He told me Java was so complete, no other tools were needed, that it could sustain a programming environment on its own, making it ubiquitous to the extreme. In a nutshell, to my then young and naïve mind, it sounded like programming magic.
Very soon I started looking for Java tools and downloaded Sun’s primers and Java compiler. My first attempt if I remember well was creating a java applet that ran on the browser and opened a small window with a canvas where polygonal figures were drawn. I remember the example being extremely complex. I quickly forgot everything and left Java to its own devices.
A lot farther down the road I went back to college to learn Java right. That was my big introduction to all manners of OOP concepts, from static classes to encapsulation, heritage, composition, polymorphism, etc. My knowledge of the language was now strong, but I noticed the language itself had changed a lot to adapt to modern web needs and it looked a lot like C++.
Now enter the next wave of modern languages. I did not understand all concepts in Java, so while reading Bruce Eckel’s books I came upon Python. I tried Python to see if some of the more obscure examples of Java collections made sense to me. It was love at first sight. I was doing things in Python that were simpler to read and understand, while more complex in design, that I would not even envision in Java. My love for Java began to fade.
The next departure came to me while trying to make an active web page work. Java web applications with their plethora of XML files, classes, servlets, and such were making me suffer while getting nothing done. Then I discovered a Ruby On Rails tutorial and found myself even more alienated from Java. I was doing things in hours that took me days in Java.
One concept needs to be clear: I am not a programmer by trade. I use programming to solve business problems from time to time when Excel and other tools find lacking. I never needed any of these abilities as a must, rather as a compliment to my other core competencies.
A week ago I found Fabricio. I think he doesn’t remember me. Before I call him to my office to talk, I began to think how much I had grown programming wise, how much had Java grown, and how much had other languages grown.
Java became the COBOL of old companies and legacy systems. Why? I am not sure, but I bet it had to do with several factors. One is the cool wave of Ruby programmers. Twitter made Rails cool, and 37signals made of Rails a success story. Another is the wave of intellectual programmers doing Scala and Smalltalk and other even Clojure. Can’t say much about them, other than the fact they don’t use Java. There is a third body of people, running what I call conservative systems in Python and Perl. Perl hasn’t moved a lot, but I never see a Linux distro that doesn’t depend a lot on Perl. When it comes to run-of-the-mill web applications, PHP is king where I live. I cannot think of an uglier language, but people who love PHP swear and live by PHP.
And of couse, .NET did not die. Banks and corporations tied to Microsoft use .NET depend on .NET technology for all their applications.
Java owns to Android not disappearing from the mobile app environment. I honestly thought the mobile world had Objective C to look-up to from now on.
Today, Oracle owns Java and I think to them it’s just a good language on which to found their database engine empire. The COBOL of 2010 if you will. But Java did one thing that I think we usually take for granted. In a moment where .NET could have been the only option left in a world where mainframes began to disappear, Java challenged Microsoft on the web battleground. Despite not becoming the de-facto web language, it opened the doors for a whole plethora of other languages – OOP or not – to thrive.