When i was a student i lived in a heavily cockroach infested building(block). I remember that every now
and then the exterminator came. We had to move all our things to the middle of the room: books,
food, plates, records, tapes, pillows, etc. I recall the exterminator telling us
that there is really no use in him spraying buildings as this particular cockroaches
race had become immune (like you?) to all the possible (legal) poison they
could throw on it. I also remember being told, that if you see one roach, you can be
sure there are a hundred hiding the refrigerator. They are literally everywhere.
I remember once changing a lightbulb and out came a rainfall of dead electrocuted
roaches that found their way between the threads of the edison lamp and the fitting.
Cockroaches have been around for a while. The oldest fossils are
from 354-295 million years ago. So they have adopted to most disasters the world has seen.
So they are strong, survived many challenges were able to adopt, but nobody really likes cockroaches…
Java is a bit like that. Java is an old language. The language stems from the early nineties, but is really just a small evolutionary step from its predecessor C++. In fact one of the goals for Java was to be a replacement for C++. However you look at it, in the end the Java language is really a seventies language. Not much good has come from the seventies (except some good music, and it its very first year a great technologist ;)
Java is based on (now) old ideas. I was a revelation in the early nineties. I can almost remember the first day a colleague of mine introduced me to Java. It was simply shocking (then again i also recall seeing the first cockroach running alongside the baseboard of the wall. But today is 2014.
Java has never been able to innovate due to its backward compatibility. They really should have broke the umbilical cord at some version of Java (e.g, Java 1.4 or 5.0). I know there is now perhaps a possibility that in the far future java will lose its ball and chain and be able to move freely. But we are talking way beyond 2016 now.
Think about it what breakthrough innovation was the Java language able to pull after its 1.2 version. Sure Dynamic Proxies broke way for proxy based frameworks such as Hibernate/JPA, Spring and mocking libraries (at it always strikes me how many people don't know about dynamic proxies). Or perhaps you want to mention generics? (ah! you wisely changed your mind).
Java is a great language that survived many obstacles, but that was mostly due to frameworks and libraries. The language itself has changed extremely little due to its limitations on having to be compatible with code compiled when the Spice Girls First had their first number 1 hit.
It's time to move on. It's time to reach for a mammal in evolution. Stick to the Java Platform but ditch the language. It is not only that today's problems are different from 20 years ago (especially in the scale measurement), but also because we have very demanding requirements on continues delivery.
You need new tools! We, computers, users and our languages have evolved and it a once beautiful language is at the end of its evolutionary life span. Its time for a change and for it to make way for new languages (and with that new frameworks, tools etc). In fact that would not be a bad idea at all. Java should have decided not to continue as a language (Java 8 was a good moment, while keep supporting Java 7 for many more years).
We advise Scala as that makes the transition easy (both in paradigm shift as well as framework, libraries and tools shift). More next month on making that move!