When I was a young programmer, COBOL was the primary “enterprise” business language. It had a few advantages: everyone knew it, hardware supported it, libraries extended it, no one got fired for using it.
There were several other languages out there, that were used for various projects – FORTRAN, C, Pascal, Ada , to name a few big ones.
But it didn’t matter for “enterprise” software.
In the mid 90s, two things “exploded” – the Internet (because of the World Wide Web) and Java. Over the next decade or so, Java essentially took over as the “enterprise” software leader. Other languages had tried and failed. Java succeeded almost despite itself – the EJB constructs were incredibly clumsy and overly-complicated, it wasn’t super fast, and the language was (and is) often clunky.
But Java came with the Internet in its DNA – and as the Internet exploded, COBOL was simply not equipped to keep up.
Java succeeded because it rode the coattails of the “next big thing” all the way to glory. COBOL simply wasn’t the safe choice anymore, because it was clearly obsolete.
Over time, Java became the safe choice, the one with the libraries that everyone knew.
When you talk about a language displacing Java as the dominant “enterprise” language, you have to have the second part – you need a major upheaval that makes the world realize that Java isn’t the safe choice anymore.
So the key isn’t the features of your language. It’s finding the things that the language can do that Java can’t, and in such a way that it’s obvious Java won’t be able to do it for a long time.
I know Java, I make a living knowing Java, but I also know that it won’t last forever. But you’re probably not going to replace it anytime soon.