Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

i saw the title and thought "java", then loaded the story and in the first paragraph found a java apology. my suspicions immediately confirmed.

lots of really sharp people work in java, what is it about java that encourages this? is it the aggressive object orientedness of the language? or is it maybe the really strong ides/tooling that people use that encourage creation of lots of classes so that nice little tree view on the left gets populated with things that look like they should go there? or is it the design of the core libraries and j2ee that nudge people in that direction?

why does the java universe have more frameworks than programs and why do they all seem to want to pack your brain with so many useless abstractions that your skull wants to split open?



In a time before Rails and Django and way before Nodejs there were not that many programming languages available to do big backend or web projects. Java and C++ were the obvious choices as those languages were available, being thought in schools and used in the industry.

Both languages lean heavily on Object Oriented principles. It was around then that books like Refactoring, Clean Code and Gang of Four design patterns were popular. Maybe the Domain Driven Design book as well. Dependency Injection.

JSON wasn't big yet, XML everywhere, SOAP and Corba for RPC. Applications weren't run standalone like they are now, instead they were served by application servers like Glassfish and Tomcat.

Java jumped on that enterprise bandwagon. J2EE standardized a lot of things like those application servers and introduced concepts like Enterprise Java Beans. Frameworks like Spring and Apache Struts became popular as they handled all the common stuff.

It was also around the same time that Extreme Programming, Pair Programming, Test Driven Development, Agile and Scrum were massively adopted in software projects.

The whole Java enterprise framework thing was a child of its time.

Then later frameworks like Ruby on Rails and Django entered the scene. Leaving a lot of the "legacy" stuff behind and improving on the annoyances of J2EE. The Java frameworks adapted and started modernizing. Configuration and DI moved from XML to annotations, SOAP was replaced by REST and JSON, instead of hosting applications on application servers, the application servers moved in-process as libraries.

Of course Java being Java with its focus on backwards compatibility, all those new features and improvements were added alongside the old stuff. Adding to the bloat of the frameworks with abstractions on top of both old and new methods under a common interface.

Meanwhile new frameworks and languages popped up. From scratch frameworks that learned from the old ways and left all the legacy behind, only supporting modern features.

Java and Spring might not be the most popular choice in 2021 but I am convinced most of it was all necessary evolution to get where we are now.

All that being said. I have since moved on from Java to Kotlin but modern Spring (Boot) is still my go-to solution when I need to write a backend application, and I suspect it will stay that way for a long time.


> In a time before Rails and Django and way before Nodejs there were not that many programming languages available to do big backend or web projects. Java and C++ were the obvious choices as those languages were available, being thought in schools and used in the industry.

you forgot perl, where perl plus a handful of database and session management cpan modules were kind of the ruby on rails of the era. (with mod_perl on apache as the application server, of course) perl was huge in infrastructure, but also powered quite a few massive web properties. the tradeoff arguments were interesting... while static analysis was weak, developer productivity seemed to massively overshoot what you'd see in java teams. although long term scaling and maintainability probably did suffer.

> It was also around the same time that Extreme Programming, Pair Programming, Test Driven Development, Agile and Scrum were massively adopted in software projects.

i remember being doing a training and the instructor preached all these gospels. i asked them why they weren't used in open source so much and they replied that open source software was okay, but that all the best software was constructed with these fancy philosophies and was hidden inside of companies. that was when i stopped paying attention to this person.


Obviously the more people using a language, the more 3rd party libraries/frameworks proliferate, of course, and Java is very popular.

But: Technologies are separate from their cultures. You might think the tech enforces its own culture, but that's a half-truth at best.

Most language designers are pragmatists at heart, and inasmuch as they remain leaders, that sense of pragmatism is cultivated within the community around their language. For example, Python's creator - Guido VR - remains a very emphatic leadership figure within the culture, so that it's a culture big on pragmatism, not just because of Python the technology, but because of Guido's leadership. Also ref. Rob Pike, or in a different technical sphere, Linus.

With Java, James Gosling started receding into the background when "Enterprise Java Beans" came out, because he knew that was garbage tech and he was being shushed by the corporate honchos, so a leadership vacuum appeared in his absence. Any and all asshats proclaimed themselves the experts on what programmers really need and started pushing a lot of junk frameworks that the community happily adopted, being readily impressed by the self-confident asshats, and really, just about anything compared well to EJB.

So nowadays many folks would find it hard to believe that the creator of Java was a pragmatist at heart, but yeah, he was; he just didn't stick around as a leader.


Article is from 2005. Java has lost mindshare since then.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: