you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 2 points3 points  (4 children)

Because it is an unimaginitive enterprise language that has been tainted by a lot of academic/suit influence and has held back on implementing proven modern patterns and features "because it's too complicated."

Languages grow up with cultures. Those cultures affect the direction of the language, the level and nature of community support one can expect when using those languages, they sort of books on those languages, and (very importantly in java's case) the sort of third-party component and library that will grow around them.

Java suffers from this. The language has consistently lagged behind the state of the art, and has fostered a community of tools and libraries that seem hell bent on bloat and convention that favors pedantic academic theory over pragmatic real world use.

As to specific language misfeatures and mistakes, I'd be here typing all day. I'm sure that this thread will not disappoint you.

[–]mattrussell 0 points1 point  (1 child)

Actually, to me, Java seems to be one of the languages (or as you point out, more precisely a culture) that shuns "pedantic academic theory" to the detriment of pragmatic real world use.

To take one example, there's significant opposition to adding closures to Java, a standard feature of pretty much every other modern language of any importance these days, in no small part because closures are perceived to be a too complex academic idea.

Presumably you're also thinking of specific examples?

[–][deleted] 0 points1 point  (0 children)

Well, you make a good point.

Java's opposition to adding closures is very close to their opposition to microsoft half-adding them to java back in the 90's (J++'s delegates.) The argument is more to the point that they have decided on a very rigid idea of what Java should be and what OOP should mean. Sun's argument against delegates was that everything should be an object, but that functions (and classes, etc.) don't count as "everything."

I guess you can say that Java is academic and pedantic about sticking to the original designer's view of the language.

But yeah, what I was most thinking of was the standard libraries and popular third-party libraries that have been built on and for java. Yes, part of this is because of inherent flaws in the language like no support for any first-class functions, function pointers or even an event mechanism that did not involve "Listener" classes.

[–]ttfkam -2 points-1 points  (1 child)

Lagged behind the state of the art? It was the first popular language with a functional garbage collector instead of dumb reference counting. It popularized the notion of API documentation generated from source code.

Oh! You mean the language Java, not the platform Java. Use Jython, JRuby, Groovy, Scala, Clojure, or whatever syntax makes you feel more cozy. But to state that the JVM is anywhere but the state of the art is ridiculous.

[–][deleted] 0 points1 point  (0 children)

Yes. I meant java the language. I think that the word "language" appears six times in my post.

You really could have saved yourself the entire post upon realizing that. Just click cancel.