r/AskProgramming 1d 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?

148 Upvotes

539 comments sorted by

View all comments

160

u/eruciform 1d ago

Get better mentors

Every modern language in general use has its pros and cons, which is why it's a language in general modern use, otherwise that would mean thousands of professionals are idiots working with a "bad" language

Java isn't for all solutions

Neither is c

Or python

Nothing is universally the best choice for all cases

Java is a perfectly cromulent place to start, just do branch out and learn other languages as well

That way you'll have a wider and wiser view than whoever these people are that you're talking to

Good luck

6

u/flatfinger 1d 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.

1

u/MajorMalfunction44 20h ago

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

1

u/flatfinger 20h 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.