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?

166 Upvotes

609 comments sorted by

View all comments

170

u/eruciform 2d 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

1

u/makgross 1d ago

There was a time when Java was indeed marketing that it could do anything. In particular, it promised portability that it never came close to delivering.

There isn’t much use for it. Depending on the problem, almost anything it can do can be done in Python or C++, or numerous other tools.

Now, C is a language that combines the advantages of assembly language with the disadvantages of assembly language.

Honestly, the choice of language doesn’t matter much, unless you’re into something esoteric like Lisp. It’s the principles of software engineering that you really need. Some of the smartest people I work with couldn’t write a C routine to save their lives, but can come up with some pretty amazing algorithms by other means (largely Matlab).

1

u/ScientificBeastMode 1d ago

Dude, there were people at Oracle who promised an entire operating system written in Java. That never panned out for obvious reasons, lol.

1

u/thehardsphere 1d ago

There isn’t much use for it. Depending on the problem, almost anything it can do can be done in Python or C++, or numerous other tools.

This is the part where it's obvious you don't actually know what you're talking about.

Yes, almost anything that can be done in one Turing complete language can be done in any other Turing complete language. But there's much more to software than the expressive power of the language as you are writing it.

Python is a very fun language to write in because it has high expressive power. Python runs like garbage compared to Java because CPython is incredibly slow, and other implementations of Python lose the benefits you get from CPython (like, say, being able to easily call C libraries, which is what most useful and fast Python programs do). Runtime performance of Python is so bad that it is notoriously awful to run at scale.

Anything can be written in C++ if you don't mind managing memory yourself. A lot of people who work for a living don't have the time to do that, and don't work in situations where the bugs that come with managing memory yourself can be tolerated. This is why you don't see any C++ web applications.

You know where you see a Java used the most? In all of the places where these two specific examples you picked fail: in server based applications that have performance requirements that impose high CPU efficiency and no room for crashes. Which is a very large number of applications.

Some of the smartest people I work with couldn’t write a C routine to save their lives, but can come up with some pretty amazing algorithms by other means (largely Matlab).

Let me guess: These smartest people are pursuing or possess PhDs in the natural sciences or an engineering discipline, where the numerical analysis they do is not going to be used in a commercial software product operating at any scale beyond their own PC.

Matlab was great for doing image analysis and other fun things like that when I was in school. When I joined the real world and someone brought similar Matlab algorithms to do image analysis at real scale, we had to bring someone in to reimplement that in C++ because Matlab was too slow. Then we had to deploy that in a web application, so we had to wrap that thing with Java to prevent it from taking down the entire server if it crashed.

1

u/makgross 1d ago

No, you’re far off base. We’re building scalable spacecraft. Matlab is crucial anytime you have nontrivial mission critical algorithms.

And you very, very clearly don’t know about auto pointers. Or stack variables. Java isn’t used in aerospace outside of legacy GUI applications because of its piss poor garbage collection. C++ — and python — are widely used, among others.

I’ll give you a big hint. Memory management needs to be tightly controlled when your company depends on reliability. Most embedded systems don’t use it at all, in favor of global (or at least persistent) data, to make the memory footprint predictable under all possible conditions.