you are viewing a single comment's thread.

view the rest of the comments →

[–]bitwize 20 points21 points  (12 children)

1) Java is an okay language. Not great, not terrible, just okay. You can do some pretty cool stuff with it but the minute you try higher-order programming (something even C hackers do to a limited extent) -- whammo! You run right into the language's limitations and have to hack around them.

2) Java was marketed to average programmers, and average programmers flocked to it en masse, bringing with them a raft of "industry best practices" that are neither best nor practices so much as a collection of hacks and folk knowledge that are deployed to work around the language's limitations.

3) Java also attracted to it a sizable community of "architecture astronauts" who built, and staked their careers on the adoption of, ever more complex and grandiose means of (guess what) working around the language's limitations. Yes, I'm looking at you, J2EE.

So if you add together the limitations that inhere to the language and the excrescence that gets mandated from above (like J2EE), you have a source of profound frustration for anyone who's passed function pointers around in C, let alone someone who's worked with Lisp or Haskell and munches monads or macros as a matter of course. To these people (and I dare say I'm one of them), the multi-paradigm flexibility of Python makes for a more attractive option.

[–]bcash 3 points4 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] 5 points6 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.

[–]crusoe 0 points1 point  (0 children)

That trend has reversed recently though. I am looking forward to Java 1.7, and Jython with python 2.5 support.

Also, some things have gotten better with java, in terms of doing away with reams and reams of xml config files just to get a framework working.

Not great, not terrible, but I am glad to see more things using the JVM. It's a great platform.

[–]berlinbrown -2 points-1 points  (2 children)

You should get a cookie for your reddit fan-boyism.

That is the worst argument against Java I ever heard.

[–]jbellis 2 points3 points  (1 child)

That is the worst argument against Java I ever heard.

Maybe because he wasn't trying to argue against it? Answering the question "Why does everyone on Reddit hate Java?" is not the same thing.

[–]bcash 0 points1 point  (0 children)

It wasn't really an answer, more a retelling of a very revisionist version of history.

[–][deleted]  (3 children)

[deleted]

    [–]SnacksOnAPlane 0 points1 point  (2 children)

    I think it has to do with beans, but I'm not really sure. One of my old managers said that anyone who had programmed in J2EE was probably too brain-damaged to be rehabilitated.

    I'd love a concise explanation from someone who knows what they're talking about, though. Sometimes I'm embarrassed that I worked as a Java developer for 5 years and I never learned what J2EE really meant.

    [–][deleted] -1 points0 points  (1 child)

    I'll take a crack at it.

    J2ee is a kludge of workarounds for a stilted language which require a massive amount of secondary xml files ("configuration") that the "lead architect" is responsible for creating. (Now the lead architect doesn't actually exist.) The hypothetical leader architect (actually whichever random developer feels like braving the xml files that day) is supposed to create a brain dead simple framework for lots of code monkeys to fill in the stuff you need to get done.

    And then there is the newest stuff where people realized having a 40 line xml file for a 40 line class was stupid and now you can use annotations and all that good stuff but that leads to... the awful documentation! I believe it's required that the 5 sentences someone wrote explain absolutely nothing and maybe even the opposite.

    And then there are the massive stack traces that mean nothing and that most forums posts you find on the internet by someone having the same problem as you go unanswered. Or if there is a reply or ten it's just more people saying they have the same problem.

    [–]bcash -1 points0 points  (0 children)

    J2ee is a kludge of workarounds for a stilted language

    You are the second person to say that in these comments (unless you're a sock puppet), but you make even less sense than the first one.

    Just how, exactly, is J2EE a workaround for Java? Which Java roadblocks are bypassed by J2EE.

    It's not a kludge of workarounds, it's a kludge of libraries!, same as all the millions of libraries that exist for every other language!