Why Java Sucks
I hate Java because it's the only platform that makes sense in so many ways. Now, follow me here, Java as a platform is great because: It has a great set of tools along
with it, eclipse and the like have a huge set of integrations with the build system, your project, and java as a whole. It's a stable, very capable platform. You can set up
a massively multithreaded java server app, and the thing pretty much just runs. The JVM with JIT is pretty much fast enough for just about anything, you're not going to get
hard-realtime, but since you really can't get hard-realtime over random latency of the internet, it's not much of an issue. Being a garbage collected language means there
is a whole class of problems I can ignore, don't have to think about, and don't have to write code for. This is awesome because it lets me think about what the logic is
doing without having to worry so much about these small issues. So as a platform, Java is awesome. However, as a language, Java truly is horrible. This is why you hear so
much bad stuff about it. Here are the things that annoy me the most: It's very verbose and repetitive, this means that the smart bits of your code get drown out in the
deluge of type declarations, temporary classes and factories. Factory classes, particularly those that aren't declared static so you can just call a factory class function
out of the blue. Writing Java when coming from another high level language feels like you are stuttering, it is very repetitive. Boilerplate. Any time I'm writing the same
code again and again, it's distracting me from fixing the actual problem. Everything is a nail. The fact that everything is a class (except for the things that aren't) will
give you a rough time of things once you really start trying to be tricky. You can work around these with anonymous classes and reflection, but again, it's an extremely
verbose way of doing things that adds more code which clouds the actual important code.
Java is repetitive. You keep saying the same things, if your IDE can figure out the proper type definitions and arguments, you would figure the JVM could handle it.
Java is widespread only because developer companies like it. Easy replacement/hiring of new Java programmer, cheap
development, no catastrophic bugs and short time to market. If we speak only about these properties of Java, then it is not a bad language. But we all know that big Java
projects are monsters of inheritance, full of huge Java frameworks, RAM and CPU eaters, have horrible performance, etc.. In these terms it could be considered as a bad
language.
I hate the JVM. It's bloatware in constant all you can eat memory mode. I also hate the language. But the early days were atrocious. Not being able to do socket
multiplexing was agonizing. Oh, the atrocities I saw of forced one thread per socket was just amazing. That was just the tip of the iceberg. Let us not forget the whole
applet fiasco. And the AWT vs Swing vs whatever else. Then the different JVM's that ran your code differently.
I remember JVM 1.5 running older compiled code dead slow. It was just unusable. Ran its own compiled code fine. I could go on for days. Java was just a long road of pain
for me. Did they fix things?
I don't care. When I try to run JVM apps, they are bloated beyond recognition and are still slow regardless of how many Java fanboys try to state otherwise. To me, Java is
today's DOS. It's the first thing that newbies learn and after figuring out all the intricacies of getting something done, they don't want to use something different. And I
modded you up. Good points in there nonetheless.
The Java programming language and Java software platform have been criticized for design choices including the implementation of generics, forced object-oriented
programming, the handling of unsigned numbers, the implementation of floating-point arithmetic, and a history of security vulnerabilities in the primary Java VM
implementation, HotSpot. Software written in Java, especially its early versions, has been criticized for its performance compared to software written in other programming
languages. Developers have also remarked that differences in various Java implementations must be taken into account when writing complex Java programs that must work with
all of them.
'Java is shit'