5 ms·
As a language, Java is just that, a very capable language. The JVM is full of great engineering, and when properly tuned, is a very powerful compile target. Wh
by nobleach 11y ago
As a language, Java is just that, a very capable language. The JVM is full of great engineering, and when properly tuned, is a very powerful compile target.
Where things start to suck is what seems to surround Java. Years and years of XML configs, Maven and Ant processes. Devs whom haven't been allowed to read about new advances.... I was at a Java user group about a year ago when Venkat Subramaniam came to speak about functional programming. This was right around the time when DHH made his assertion about unit testing. Venkat made a joke like, "and as we learned this week, we no longer need to test our code". No one got the joke. A room full of at least 200 developers and no one got it... because they probably spend most of their time in a cubicle thinking that these new-fangled technologies will die someday, and we can all go back to writing crap like we did in 1999. (Other fun assertions from that user group had to do with JSON being horrible and XML being a far better format for web communication)
It highlighted the problem for me. While Twitter engineers are doing really cool things with Java, many are mired in these huge monolithic apps that take hours to build and even longer to deploy. And much of this stuff is stored in SVN... with no unit tests. It's the culture. They look at front-end developers with disdain... with their GitHub accounts and Vim/Tmux setups. Java doesn't suck. The culture that has grown around it does.
- forgottenpass 11y agobecause they probably spend most of their time in a cubicle thinking that these new-fangled technologies will die someday, and we can all go back to writing crap like we did in 1999. That is exactly the singular reason I don't pay attention to DHH's brain farts. I guess you got me.
- davelnewton 11y agoJava isn't capable, however, of high levels of abstraction without various surrounding crufts, however. That is why it sucks. It's not simply a matter of "more lines", it's the additional cognitive overhead reading those lines demands, and the tooling required to make it suck less.
- bcg1 11y agoDid you just call jython, jruby, groovy, and all of the other dynamic JVM languages cruft? Or maybe you don't consider them high levels of abstraction... if that's the case might as well not consider inheritance, interfaces, dynamic proxies, classloaders, and annotations while we're at it.
- serge2k 11y agoI read it as you have to add in a bunch of useless boilerplate to do things like pass in an anonymous class to Collections.sort because of a lack of Lambda's (for a stupidly long time at least).
- davelnewton 11y agoNo, I didn't: none of those are Java. They're Jython, JRuby, Groovy, and the other JVM languages. We're discussing Java-the-language. Not the JVM. And without various surrounding crufts you don't have an expressive, dynamic, malleable language with high levels of abstraction. Lambdas help, but do not solve, Java's impoverished model of abstraction.
- bcg1 11y agoAll of the things I listed are part of the Java language and standard library. http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Proxy.html http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/P... http://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html http://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoad... http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html http://docs.oracle.com/javase/7/docs/api/java/lang/annotatio... etc
- davelnewton 11y agoI never said it didn't have those things; I'm not sure why you're still talking about them. I said Java has an impoverished model of abstraction, and without external tools (byte-code manipulation, libraries, etc) it still doesn't. Then you brought up not-Java, which I also didn't talk about. You brought those up because those do have better models of abstraction than Java does, which effectively concedes my point.
- rst 11y agoI can believe that a lot of Java devs are not keeping up, but the kerfuffle around that particular Railsconf keynote is a poor example -- I'm pretty sure lots of cutting-edge machine learning researchers, Haskell developers, and so forth also weren't following the gossip in the technical community around a particular tool set that they don't happen to use. I've seen communities which start to think they're smarter than everyone else because those other people don't get the insiders' inside jokes. It's usually not a good sign for the community...