Java peaked with version 7

Next week sees the launch of Java 17. This is the 8th release since Java moved to its six-monthly release cycle. This means nine releases have taken place in the same time that it took to go from version 6 to 7.

But, personally, I think the best version of Java is Java 7. The first time I said this I was joking, having just wrestled with some very complicated code that someone had written using streams. But the more I think about this, the more certain I am that this is right.

I can understand the pressure to keep adding features to improve Java. I remember the noughties, when everyone said Java was going to be replaced by newer, cooler languages. Java might be verbose and clunky but it’s also consistent. Pre-Java 8, there tended to be only one or two ways of doing things, and code would look relatively similar between different companies. Being a simple language, it was easy for developers to follow what was happening. There was less space for clever code that junior developers couldn’t understand. 

Java 8 was exciting, providing new paradigms for Java. But it’s made code more idiomatic and it’s easier to write obfuscated code. Compare it with perl, a language that was intentionally designed to be expressive. It’s not used in many large-scale systems. 

I can understand the pressure to add new features. Sometimes Java is frustrating. But Kotlin and Scala have set out their stalls as advanced languages on the JVM. They’re compatible with Java too, so there’s a strong argument for keeping Java as the dull boring option. I might want to use Scala or Kotlin in my own projects, but where I’m collaborating with multinational teams working agilely (which, in practise, means no documentation) I like my Java code as simple as it can be.

Java 7 was a non release imo, it was mostly around lambda support for other jvm languages.

Like
Reply

To view or add a comment, sign in

More articles by James Burt

  • Amazon Q: Week Two

    My overall impression, after more time working with Amazon Q, is that it will take some work for a coding agent to make…

  • First Impressions of Amazon Q

    My employer has organised a 'Summer of Q', where a number of us signed up to play with AmazonQ. This weekend was the…

    1 Comment
  • Does Java Have a Future?

    I’ve been working with Java for 25 years. After a shaky time in the noughties, the platform has thrived, and a huge…

    4 Comments
  • The Importance of Blogging for Developers

    I started a programming weblog in November 2014 and have published 104 posts – a little under once a month. It has a…

    7 Comments
  • What I Believe About GenAI - and What I'm Doing About It

    I woke up on Sunday morning with the following question: what do I believe about GenAI - and what should I be doing in…

    2 Comments
  • The 'god class' microservice anti-pattern

    In recent cloud projects, I keep seeing the same Spring application anti-pattern. There are controllers for a number of…

    10 Comments
  • Mutation Testing can help write better unit tests

    I was introduced to mutation testing in my last job and I am very excited about its potential. Mutation testing…

    5 Comments
  • Effective Remote Work: A Review

    We’re now deep into the second year of what’s been referred to as “The Great Remote Work Experiment”. March 2020’s…

    1 Comment
  • DDD Conference, October 2021

    Last weekend I attended the DDD conference (Developer! Developer! Developer!) in Nottingham, going along with Mindera…

  • What do we mean by technical debt?

    Recently, I've been thinking a lot about technical debt. It's a great metaphor for how time is lost in programming…

Others also viewed

Explore content categories