If the Java version does the same thing, but with less typing and unnecessary fluff, then it is indeed better.
If the Java version does the same thing, but with less typing and unnecessary fluff, then it is indeed better.
The quality of a abstraction dictates how clear you are able to think about things.
'Less typing and unnecessary fluff' is the difference between writing '100' in Arabic numerals or writing 'C' in roman numerals.
In the Java version, which is definitely not just an Arc<Mutex> but something more opaque and powerful, you let the runtime handle and optimize these things for you, because you really don't want to know. It would only get in the way of the essence of your program, because your program is decidedly not about expressing these things. Well at least the Arc, the Mutex part is not necessarily much better.
So it's not '100' vs 'C' but more like '100 apples' vs 'enough apples'. Both have their upsides and downsides. It certainly is a good thing that both expressions exist.
My guess is that in the long run the first is more successful. It doesn't require consensus about a target/problem. However, there are enough places who couldn't care less because everybody knows what enough apples are.
[1]: https://scattered-thoughts.net/writing/things-unlearned/