The reason to be using Java in 2020 is because you are already using Java.
Now, unlike some others here I don't hate Java - having developed on it for over a decade plus having it be the core of my university experience I recognize the benefits it offers. The problem is that it has downsides, mostly from 90's legacy architecture, that its alternative don't have. Pretty much all of the cool features from Java 9+ are new features...to Java. Take Jigsaw for example - creating a dynamically sized runtime that has just the features you need, nothing more. It was exciting when it finally came out (the fact that it took so long also comes from Java's legacy architecture) because it as a problem that Java had for along time. Some of the alternatives either never had that problem in the first place (NodeJS) or had the problem but fixed it a lot sooner (.NET Core). With the exception of Fibers, there's nothing in the JEP pipeline that I've seen that isn't either already available or will be made available sooner on one or more of Java's alternatives.
What are in your opinion the reasons to not start using Java today, considering the latest features in the language, APIs, and runtime, since Java 8?
Fundamentally it's about longevity. Sure, you could start with Java today and it would probably satisfy your needs. But what about a year from now? Two? Five? By those points there will be new capabilities you might want that Java probably doesn't have and it's alternatives will. If you are already on a leaking ship you are going to try to keep it afloat, at least until you reach your destination. But if you are standing on the docks why would you choose to get in the boat that's already leaking?
And what makes you believe that the Java boat is leaking?
Because the trajectory of Java is downward when compared to the alternatives because it is getting new features slower.
Lets say I create the same app twice, one using Java and the other using .NET. In 5 years time I believe the best thing you could say is that the Java one is no worse off because the new stuff that .NET has that Java doesn't have doesn't apply to the app. And I'm struggling to come up with a scenario where the Java one would be better off.
The risk that your choice might not be good enough for the long run? That's getting into a leaky boat.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.