Hacker News new | past | comments | ask | show | jobs | submit login

> But the reason it's still around is that it's core principles are oriented to code that sticks around.

You could equally say this of COBOL.

> They haven't yet looked back at code they wrote and said, "ugh, what the hell was I thinking?"

Ironically, "what they hell were they thinking" is exactly the reaction I have to even Greenfield code written using Spring Boot or any of the other annotation driven nonsense.

The idea that programs written in Java are more maintainable than programs written in (say) Go, where you can read what the program does end-to-end instead of having to guess at what garbage has been generated by Lombok or overridden by some random JAR on the class path is bizarre. Let's not even talk about Gradle.




Yeah, I'll defend Java, but I won't defend Spring. I have no idea what they were thinking.

A lot of external Java framework is about inversion of control. It looks good on PowerPoint slides, but I think it's horrific to maintain (as well has hard to write). Inversion of control means you have no control, and the most common error case is "why didn't my code run?" But you can't use a debugger to tell you what didn't happen. Any breakpoints have to be set inside the framework code, which is open source but is not intended for your eyes.


Yeah, spring was and still is, an abomination. Spring boot also. But it's not a requirement even if many Java projects fell into that trap.


My opinion is that Spring usage should be minimised as much as possible but it is a matter of fact that Spring is not Java.


Spring may not be Java (The Language), but it absolutely is Java (The Ecosystem).


It is mainstream Java, though.


Yes, it (Spring) is. However its current scope creates more problems then it solves.


//go:generate

Yep no magic...

Have you ever read Kubernetes source code?


I have (in depth, often under the gun of a production outage).

Kubernetes is not a good example of idiomatic Go in any sense. Perhaps Spring Boot and friends are also not good examples of idiomatic Java, but they are absolutely the common case of what is found in the wild.


Just like Kubernetes, and its related ecosystem at CNCF are the main raison dêtre why many of us put up with Go.


The difference is prevalence.

Kubernetes is a single (bad) Go project. Every piece of Java I ever see is AbstractFactoryProxyBean nonsense with annotations all over the show.

I don’t know of a Go project where I can’t start at main (for a given program) and work out how it works without a bunch of ecosystem context. I can’t think of a single Java program where I can.




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

Search: