6 ms·
Java 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
by davelnewton 11y ago
Java 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.
- coldtea 11y ago>Java isn't capable, however, of high levels of abstraction without various surrounding crufts, however. Well, Go is even worse in this regard, and yet people jump all over it.
- primehound 11y agoGo at least has the ability to be fast. And compact enough to fit in your head. And approach a specific set of problems. For what it originally set out to do, it actually works pretty well. What's Java's supposed purpose THIS week, again? First it was making web pages interactive, but it turned out that nothing ever worked in Java web applets except security flaws. Then we were told that Java had always been meant for making desktop apps, but it turns out that nobody in the late 1990s and early 2000s wanted to work with shitty purple quasi-windows designed to cater to the lowest-common-denominator X systems from 1982. Then we were told that Java had always been intended to take over the low-power, low-resource embedded space, but Scott McNealy's speech about that was hard to hear over the sounds of millions of embedded developers laughing so hard that they all shit their pants. I suppose you can argue that it works okay as a quasi-embedded platform today due to Android, but that's only because the idea of "embedded" has expanded, and because the Android boys swapped out the JVM horror show for something that didn't suck dick for a nickel and give four pennies in change. Shit, what IS Java's one true purpose supposed to be these days? It's hard to keep track. Oh, that's right-- it's for WEB development. Or at least, that was Java's always-all-along-never-did-we-deviate-from-this-concept purpose according to SUN, right up until they found a buyer for the bloated corpse of their once-mediocre company. The original intent of Java to be used as REST-aware web dev platform totally shows in its design. That's what they were thinking of ALL ALONG. Yep. Yes, sir. No doubt about it. Go, on the other hand, has no defined market, application, or purpose where it can solve any specific problems, and will therefore have to only be quasi-popular because Google is pushing it harder than Plus-- not because its developers actually LIKE it.
- coldtea 11y ago>Go at least has the ability to be fast. Err, Java is typically faster than Go. And with much better GC to top. >And compact enough to fit in your head. It's not like Java is Haskell either. Any enterprise slob can handle it. C# has 4 times Java's features. >What's Java's supposed purpose THIS week, again? To be a general purpose programming language? >First it was making web pages interactive That hasn't been the case for 15 or so years. Ever since 2000 it was server side enterprise and web apps, and some device stuff thrown in for good measure (which was one of Java target's even before applets).