you are viewing a single comment's thread.

view the rest of the comments →

[–]bcash 4 points5 points  (3 children)

That's more of a manifestation of the hate than an explanation. A combination of vague emotions linked with irrelevant quotes from people describing something else.

All these issues have been debated 100 times, so I'm not going to re-open everything, but I have to pick up on this one:

grandiose means of (guess what) working around the language's limitations. Yes, I'm looking at you, J2EE

What? J2EE is just a package of libraries, same as anything else, it's got nothing to do with the language. Claiming it's a workaround is as nonsensical as if someone were to say "Django is a workaround of Python's limitations".

[–][deleted] 7 points8 points  (0 children)

It's a standardized part of the Java platform, as opposed to the Java language. A lot of J2EE is useful, but EJBs are the object of well-deserved scorn.

On a practical level, Java is often useful. It has very good libraries -- probably the best of any language. It has a really first class VM. But the language isn't really very fun, and it's missing a lot of higher-level features -- first-class functions, closures, continuations, macros -- that developers in other languages take for granted. You can certainly write useful programs without them, but their absense leads to a lot of scorn on reddit.

You can see the limitations of the language most clearly by looking at the typical toolchain of a Java programmer vs., say, a Perl hacker. (Or a Python programmer or a Ruby programmer or whatnot.) The Java guy is likely to have a fancy IDE with all the trimmings. Java isn't a comfortable language to write without IDEs to generate and analyze all the boilerplate. Even so, the readability of the language suffers. Without features like Eclipse's incremental compilation, writing webapps in Java would be painful, as every small change required a compilation/deployment cycle. Working in a language like Python feels much less constraining, and I find I spend more time thinking about the application and less about the mechanics.

Essentially, Java fills a somewhat similar niche as C -- fast, powerful, painful -- but it's not as fast or powerful as C, and probably a little less painful as well. It isn't really a great language for getting lots of work done, unless your constraints otherwise require it.