I think Java is a good language if your problem space is ok with the GC and some other quirks.
The problem space I've been in has issues with GC, so C++ or Rust are the main choices there (Go too, but not my preference).
I think Java is a good language if your problem space is ok with the GC and some other quirks.
The problem space I've been in has issues with GC, so C++ or Rust are the main choices there (Go too, but not my preference).
All I know is that I attend a lot of Java conferences and meetups, and I'm STILL waiting to encounter a flesh-and-blood human in real life whose employer really wavers between Java and Rust. That's like choosing between a Humvee and a submarine, their optimal problem spaces barely overlap.
You'd be surprised. For a lot of stuff Rust is a good fit, aside drivers and OSes, Java is too.
There are succesful full text search engines written in Java (Lucene, and Elasticsearch on top of it), there are succesful event streaming platforms written in Java (Kafka), there are succesful distributed data processing tools written in Java (Hadoop, Spark), databases (Cassandra), and very very high performance trading engines (LMAX), very high performing servers (rapidoid, smart-servlet), and other such things besides, all categories of which have been quite big domains for C/C++ (and thus something like Rust).
To me it's an indication that programmers are getting to run wild past the technical domain, after all trying to hire for a Java codebase vs a Rust codebase is enough to kill a company depending on the space due to salary expectations and availability alone.
The competition I am starting to see is between C++ and Rust, with the few teams looking at Rust loving it. I did recently help write a RFP response that noted software will be written in C++ and Rust, and the RFP was awarded to us.
I am in a different world though, as I am a contractor for the DOD. It's more like a lot of small to medium sized companies than one big company, which is why some groups can use Java and others C++ and others Rust.
I have the same problem of differentiating between hobbyists and professional experience, both on HN and when interviewing. I had someone tell me they knew Java, then found out they had done maybe 5 months of Java work and didn't know some of the most basic things.
As for myself, in terms of writing professional software for clients, I've done the following, in order of amounts worked: Java, C++, Python, Javascript, Erlang, R, Ruby, Clojure, C, Scala, and C#. I've done Rust and Elixir in personal projects, but not yet for clients. I plan to transition to a full-time Rust project in the coming years.
Java => Go
C++ => Rust
The Database and System software that was created in 2000s very much was based on Java. But modern, performant Database and System software is written in Go/C++.
Explains why there are no high performance production Java applications...