Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Possibly your biggest <em>binary</em> choice is whether you decide to stay on the <a href="http://en.wikipedia.org/wiki/Java_Virtual_Machine" rel="nofollow noreferrer">Java Virtual Machine</a> (JVM) via either Java or one of the other languages which compile into bytecode, or to move onto some other platform, possibly Ruby or Python (with the complications of working with different architectures/operating systems that this may entail). Personally, I decided that I very much wanted to stick with the JVM and hence your language choices would be...</p> <h2>Scala</h2> <p>All I can give is my own experiences coming from a Java background: migrating to <strong>scala</strong> was made easy by its natural integration into the Java ecosystem and the ability to continue to use pretty much the same toolset <em>in the same way</em>. </p> <p>By this last point I mean that the statically-typed nature of scala means that all the refactoring and code-navigation opportunities are still available to the developer but scala's type inference means that this comes without the unnecessary verbosity of type declarations littered throughout your code.</p> <p>I can still use my favourite stuff like <em>Spring</em>, <em>ant</em>, <em>IDEA</em> and I can still use all the libraries I've ever written in Java (this is an argument for picking a language which integrates with Java over a completely new one like Ruby, Smalltalk or Python).</p> <p>From the perspective of whether scala is <em>here to stay</em> as a JVM language, this is what concerned me most. But consider how many questions on SO have been tagged <a href="https://stackoverflow.com/questions/tagged/jython">Jython</a> (161), <a href="https://stackoverflow.com/questions/tagged/jruby">JRuby</a> (176), <a href="https://stackoverflow.com/questions/tagged/clojure">clojure</a> (388) and <a href="https://stackoverflow.com/questions/tagged/groovy">Groovy</a> (661), <strong>assuming you wish to stay on the JVM</strong>. Not only is <a href="https://stackoverflow.com/questions/tagged/scala">scala</a> now well ahead of these (815) but it is growing at quite a rate. </p> <p>Lastly, although I have not used Lift, a colleague has been extremely impressed with it (and I would probably look at it if I were writing a web application). The fat-client alternative (scala swing) I have found to be more than useable (better than raw swing at any rate!).</p> <h2>Groovy</h2> <p>It's worth noting that the creator of Groovy <a href="http://macstrac.blogspot.com/2009/04/scala-as-long-term-replacement-for.html" rel="nofollow noreferrer">recently said</a> that had he known of the existence of Scala, he would never have bothered to create Groovy!</p> <h2> JRuby / Jython</h2> <p>I have lumped these two languages together because they both represent an attempt to port the syntax of a dynamic language onto the JVM. Unless that syntax is already familiar to you, why would you bother to go down this route? I must say, the SO stats (above) do not indicate that these have the momentum at the moment. </p> <p>I would also opine that moving from a statically-compiled to a dynamic language is a big step and you might be surprised by what you miss (in terms of refactoring and development aides etc.) - you may also care about the fact that the interpreted nature of these languages <a href="http://stronglytypedblog.blogspot.com/2009/07/java-vs-scala-vs-groovy-performance.html" rel="nofollow noreferrer">makes them over an order of magnitude slower than Scala</a>.</p> <h2>Clojure</h2> <p>I have no real opinions on clojure other than to say that with an imperative background, its syntax is scary and its flow extremely unfamiliar. I am becoming more impressed by the <em><a href="http://en.wikipedia.org/wiki/Functional_programming" rel="nofollow noreferrer">functional paradigm</a></em> but I felt that clojure was a step too far for me; I would be a fish out of water in the language, having no previous experience of <a href="http://en.wikipedia.org/wiki/LISP" rel="nofollow noreferrer">LISP</a>/<a href="http://en.wikipedia.org/wiki/Scheme_(programming_language)" rel="nofollow noreferrer">Scheme</a>. </p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload