This weekend, May 23rd to be exact, Java celebrates its 20th birthday. For me, and many others, the introduction of Java was a landmark event in the programming world. Oracle created a really nice timeline showing the history of Java that will jog your memory on some key milestones in the history of the language.
It's great to use occasions like this to reflect on the language; it's successes and failures. A number of people throughout the community have already weighed in with their opions.
You'll find many more impressions on Twitter, under #java20 tag, and throughout countless blogs. Today I'm just going to share some of my own highlights and observations.
I started university back in 1997, and at the time, the languages used in that first year of Computer Science were Pascal and C. They were the old days though, and most courses kick off with real object oriented programming, usually with Java. Still, it wasn't until second year that we got a Java module; and almost every other programming related class relied on Java knowledge. The first graphical programs we wrote used AWT; Swing was an additional (overcomplicated for us at the time!) download. Looking back, those UIs were as clunky as hell, but it seemed like magic at the time. Once I got started with Java, I was hooked.
The first company I worked with used Java for almost all their applications on the desktop. One of the most frequent taunts that the language got was it's performance, and that was justified to an extent. Startup times for desktop apps was an issue. We were using Swing at the time, but in an industry where C++ applications were still the norm, we seemed slow.
One of the guys in the company was trying out Eclipse at the time (this is around 2004), and noticed that the IDE used something called SWT (Standard Widget Toolkit) which promised "near native startup times". It broke from the typical Java pattern by having different distributions for each platform, as it used JNI to access the native UI libraries. It gave us the edge we needed to make more responsive applications.
The Difficult Road
One of the big promises in the Java language was that it was "Write One, Run Anywhere". Back in the late 90's that selling point must have been the main thing that attracted people to the language. While it's true that it runs in many places, there were many difficult points along the road.
The Mobile Experience
JavaME allowed you get Java running on phones, but it was dealing with a bloated mobile phone market at the time. The rise of the smartphone and Android, despite it's fragmentation issues, have laid those demons to rest for most of us.
The Web Experience
Java has been a huge part of my professional career. I spent the first 12 years using Java day in, day out, to deliver my products and projects. I work with a number of different languages now, and often find myself thinking of how Java does something as the best example. Is this because Java is so well architected? Or is it because it was my first language?
Either way, whatever you think about Java, it changed the development landscape 20 years ago, where C++ and Visual Basic were dominating. It's an excellent entry level language for developers, and is enough for you to build an entire career around.