For my use cases, Java has all the wrong compromises:

- not high level enough to compete with Python/Ruby/JS/PHP, etc

- not low level enough to compete with Rust/D/Nim/Zig

- not specialized enough to compete with Erlang/R/Go/Julia

- not opinionated enough to compete with Lisp/Haskell

So why use Java ? It's good, it's fast, it's productive, it's well supported, battle tested and documented for decades with a huge pool of devs. And many companies already use it and the tooling is excellent.

But those are not sufficient reasons for me.

Python is older than Java, well supported, battle tested, documented with a huge pool of devs. But it's way better for high level stuff, data mangling, scripting, gluing, and for most web dev stuff.

If I want a distributed system or something with a lot of I/O, Erlang and Go will always be better than Java. Sure, they are less widespread, with all the stuff it implies, but for such a nice need, I will pay the price hapily: my goal is optimization for the use case. Same for stuff that needs to go fast or have a small footprint, I'm not going Java if I can go Rust.

If I want to have fun, Java is out of the loop. Better sharpen my inner weirdness by fighting with some exotic lisp. Why try productive ? I wanna enjoy myself, not run a business.

So Java is not a bad choice. It's an excellent tech. I just don't have a use case for it.

You say Java is not X enough to compete and then list things that Java has successfully competed with for years and continues to have a very wide lead over now, with the exception of Python and JS in limited circumstances -- the browser and machine learning.

The reason Java does compete so successfully is that it is high level and yet provides a virtually unmatched combination of performance, maintainability and observability (including always on, low-overhead deep profiling). None of the alternatives you mentioned come close. This is why it continues to be a top choice at Amazon, Apple, Netflix, Google, Alibaba, Uber, Soundclous, and almost all Fortune 500 companies. Saying it is "out of the loop" is either wishful thinking or delusional, depending on your perspective. It's just not the reality.

I'm just exposing my own selection criteria. It's not an absolute metrics.

I'm just saying, "to me, that's why I never end up using java".

Java is good enough for the vast majority of things. But so is Python.

And for specialized things, there are better choices available to me.

I'm not a Fortune 500 though.

> But so it Python.

For a very different definition of "good enough," i.e. unless you're working on a large codebase maintained by a large team for years, need high performance, or need deep low-overhead observability. So Java is "good enough" for a much wider selection of "serious" (large/mission-critical/long-lived/ high-performance) software.

> And for specialized things, there are better choices available to me.

That's OK, but in reality Java does very successfully compete with almost all the languages you've mentioned; it is they that, in practice, find it very hard to compete with Java.

Dropbox, instagram, google and youtube all were written in Python at some point. Languages don't scale, architectures do.

But even when the language became the bottleneck, they went the road of rust and go, not the road of java.

Again, not to say Java is not used by those companies with great success.

I bet it has more to do with their HQ location and feeling trendy than anything else.

Well, it's true popularity in tech is not necessarily related to quality.

Trending does have an impact.

But by experience, having a killer feature, and a good adoption story usually does much more.

E.G:

- PHP: easy to make web page in 2001

- JS: monopoly on the client side web

- Go: simple concurrency and binary production

- Rust: borrow checker

- Python: "yes, you can do that too. Also in 2 lines"

Etc.

re Python: "...All actual work is done by C libraries though, you could just as easily use BASIC instead"

Well, believe it or not, VBA is doing to have to do with Python competition in Excel in a not so distant future:

https://excel.uservoice.com/forums/304921-excel-for-windows-...

> While we don’t have specific plans to announce at this time, we have been researching the topic, conducting customer interviews, and are working with the Python team at Microsoft so we can build a plan that we think can address the scenarios you told us about and ensure it can run wherever Excel runs.

Any long time developer on MS stack knows that actually means "thank you very much but no".

They just hired Guido, the father of Python, at Microsoft.

So, I would not be so sure.

Yeah, because he did so much for Python tooling at Google.

Google is hugely invested into Python, especially the data engineering branch. TensorFlow, Jax, etc. Though they will probably get replaced by Dex lang, they even dropped Swift 4 Tensorflow to focus on Dex [1]. The language looks very Pythonic compared to Julia which is a 180-degree turn in terms of language design.

[1] https://github.com/google-research/dex-lang