I have been writing Java for a living for about 13 years. Prior to that I was doing C++.
If you have no case to use Java, use something else that takes your fancy. Java's strengths are not for the casual user. If you want a fun language to learn and do smaller projects, there are better choices.
If you want to run a company with a serious server side architecture, Java is a great choice.
I will repeat a previous post of mine for why. Java is a straight forward language with fewer gotchas than some others (but definitely not none). In our monorepo we have code that does not care terribly much about latency or garbage, while other code that cares very much about latency and garbage. Our hotpath is GC free and the code is written with this in mind. Yes, it is a slightly different style of code, but it is still Java and our developers don't have a lot of trouble jumping from one area of the codebase to another. That means we share many of the same abstractions, the same build, the same monitoring, the same deployments (sort of), and many other things and we only ever have to hire good Java developers. We can write very different styles of application, in the same codebase, very easily.
These days, garbage is also mostly a non-issue if you've got any sort of awareness and competence. With ZGC or other choices, even if your app generates a lot of garbage, you can still achieve very high performance. Again, to repeat, this means you can write code without caring _all that much_ if you're happy with "good enough". And you can tweak it later because there are just so many good tools for performing runtime analysis. And if you do care massively about performance, Java has it. It is possible to write Java code that will come close to C or C++ performance, and you don't need another language, build system, etc to achieve it.
That alone is probably the biggest selling point to larger firms in this space.
And on top of that, in my industry (finance), Java is quite ubiquitous, which means portable skills. It's attractive to developers because they're not risking a dead end skill. They know Java is everywhere in the industry, they're transferable, and finding talent isn't an impossible task. This is self reinforcing, meaning the choice of Java is as strong as ever.
Oh and modern Java is much nicer to work with than old school Java, and becoming better. We're very confident with our choice and we can see a good future ahead for the language.
If you have no case to use Java, use something else that takes your fancy. Java's strengths are not for the casual user. If you want a fun language to learn and do smaller projects, there are better choices.
If you want to run a company with a serious server side architecture, Java is a great choice.
I will repeat a previous post of mine for why. Java is a straight forward language with fewer gotchas than some others (but definitely not none). In our monorepo we have code that does not care terribly much about latency or garbage, while other code that cares very much about latency and garbage. Our hotpath is GC free and the code is written with this in mind. Yes, it is a slightly different style of code, but it is still Java and our developers don't have a lot of trouble jumping from one area of the codebase to another. That means we share many of the same abstractions, the same build, the same monitoring, the same deployments (sort of), and many other things and we only ever have to hire good Java developers. We can write very different styles of application, in the same codebase, very easily.
These days, garbage is also mostly a non-issue if you've got any sort of awareness and competence. With ZGC or other choices, even if your app generates a lot of garbage, you can still achieve very high performance. Again, to repeat, this means you can write code without caring _all that much_ if you're happy with "good enough". And you can tweak it later because there are just so many good tools for performing runtime analysis. And if you do care massively about performance, Java has it. It is possible to write Java code that will come close to C or C++ performance, and you don't need another language, build system, etc to achieve it.
That alone is probably the biggest selling point to larger firms in this space.
And on top of that, in my industry (finance), Java is quite ubiquitous, which means portable skills. It's attractive to developers because they're not risking a dead end skill. They know Java is everywhere in the industry, they're transferable, and finding talent isn't an impossible task. This is self reinforcing, meaning the choice of Java is as strong as ever.
Oh and modern Java is much nicer to work with than old school Java, and becoming better. We're very confident with our choice and we can see a good future ahead for the language.