I don’t fucking care it’s interpreted. I don’t fucking care people calls some languages “scripting languages” and thinks worse of them because of a name (what do you think these people are for labelling, then judging by labels?). I don’t fucking care it’s slower than C/Asm (any language other than C/Asm is slower than C/Asm, that’s the point: a contract trading execution speed for development speed and fun, which saves lots of money because developers are more expensive than hardware).

Java’s problems and the reason why I said it sucks are:

1. Lame ass object system shoved up your ass because the language doesn’t properly support any programming paradigm: not good OO (not even decent), not good good old imperative (objects up ass), functional programming not (really) possible, others absolutely impossible. You can’t model your application properly when the language designers are forcing stupid rules on you. Lacks multiple inheritance. Interfaces are a stupid hack to make the lack of multiple inheritance look less bad.

2. Yet built-in types are not objects. Way to go. This introduces wrapper classes (which are pure shit) and difficults heterogeneous collections.

3. Static typing with all sorts of anal rules that don’t really reduce development or debugging time, don’t really make stupid programmers write reliable code, and really pisses some smart programmers off.

4. Lacks builtin lists or dictionaries.

5. Lacks many advanced features you’d ask of a modern language which attempts to be productive: first class functions, first class classes, anonymous functions (now it has anonymous classes, not the same, objects up ass, etc.), static nested scoping (closures), mixins, introspection, dynamically created and modified functions, classes, and inheritance, …

6. Can’t override operators. If you think implementing a method “add” is less potentially dangerous than implementing an perator or method “+”, you’re pretty fucking stupid.

7. The standard library is a stinking fucking piece of shit, the worst ever created by man. It’s pure blOOat, making you create three instances of three different classes just to open a fucking file! And have a look at the two failed attempts at dates and the second one’s class hierarchy! Factory classes are pretty fucking stupid! sin, cos, tan are not methods! “a”.equals(“b”) is pretty fucking ugly (and a result of not being able to overload operators)! It’s all full of stupid shit and insanity, it’s hyperstructured, it’s overgeneralized, it’s ENTERPRISE.

8. It encourages terrible programmers and terrible ways which they call “best practices”, “enterprise-grade software” and “code patterns”. There’s a whole universe of wankery over the worst pieces of shit ever designed by man. Best practices considered harmful.

9. In practice, it’s terribly unproductive. Anything written in pretty much any other high-level language, from Lisp to Python, from PHP to Perl, from OCaml to Haskell is 5-10 times shorter, 5-10 times faster to write, 5-10 times easier to maintain, and 5-10 times more flexible.

10. Its world is full of businessspeak, pointy-haired managers (all worthless), and retards who went for a 20 hour Java “programming” course and think they can code. It has a terrible community, I’m starting to think even PHP “designers” are better. And every site talking about Java doesn’t say (or know) shit, and is all about “scalable enterprise-grade Web 2.0 XML-based AJAX-based professional n-tier business solutions”, “discovering business logic”, “lowering the Total Cost of Ownership”, “optimizing cash flows”, “converting visitors into customers”, “maximizing profits”, and “best-practices”.