The Gist of It

The release notes are great, but javaalmanac.io gives you a full picture with a clear focus on language updates and API changes.

Keeping up with Java Updates

Lately, I’ve been trying to learn more about the Java 9+ language features and API changes. I noticed that most resources that come out of a Google search are blog posts or articles, like Baeldung’s New Features in Java. If it was earlier in my career, this would have been good enough for me. However, the more experience I got, the more I realised that random content on the internet would only get me so far - instead, I started to look for official documentation, release notes, etc.

It probably has something to do with confidence - the more confident you are in your own abilities and understanding, the more you prefer to do your own exploration, rather than delegate it to random folk on the internet. I’m not trying to say blog posts or tutorials are all bad, but here are my gripes with them:

  • they might be of subpar quality;
  • their scope might be too narrow;
  • with the different Java releases, I might have to find multiple posts and piece together the information I’m after while still having to account for the previously listed drawbacks.

So, if I don’t want to offload the responsibility for my exploration and subsequent learning - what is the “grown up” way of finding out about new Java features? Let me walk through the process I took to find out.

Learning About Java 11

I went to look at the release notes by Oracle and they’re actually pretty good! In terms of language features, I could see things like JEP 323: Local-Variable Syntax for Lambda Parameters, and in terms of core libraries the new Collection.toArray(IntFunction) Default Method. Looking around, I also found pages like Java Language Updates which boils down just the language specific updates - very nice! Another page - Core Libraries - discusses the core libraries (duh!), but this is where things got confusing for me.

Not in that page, nor in any of the other pages I listed above, did I see any mention of the new String::isBlank method or the String::lines method. I also looked through the Open JDK’s pages for Java 11, but I didn’t find anything there that the release notes didn’t already have. Short of combing through the JDK Jira, how was I supposed to find out about these changes? While it was probably the right thing to do for completeness sake, I felt like this put me back at square 1, as it was unlikely for me to do that with every Java release.

At this point I decided that I’m probably missing something and it’s time to check in with other people to see what their process was. I typed up a post in the r/java subreddit and was just about to share it when I saw that someone had posted pretty much the same question the day before.

Most of the answers there were great, but I was already aware of most of the resources, and some of the suggestions, like keeping track of mailing lists, seemed unattainable (maybe I haven’t grown up enough for that!). The one answer which struck me suggested a website called javaalmanac.io.

I was skeptical at first, since the whole point of this was to find an official resource, not to rely on random websites on the Internet. How wrong I was - this is by no means a random website! It is maintained by Marc Hoffman, who is a Java Champion. If I had to trust someone to curate and document the language features and API changes of each Java release, it would be someone like that.

I’ll leave it to you to explore the almanac, but here are some features which make it stand out:

If you didn’t know about the Almanac, I hope you’ll be as glad as I am to have this resource in your disposal. If you already knew about it - then you just read a whole blog post that probably thought you nothing. Sorry! Damn blog posts!

Further resources

If you think I’ve missed something, and I’m being a dum-dum about this and there are better resources out there, do let me know! I’d love to expand my toolbox further!

Happy coding!