Typesafe acquires Spray.io
marketwired.com
marketwired.com
This is making Scala look more and more like THE Java successor. Clojure is still a strong contender, but the Typesafe activities have really pushed Groovy out of the ring, as well as things like JRuby and Jython. I doubt that Java will ever go away, but I can see that Scala and/or Clojure will eventually supercede Java as the main development language for the JVM.
And this is important because the JVM is showing signs of moving into the dominant position in the new world of massive multicore. It may never muscle out things like Erlang/Elixir or Python, but it will probably be the core dominant platform of this century.
The big challenge to Scala will be Java 8. The basic problem is that Scala is too complex. Having written production code in Scala before, I am unlikely to do so again due to code complexity reasons. And we avoided all the trendy Scala stuff (akka, sbt, DSLs, etc)
That complexity (or different flavors if you will) has also been a reason for me to stop writing Scala. I don't want to leave behind maintenance hells for whoever has to modify my code in five years. Java may be verbose, but its simplicity (if you avoid the big frameworks) and standardisation (JAX-RS, etc.) does help to keep things understandable and predictable.
That said, I do use Akka a lot and like the Typesafe Console. Other than that, I am keeping a distance for now, and put my bets on Java 8 or Kotlin.
I guess that's a predictable consequence of the design goal of "scalable language". Scalable to the point that people should be able to mold the language in ways that the language designers hadn't foreseen (though in this case the two styles are the two styles that the language was designed to accommodate from the get-go). Maybe people should treat it as a language with many dialects which has the benefit of having a unified ecosystem, instead of having one ecosystem for every dialect.
Same thing goes with Akka, start small with a simple Actor System with a supervisor tree no more than two levels. Then work your way step by step into more complex solutions where people will recognize the value of a supervisor tree. Expose the inner workings either by implementing message monitoring in Scala or by diverting the message flow externally to RabbitMQ brokers where you can more easily tap and monitor the message flow.
I believe it was Dijkstra that said (paraphrasing) source code is meant to communicate to humans first and only incidentally machines.
There's several Scala libraries that are on the border of "too clever". One is Play's Iteratees: it's a really nice concept, they take a few days to wrap your mind around. Trying to get a Java programmer to understand them borders on a lost cause.
I'm learning both and really like both. I do wish that clojurescript was as easily developed as clojure is. I think scala-js seems to be the stronger of the ->js projects. Scala-js now also supports the closure compiler which makes for nice small distributions; this is compelling in the age of html5.
What makes you say that?
(I'm a CLJS contributor. Just want to help improve it)
Instead there seemed to be a whirlwind of finding info on lein-cljsbuild/cljs and dealing with little problems like the repl not finding jarred or external js files. also online theres all sorts of grumbles about browser repl instability so it gives you a big warning feeling even though it seems like the only way through. Ultimately I felt lost in the tooling and setup. I haven't had time to investigate clojurescript in lighttable, maybe its easier there. I just figured any editors repl and the source files should be all you need to start working productively with it.
By contrast I haven't done much scalajs yet, but it builds like just another sbt project (after a local install of the scala-js project itself). I was able to clone the sample scala-js app run sbt;/packageJS and see the js file. Sure that's not updating live, but its clean and straightforward from the first time you investigate it. 5-10 minutes to "wow".
Good luck, I really want clojurescript to become easier to use as I really enjoy clojure.
The browser REPL is the biggest offender, but luckily there is now https://github.com/cemerick/austin which is a huge improvement in usability, stability, and features. Give that a try!
I think this is actually a good approach for making Scala something that larger companies will rely on, while benefitting smaller shops and individual developers.
Now, if only Typesafe would either build or buy a scala compiler that is as fast as go's. If they did, I would be a scala developer like yesterday.
That's why Scala 2.11 removes features from the core compiler.
On the other hand, I do hope the Spray acquisition will improve the Typesafe stack, especially Play: it can really use some of Spray's patterns and its high performance.
https://groups.google.com/forum/#!msg/eventsourced/B2Nx4HJB-...