“Java has evolved from a groundbreaking, revolutionary language platform to something closer to a modern-day version of Cobol. In just 15 years”. (from Geriatric Java struggles to stay relevant)
As a Java developer myself I can totally appreciate this. In fact I remember saying exactly the same thing just a few months ago (to an ex-Sun developer), and it seems that everyone is coming to the same conclusion, if they hadn’t already. After just a taste of some of the more ‘modern’ languages such as Ruby, I find myself struggling to come up with Java solutions anything close to the elegance that these ‘cooler’ languages provide – not to mention the order of magnitude reduction in the amount of code written.
So why has Java become so old and frustrating, when no so long ago it was the darling of the tech industry.
Old clunky syntax is surely a major part. Java’s power is in its library support, and not in its syntax which is frankly overly verbose, overly strict and generally inelegant. Admittedly the first two points mentioned make it a good language for newbie coders as everything has to be explicitly ‘put out there’ and you get your wrists slapped by the compiler if you try anything a little out of the box! But as far as expressiveness goes, this is where it fails. Its strictness is the death of creativity (Groovy builders / DSL’s anyone?).
Lack of closures, is closely related to the last point. Once you use closures in your coding, you’ll never be able to think the same again, they just give you so much more flexibility it’s ridiculous. Ok, so you can kind of achieve the same with inner classes, plus they’re being put in for the Java 7 release, but what are the odds they’ll be unnatural and forced, as generics were in Java 5.
Concurrency has been a major concern of mine for some time now. Chip makers, such as Intel, have given up on Moore’s law and are now using the tactic of multiple low powered cores in a processor, rather than a single high powered core. This means that all our single threaded Java apps will actually run slower on newer processors than ones from 2-3 years ago (as the single thread is confined to a single core). I’m sure if you’ve attempted concurrency in a Java app (without the use of a framework, such as the servlet framework) then you’ll appreciate how complex, and confusing it can be. This is one of Java’s big downfall’s, and a major problem for the future, whereas newer languages such as Scala, Clojure handle this quite elegantly with, for example, transactional memory.
So what is the future?
Well as I mentioned earlier, I believe Java’s power is not in the language, but in the JVM and libraries associated with it. Millions and millions of apps have been written for Java over the past 15 years, and it’s almost guaranteed that if you need to hook into another system there is already a library to do it. Need to write an app for a supermarket system, use JBarcode; need a machine learning library, look no further than Apache Mahout, etc.
To hook into this vast collection of code (without using Java itself), it will be the newer, cooler JVM languages that will carry on Java’s legacy, while the language itself quickly becomes the next Cobol, or Pascal. Any JVM language can interact with Java’s own bytecode, so none of this rich history is lost, nothing needs to be re-written, but we also don’t need to hang onto old syntax and conventions to achieve this.



![]()
… and what of the non-JVM languages. What are the cool contenders there? which languages will the young new hackers be using? I know which two are on my learning list,


any other recommendations?
Interesting Posts
The Struggle to Keep Java Relevant
Geriatric Java Struggles to Stay Relevant
Oracle Looks to Keep Java Interesting and Attract Young Developers
This is an interesting post. I am not sure that you predictions will pan out though. COBOL is still actively developed and so will Java be for decades to come. Writing an application in one language and then continuing to develop it and enhance it in another might make sense to a single person, but does not scale well to the organisation level.
I suspect that the age of cool wins was 1988->2008, the mood now is to get something good enough and just use it. Scala etc are interesting but I will be shocked if they become major players. Think small-talk, scheme etc -> all cool, non became as big as people thought.
All the best – AJ
Thanks for your input. I think you’ve raised an interesting point with the small-talk / scheme comment. As you said, they were ground-breaking new languages with new and exciting ideas, but were never big themselves. Rather than this they fed into, and inspired, some of the larger players, such as Java.
Maybe then, rather than new ‘cool’ languages obliterating the old behemoth’s and taking over, their purpose is to inspire and push them further – as with Java and generics/closures. I’m sure Java version 8 or 9 will pull inspiration for better concurrency too from, for example, Scala.
I think we have an interesting situation at the moment, because (as far as I know) it has never been so easy to mix languages now that they can run and interact with each other so easily in a virtual machine (through the common language of byte code). I have a feeling polyglot programming will become a lot more common, and we will be able to utilize the best aspects of many languages rather than settling for the happy medium of a single one.
Whatever happens, I’m pretty excited to see how it all pans out over the next few years.
Cheers!, and all the best!