It is fast - but not significantly more than Haskell, C#, OCaml, etc.
Java is a terrible language though. For example:
-The syntax for doing anything remotely functionalish (anonymous classes, function currying, etc) is completely unwieldly.
-Null pointers still being a problem in 2009 is an embarrassment. A simple Maybe Monad would fix it (of course, because of previously mentioned syntax problems - I need the language implementors to add syntactic sugar since library-based Maybe Monads are too ugly.
-Generics and autoboxing were a good start at fixing the terrible type/primitive system, but Sun has proved unwilling to break backwards bytecode compatibility, which leaves us with ugly hacks like type erasure.
The JVM is undeniably impressive (and even more so once we get invokedynamic and tailcall bytecodes) and I think that is going to be the true legacy of Java. Scala, Clojure, et al show amazing promise - in a few years I could see JVM languages dominating the field.
Using "terrible" to describe Java is precisely what I meant by dumping on Java.
A terrible language is a useless language; something not worth using; terribly broken; more trouble than its worth. Just the sheer volume of quality work by non-commercial open source developers provides a resounding rejection of that notion.
Java is an imperfect, perhaps flawed (but not deeply) language. But I guess that would find it in good company with many great languages out there.
And yes, The JVM is an impressive technology. (And do note that it is the Java virtual machine and not the Sun Virtual Machine, given that (the latest welcomed opcode developments notwithstanding) it is a virtual machine designed and developed to provide support for the language that informs its computational model.)
"Terrible" is a subjective description, so I don't think there's any inherent contradiction between you calling Java "imperfect" and "flawed", and smanek calling it "terrible".
Generally speaking, it's very difficult to compare programming languages objectively. What one person might think is a flaw, another might consider a feature.
That said, I'm personally inclined to agree with smanek. There are a lot of design decisions in Java's syntax that are, to put it kindly, rather bizarre and perhaps not particularly well thought through. "Terrible" would be the word I'd pick as well, were I asked what I thought of Java's syntax.
Comments
It is fast - but not significantly more than Haskell, C#, OCaml, etc.
Java is a terrible language though. For example:
-The syntax for doing anything remotely functionalish (anonymous classes, function currying, etc) is completely unwieldly.
-Null pointers still being a problem in 2009 is an embarrassment. A simple Maybe Monad would fix it (of course, because of previously mentioned syntax problems - I need the language implementors to add syntactic sugar since library-based Maybe Monads are too ugly.
-Generics and autoboxing were a good start at fixing the terrible type/primitive system, but Sun has proved unwilling to break backwards bytecode compatibility, which leaves us with ugly hacks like type erasure.
The JVM is undeniably impressive (and even more so once we get invokedynamic and tailcall bytecodes) and I think that is going to be the true legacy of Java. Scala, Clojure, et al show amazing promise - in a few years I could see JVM languages dominating the field.
Using "terrible" to describe Java is precisely what I meant by dumping on Java.
A terrible language is a useless language; something not worth using; terribly broken; more trouble than its worth. Just the sheer volume of quality work by non-commercial open source developers provides a resounding rejection of that notion.
Java is an imperfect, perhaps flawed (but not deeply) language. But I guess that would find it in good company with many great languages out there.
And yes, The JVM is an impressive technology. (And do note that it is the Java virtual machine and not the Sun Virtual Machine, given that (the latest welcomed opcode developments notwithstanding) it is a virtual machine designed and developed to provide support for the language that informs its computational model.)
"Terrible" is a subjective description, so I don't think there's any inherent contradiction between you calling Java "imperfect" and "flawed", and smanek calling it "terrible".
Generally speaking, it's very difficult to compare programming languages objectively. What one person might think is a flaw, another might consider a feature.
That said, I'm personally inclined to agree with smanek. There are a lot of design decisions in Java's syntax that are, to put it kindly, rather bizarre and perhaps not particularly well thought through. "Terrible" would be the word I'd pick as well, were I asked what I thought of Java's syntax.