5 ms·
Calling the JVM platform a relic is a major mistake - the number of businesses that rely on the platform is massive. However Java-the-language has been stagnan
by total__C 13y ago
Calling the JVM platform a relic is a major mistake - the number of businesses that rely on the platform is massive.
However Java-the-language has been stagnant since Java 1.5 in September 2004. The Java API has had some changes but the language has remained mostly unchanged. The 1.8 version promises some nice improvements inspired by FP languages. Unfortunately, 1.8 has been continuously delayed with a current release date of sometime in early 2014. For JVM developers who care about their productivity, moving over to languages such as Scala, Groovy, and Clojure is the only sane choice.
- llemiengre 13y agoI may be wrong but afaik java 8 has been delayed once (http://mreinhold.org/blog/secure-the-train http://mreinhold.org/blog/secure-the-train)
- lmm 13y agoMany of the productivity features we're talking about (e.g. lambda) were originally supposed to be in java 7, so have already been delayed multiple times.
- jbooth 13y agoJava fills a particular niche (code with an emphasis on readability) which is not addressed by Groovy or Clojure and arguably not addressed by Scala. I'd say Go is the biggest competition for that niche as a language, although it's not JVM, it does fix many warts with how Java handles inheritance/polymorphism without sacrificing readability and simplicity. Groovy is slow as a 1-legged dog. (we use it to fill the shell/perl niche a lot but it is slow, effectively you're doing reflection lookups every time you call a method in Groovy). The dynamicness makes it better for scripting or web programming, though, where you don't care as much about performance. Scala is the JVM's C++, a giant pile of overlapping features, supported by an advanced and very slow compiler that yields fast bytecode. Case classes, funny operator overloading, lots of additional syntax for collection manipulation. They're giving you more expressiveness at a cost of readability and language complexity. (This is an opinion, some may disagree). Clojure is really awesome but most dev shops will have an easier time with imperative programming models. Ultimately, not changing in 8 years isn't fundamentally bad, and Java isn't that bad at all as a language if you avoid things like EJB and Hibernate, and if you're not looking for a dynamic language like Ruby and dissapointed by Java not being Ruby. You might just disagree with the tradeoffs.
- sbilstein 13y agoI'd argue Scala is much more readable than Java with some effective practices. Type inference (where appropriate) cuts down on distracting text, operator overloading is great when used judiciously, for comprehensions, etc are all great features. Just because Java requires explicit typing all over the place does not make it easy to read, especially when I'm trying to decipher what the ResourceBuilderFactoryFactory class is doing in my enterprise grade codebase. There is cognitive load in parsing tons of text to express simple concepts, just as there is cognitive load in deciphering a bunch of random symbols doing something complex. Scala with discipline lets you choose somewhere in between; Java gives no choice.
- jbooth 13y agoType inference is great, and is part of why I consider Scala to be "one step forward, 2 steps back" rather than just a total loss. As far as the rest, we'll just have to disagree, I stated up front that it was an opinion :)
- sbilstein 13y agoHaha, well what you said is true, but your spin on it I disagree with. How about "one step forward, a couple steps to the side"?
- cgh 13y agoFor startups with small, disciplined teams, Scala is manageable, sure. But once things go "enterprise" and much of your ongoing development gets outsourced, and it will, all bets are off. Maintainability is THE great equalizer.
- sbilstein 13y agoIt's my personal goal at the current company I'm at to see Scala grow to be respected as an "enterprise" language. The startup where I learned Scala had a small disciplined team with lots of mentorship that meant almost everyone developed some very good Scala practices. If code is becoming unmaintainable because of outsourced development, does that not have more to do with how we communicate to these external developers? Bad code is bad code in any language.
- gte910h 13y agoJava programmers seem to love the swap too. All the ones I've seen in shops that have swapped love the transition
- smrtinsert 13y agoThat's a little generous. Clojure is great and I enjoy working with and Scala is fun too, but Java still has the best tooling support. Scala IDE has weird little bugs here and there whereas I haven't encountered a JDT bug in years. I use Eclipse for all of them Counterclockwise, ScalaIDE and JDT. Counterclockwise is actually really nice. Selecting forms is super simple and makes the parenthesis "issue" not a thing.
- Roboprog 13y agoIt's a shame there isn't an "employable" choice of language platforms somewhere between a GC-ed language and C. The JVM has an exquisitely tuned GC, but any GC still comes with a cost. But do I have to use a language with no safety features at all if I opt for other non-GC languages? (I'm of course thinking of something like FreePascal, but there must be a number of good middle-ground alternatives that are being ignored in the work-place, which would easily write less hardware-hogging code)
- Roboprog 13y agoI would not have thought the above comment was offensive. Perhaps somebody doesn't like having his/her choice of language questioned??? (whether it was Java, or C, dunno) My hammer rocks!!!
- vorg 13y ago> moving over to languages such as Scala, Groovy, and Clojure is the only sane choice. Anyone who mentions these three languages in the same breath is regurgitating the marketing talk for one of them. The article doesn't make that mistake, so could actually be genuine research rather than some PR drivel from some corporate Product Manager.