I agree that batteries (not) included is a big issue for Java. Yes, the batteries usually come in form of Apache Commons something (or Guava etc...) but I certainly understand why for some tasks Python is still chosen. (to get apache commons, you need to either donwload the jar, or figure out a maven project and setup XML that pulls that version, versus having it already in the core lib or if not, I assume, some "pip install" and that's it)
I was hoping Scala would come to the rescue, but it also has the same "not in the core library" approach with regard to simple things (file ops, REST client, JSON processing etc).
Someone posted a question like this in r/scala in the form of "what is the Scala-ish answer to Apache commons". The top comment was from a Python guy who said that this is exactly what he is missing from Scala, but the other answers were in the form of - just use scalaz / scalaz steams. (very functional and pretty awesome scala library, but it gave Scala some bad PR due to operators such as |+| etc... which are pretty awesome once you get to know them... but again, it doesn't help the "Scala is complicated" point...)
As much as Scalaz is great, and it is, it's quite not the kitchen sink that a python developer looks for when being lured into Scala as a "Better Java" (scalaz makes Scala more of a "good enough Haskell rather than a "better Java" if you ask me)
I wish there was a statically typed language that had all the batteries included in the core library (I'm sure a lot will jump with Go! Rust! Nim! and even Haskell! or even TypeScript! and, well, I guess they will be correct?)
Python is great and all, but, well, I need the code to throw me compile and type errors! I'm addicted...
(p.s. Netflix use Scala a lot, this is why I'm a little surprised that it's not becoming more prominent)
I find it almost never takes more than 30 seconds to figure out the right thing to add to my build.sbt file unless I don't really know what I'm looking for. If that's the case I'm going to be spending some quality time with Google regardless of which language or what batteries are included.
Me too, but I'm just listening to what some Python/Ruby/Node developers tell me - "yes, we know your guys are 'smarter' - but we prefer our 'stupid' and shorter / more fun way to do things".
In other words, this is a major put off and a hurdle preventing Scala / Java to gain more followers. Developers are lazy by nature, and syntactic sugar does matter. If not, we would have all still be writing in assembly.
Scala is very much a there's-more-than-one-way-to-do-it language, which is why there's no official JSON library or HTTP client.
Moreover, most of the big support behind Scala comes from the Java world where you're expected to pull these things in with your framework rather than from the stdlib. Using Play? You've got a JSON processor and HTTP client right there. Spray provided the same. So did Lift.
Why provide the batteries when no one can agree on what they should be?
Rapture is probably the closest to what you're looking for but it's still in its early days.
I think what we can glean from this is that Netflix is just smart about picking the "right" tool for a particular job (they even say exactly that at the start of the original blog post). I imagine they will continue using Java where it makes sense to do so and other languages where they make sense.
12 comments
[ 2.9 ms ] story [ 31.5 ms ] threadI was hoping Scala would come to the rescue, but it also has the same "not in the core library" approach with regard to simple things (file ops, REST client, JSON processing etc).
Someone posted a question like this in r/scala in the form of "what is the Scala-ish answer to Apache commons". The top comment was from a Python guy who said that this is exactly what he is missing from Scala, but the other answers were in the form of - just use scalaz / scalaz steams. (very functional and pretty awesome scala library, but it gave Scala some bad PR due to operators such as |+| etc... which are pretty awesome once you get to know them... but again, it doesn't help the "Scala is complicated" point...)
As much as Scalaz is great, and it is, it's quite not the kitchen sink that a python developer looks for when being lured into Scala as a "Better Java" (scalaz makes Scala more of a "good enough Haskell rather than a "better Java" if you ask me)
I wish there was a statically typed language that had all the batteries included in the core library (I'm sure a lot will jump with Go! Rust! Nim! and even Haskell! or even TypeScript! and, well, I guess they will be correct?)
Python is great and all, but, well, I need the code to throw me compile and type errors! I'm addicted...
(p.s. Netflix use Scala a lot, this is why I'm a little surprised that it's not becoming more prominent)
In other words, this is a major put off and a hurdle preventing Scala / Java to gain more followers. Developers are lazy by nature, and syntactic sugar does matter. If not, we would have all still be writing in assembly.
Moreover, most of the big support behind Scala comes from the Java world where you're expected to pull these things in with your framework rather than from the stdlib. Using Play? You've got a JSON processor and HTTP client right there. Spray provided the same. So did Lift.
Why provide the batteries when no one can agree on what they should be?
Rapture is probably the closest to what you're looking for but it's still in its early days.
http://rapture.io
Liked your talk on Akka by the way...
I've definitely used far worse in terms of time to get started.
I dislike how Infoworld simply took this content, slapped a linkbait title on it, and makes it seem like Netflix is "replacing" Python with Java.