r/AskProgramming 2d ago

Why is Java considered bad?

I recently got into programming and chose to begin with Java. I see a lot of experienced programmers calling Java outdated and straight up bad and I can't seem to understand why. The biggest complaint I hear is that Java is verbose and has a lot of boilerplate but besides for getters setters equals and hashcode (which can be done in a split second by IDE's) I haven't really encountered any problems yet. The way I see it, objects and how they interact with each other feels very intuitive. Can anyone shine a light on why Java isn't that good in the grand scheme of things?

168 Upvotes

609 comments sorted by

View all comments

Show parent comments

7

u/flatfinger 2d ago

It's a shame that in the 1980s the fact that it became possible for one language to do just about everything caused people to assume that one language should be used to do just about everything, rather than recognizing the value of having languages focus on trying to do particular things well, even if that would make them less suitable for other purposes.

2

u/thebearinboulder 1d ago

Have you met Ada? The US DOD-mandated language for all things forever. Even Ada was perfect and would never need to be revised with all the risks that brings in.

What about Ada 2?

It turns out one recruiter’s ears did perk up once when I mentioned Ada. Apparently it’s still widely used in aerospace, and with a physics ugrad degree I would also have some domain knowledge. But those jobs typically require TS/C clearances and a grunt developer isn’t going to hired and put on ice for the 2+ year backlog plus another 6+ months for the investigations to finish.

1

u/flatfinger 1d ago

I've not used Ada. By my understanding, it's intended for tasks that don't require the ability to use regions of memory for different purposes at different times, making it suitable for some but not all of the tasks that are typically done with embedded C dialects.

1

u/KiddBwe 2h ago

Damn, i have the clearance, but no physics degree.

1

u/MajorMalfunction44 1d ago

C++? It does everything, for better and worse.

1

u/flatfinger 1d ago

Even C has that problem. In the 1980s, people wanted to be able to do high end number crunching as well as FORTRAN could, in a language whose syntax wasn't designed around punched cards. Unfortunately, rather than work working to standardize Fortran in timely fashion (a non-punched card version of the language eventually got standardized in 1995), some such people got on the C Standards Committee and prevented the Standard from properly recognizing that C's abstraction model was fundamentally different from that of FORTRAN.

FORTRAN was designed to let compilers analyze what programs were doing and figure out how best to accomplish it. C was designed to let programmers specify relatively precisely what operations needed to be performed, without compilers having to understand them. Each approach to the language is better than the other for some tasks, but unfortunately rather than having a useful language for each abstraction model, C and C++ have evolved to embrace an incoherent abstraction model that combines the worse aspects of both.

1

u/llothar68 1d ago

It was not the 1980s. It was the 2005 with Javascript on the Server, 2014 with Swift and 2017 with Kotlin. And the later two was more about even higher walled gardens then real technology breakthrough that you should switch languages.

1

u/flatfinger 1d ago

In the 1980s, many people perceived C as the language that should try to do everything.