To mark Java’s 20th birthday this week, we’ve been chatting to some of the most passionate people in the sector, charting their diverse experiences with the Java language, and where it’s taken them. This Friday, we’ve got a lovely long-form piece from JetBrains Engineer and Evangelist Trisha Gee. (This is part 3 of our series – here’s part 1 and part 2)

I first started using Java back in 1997, when we were the first year at university to switch from learning 7 languages in the year one, to using this this new fangled programming language called Java for everything. I’d been using Turbo Pascal before that, so this was a big cultural shift for me.

Firstly, this Object Oriented malarky was a bit tricky to get your head around – in my Pascal school project I’d maxed out the number of lines allowed in a single file, so I’d had to put the rest of the project into some sort of module thingie. Honestly, procedural programming is much easier to understand than slicing things into Objects which contain their own behaviour[1]

Secondly, there was the issue of IDE. Or lack of it. Writing code in a UNIX text editor, then using the command line to compile it, seemed a looong way away from a nice Windows program for editing, compiling, and UI development. And not a step in the right direction either.

Finally, there was the cross platform thing. As one of the lucky few with a computer at home, albeit some cobbled-together Pentium made up from bits scavenged from old systems, I obviously wanted to be able to do my assignments in my room, not only in the computer lab. So I had the joy of getting Java set up on my Windows machine.  This was a hard lesson in environment variables and classpaths.  I thought if I never saw the word classpath again, I would be a very happy person.

I remember doing my first assignment in Java.  Thankfully, my lecturer was old-school and wanted us to write a text-based adventure game, but in good OO style. For me, this was a fun exercise, having written plenty of these in BASIC back in the days. The hard bit was not the syntax but getting to grips with creating classes like “Room” and “Monster” containing their own logic, instead of using a lovely spaghetti of GOTOs.

For those new to programming, given this was 1997 and these computer games had been long dead already, this was a very tough challenge, but I found it a big confidence boost to be able to help these guys with the basics.  I worked late into the nights on this assignment, and  I remember coming back to my room, trying to sleep and thinking in “dot” syntax: “bed.sleep()”, “eyes.close()” and so on.  Little did I know this was just the start – the next 20 years of my life were going to be dominated by this programming language.

After a brief dalliance with ASP and VB, with a side-mission into Microsoft’s J++[2], I found myself in a series of roles using Java, extremely thankful that the university had taken that big gamble and put all its eggs into that particular basket.  The fact that it was free, cross-platform, had a growing open source community and caught up quickly with Microsoft via JSPs and Servlets made it the default choice for companies large (like Ford Motor Company which I spent four years working for) and small (like the not-for-profit I worked for as a graduate).

For me though, the time I learnt the most and had the most fun with Java was working for LMAX Exchange. I’d worked in finance for a while, and had bought the tale that you had to use C or C++ to do high performance code in the banking world. But here was an upstart of a startup doing everything in Java! Not even using a trendy new JVM language, or functional, or anything!

Turns out that if you write good, clean, readable code, the JVM is great at running very very fast. And the beauty of this is, not only do you have fast, good, clean, readable code, it’s also extremely testable. I also learnt how to really use an IDE – pair programming with people who knew their way around IntelliJ IDEA taught me that it’s so much more than a text editor with syntax highlighting. I have no idea how I lived without the refactoring tools. Most of all, I learnt that you learn waaaay more working with fantastic people than you’ll ever learn reading books or poking around the internet[3].

Ten years ago, I had just heard of a new, lightweight framework called “Spring”[4]. Spring MVC changed the way we wrote web applications. I particularly remember how easy it was to get pretty nice validation out of the box.  Ten years ago, I was also getting to grips with generics, all those little chevrons appearing all over my code. Such a relief not to have to call my List variables things like nameStrings any more.  Back then, there was no way I could foresee: lambdas coming into the language; the rise of JavaScript frameworks for pretty, reactive UIs; JavaScript on the server (on the server?!); and the rise of many many different JVM languages.

In the near future, of course, Java 9 is on its way[5] and Java 10 currently looks very interesting.  In ten years time, I’m sure Java-the-language will still be very much alive.  Will it be the COBOL of 2025? Or will it still be the staple of many enterprises? I think that depends upon it continuing to evolve, with the delicate balance between backwards compatibility (which is so appealing for large organisations) and embracing new paradigms (which can make programmers lives so much easier, not to mention interesting).  But I am sure Java as a platform will be very much alive – OpenJDK is, well, open, and although it’s a slow process to turn something as mature as Java into a fully open source project (with access issue trackers, easy to build, easy to contribute to and so on), progress is being made here. Once something’s out there, it’s not going to go down without a fight, especially with so many organisations, projects, libraries relying Java. And JVM languages will continue to be born, evolve, and, just like evolution in the real world, some will no doubt fade away as needs and styles change.

I don’t know what the future of Java is, but all the current indications suggest it does have a future, and a long one at that.

[1] This, it turns out, is Very Not True

[2] Don’t judge me, those guys had an IDE miles ahead of anything else on the scene at the time, and you could get ASP pages talking to COM objects written in Java before JSPs were around

[3] That’s not to say those activities aren’t also valuable. It’s just that reading is one thing, being forced to do is another.

[4] Note: this is not the current reference documentation! Since this is a nostalgia post, I’m showing what we had to work with In Those Days.

[5] I’m looking forward to the REPL, and I’m keen to see what impact Jigsaw will have