Java is Trash

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' ok
Programming languages comparison
Language Icon Original Purpose Imperative Object-Orientated Functional Procedural Generic
Go language-Golang Application, web, server-side, system, general, python++, pretty much everything yes Can be viewed as no yes yes
C language-C Application, system, general purpose, low-level operations yes no no yes no
C++ language-Cpp Application, system yes yes yes yes yes
C# language-Cs Application, RAD, business, client-side, general, server-side, web, game programming yes yes yes yes yes
Python language-Py Application, general, web, scripting, artificial intelligence, scientific computing yes yes yes yes yes
Java language-Java Application, business, client-side, general, mobile development, server-side, web Nothing yes yes yes yes yes