Ask HN: Avoidance of Java - problem or pattern?
In my case this comes from a few factors:
1) Past experiences with projects that went overly "Enterprise" with layers of abstraction that eventually turn the project into quicksand - once you enter you get sucked in never to escape.
2) Code that is excessively verbose, due in part to the nature of the language. It was once said that concise languages ruin your taste for others [1]. When you just want to get stuff done, patience for boilerplate wanes fast.
3) The JVM while an engineering marvel (to some), can be difficult to keep memory consumption in check, and emits some of the most unpleasant exception information I have seen (1000 line stack traces from a single JDBC fault). I have come to prefer an interpreter or a compiler, but not something in between.
The question comes from a regular experience of seeing interesting F/OSS projects get announced, followed my an immediate lack of interest once the terms "Java" or "JVM" are mentioned. This symptom carries into JVM based languages.
Am I being completely unreasonable, or is this a common malady?
[1] http://lukeplant.me.uk/blog/posts/why-learning-haskell-python-makes-you-a-worse-programmer/
4 comments
[ 2.0 ms ] story [ 26.4 ms ] threadJava shows the consequence of wide acceptance over time and the burden of history and legacy. I've watched Java evolve from a rather primitive virtual machine tied to an unambitious language, to an entity that, because of its wide acceptance, requires consideration as a contender even though it's not the most efficient language, VM or development option.
My advice is to look into things like Scala, which exploits the existence and wide availability of the Java VM but doesn't use the Java language. In essence it separates the machine from the language.
http://en.wikipedia.org/wiki/Scala_(programming_language)
+1. I think one of the main differences the OP will enjoy is that Scala allows abstraction without the heavy indirection penalty Java forces upon you.
There is tons of stuff going on currently, like scala-async, Slick, Scala Macros which are all worth looking into. Their approach of “good enough is not good enough” resonates well with me.
I personally don't like too much Java desktop applications, I prefer native UI based on Qt/KDE or GTK. But for server-side and command line, Java is perfect language and platform.