In 1995, a new way of programming was born. James Gosling, working for Sun Systems, had done as all great inventors do– he tried something completely new. Originally he called it Oak, but it wasn’t long until it became Java. Though certainly not the Java we know today, it was a different breed of code from anything of its day. Rather than being leashed to a single machine, you could develop and execute your code in numerous environments and on almost any sort of equipment. And more importantly, it was one of the first languages to be fully Object Oriented– not only did your code contain objects, it is contained in an object. Even your main() method was executed in an instance of your class. This set it apart from other languages at its time, and continues to be a contrasting factor to this day.
One of the advantages of this, of course, is that your code is not, by itself, a “program.” That may seem counter intuitive, but it isn’t. Your code is a plugin for another program– the JVM. At the time, the JVM was young, and the code we could make for it was simple. Passing the JVM our code was rather like handing a child a wooden toy. You weren’t really certain what the result would be, but you had a good idea of what would happen, and every now and then it would throw a tantrum.
I would know all about that too– when Java was first released, I was only 5 years old. My parents weren’t very technical, but they are clever. They saw computers and programming as an opportunity for me. So they sat me in front a windows 95 computer, and downloaded the JDK– choosing Java not because it was easy or fun, but because they had been told that it would be very hard for me to break the computer from inside the JVM. After what I hear was a very frustrating night for two people who had rarely touched a computer to figure out what a “PATH” was, I was taught how to do two things– look up code (in a book, you youngin’) and type them into my command line.As I matured, so did Java. By the time I understood why I had to type “public static void main (String args)” into the beginning of all my code, Java was getting cool new features like autoboxing and enhanced for-loops. By the time I understood what the main method signature actually meant, Java came out with it’s [6th version](https://en.wikipedia.org/wiki/Java_version_history#Java_SE_6_.28December_11.2C_2006.29)— faster, more secure, and better than ever. I was in high school before Java let you switch over strings!
In a way, it felt like we went to college together and when I graduated, so did Java. On the 18th March 2014, Java 8 was released into the world… rather like myself. I learned calculus, it learned lambda expressions. I had learned to how manage my time, and it finally fixed its Date/Time API. When I came out of my shell and was ready to take on the world, it dropped permgen memory and told its resources to bring it.
I wasn’t born a Java Programmer– but it wasn’t very long before I became one. In that way, today feels a bit like the birthday of an old friend. It’s not the same as when we met, but then, neither am I. If you set aside the shiny new features though, it’s still a language that encourages experimentation and innovation, and a programmer with a hunger to learn.