Ask HN: Why Java ecosystem doesn't feel as vibrant as some other lang's ecosys?

6 points by rrishi ↗ HN
Based on my experience, other languages are a lot more in news than Java. Some of my observations :

1. There's constantly new frameworks, meta-frameworks, new language features being developed in the JS ecosystem. Some do criticize the churn in JS ecosystem (JS fatigue), but on the positive side it keeps the community active . Conversations around SSR, hydration strategies, reactive programming, functional programming, transpilers keeps the creative juices flowing. On the other hand, Java developers feel stuck on Spring.

2. Python may have lucked out here but pretty much most of the "hot" fields such as AI, ML and data science use Python. Also, Django brings its own die hard fans. If we ever do get to AGI, it will be written in Python. Java doesn't have the allure of having a "hot" field (except maybe big data tools). Neither Java nor any of its libs have have die hard fans or thier voices get drowned in a sea of die hard haters of Java.

3. Lisp and ML languages get praises in their niche ecosystems and have a lot of people that are absolutely in love with the features and the mindsets of those languages

4. C/C++ devs have a shiny new toy in Rust and for good reason too.

Unfortunately, Java just doesn't get the spotlight as much as all these langs. Is there a future for Java when the dev community is giving it such a cold shoulder?

10 comments

[ 2.3 ms ] story [ 26.2 ms ] thread
Js churn is the result of Javascript having a weak standard library and the system not being entirely settled yet. Java is very-well established. Experimentalism nowadays is mostly in the JVM or in other JVM languages. Now, if Rust counts for C/C++, shouldn't Scala/Clojure count for Java?
> Js churn is the result of Javascript having a weak standard library and the system not being entirely settled yet

I guess that's part of the reason but they have been also adopting new features that Java is slow to adopt (ex. de-structuring)

> shouldn't Scala/Clojure count for Java

Scala gets a lot of flak for not being easy to read. Clojure for all its goodies just never reached a broad audience and seems to not be growing anymore at a fast enough pace unlike Rust.

Firstly, as long as there is still a broad need for software engineers - there is a future for Java. Together with dotnet - it has huge market share of enterprise middleware, lots of web backends.

Its future in some segments is extremely safe while in others it has more competition. Whether it has a future for you depends on the kind of fields you want to work in.

In any case - once you learn a couple of languages (especially from a couple of different paradigms or layers of abstraction) - it becomes easier to pick up new languages.

> Firstly, as long as there is still a broad need for software engineers - there is a future for Java. Together with dotnet - it has huge market share of enterprise middleware, lots of web backends.

That's true, it's enterprise choice #1 though not a fav of devs.

Also - don’t discount all the new features JVM and Java have added or are adding: virtual threads, structured concurrency, FFI, class primitives, SIMD. JVM is highly compute performant given its GCd.

I’m not even a Java dev but I respect its place in the ecosystem and find evangelism quite irritating and normally, has some corporate backer(s).

> Also - don’t discount all the new features JVM and Java have added or are adding

It's true that over past 5-10 years they have put their foot on the accelerator and are adopting good features from other languages

Yeah I think virtual threads will give the JVM a huge boost, I am certainly looking forward to it. Personally, I find the async/await model harder to reason about than the thread-per-request model.
Technically speaking, it's hard for me to take anything away from Java, other than critiquing the object-oriented nature (Kingdom of Nouns) and some of the syntax. You can certainly build amazing things in Java.

That said, sometimes life is just based on a feeling that may not always be perfectly rational.

For me, Java feels like it represents a hell of a lot of shitty businesses that I don't want to be associated with. If there's a stereotypical shitty mid-size corporation out there that engages in shitty behavior and manipulates the H1B system and views programmers as fungible cogs and works on the most boring banal shit out there, you know almost without looking at them that they're a Java shop. There's no part of that universe that I want to be a part of. The only thing that made me want to take a half-look at any part of the Java ecosystem for future work is Clojure.

I can't speak for you personally but I think its simpler than that - Java is unfashionable because it's ubiquitous. It's the Ford of programming languages. Not every problem needs a Ferrari - indeed its bad for the organization to be building everything with Ferraris.

I do wonder whether someone has looked at the game theory of all this - how devs (and employers) pick langs and frameworks as a strategy to maximize their respective positions under competition.

It's also used by some pretty huge and non-middling corporations. I don't know why I'm defending it - I find Java a too verbose and don't use it personally- however if I were employing and needed to build anything that wasn't a game, an OS, embedded etc. I'd go with Java for large chunks of it because I can find good people to build, maintain and improve it - for years to come. I'd probably throw in some Go and perhaps C++ for compute bottlenecks.

There are lots of new frameworks, meta frameworks, etc happening in the Java world. It's not all Spring. Might not have made headlines but it exists and it's actively used and growing.

Examples: - frameworks / meta-frameworks: Helidon, Micronaut and Quarkus - new languages features: reactive programming, vector processing, virtual threads, polygon intro (GraalVM) and AOT (compile to native)

There are more standards e.g. Microprofile and more unity in the way it works. Less random projects that come and go with the hype. It's slow and steady. However this also raises the bar to get started.

A lot of Java projects definitely is still "old school" e.g. still uses google groups for discussions compared to say Slack or Discord. This doesn't give it the attention it should.