Scala,Groovy,Jruby,Clojure



Features
Scala
Groovy
Jruby
Closure
What is it??
1.Multi paradigm programming language. Designed to integrate features of object oriented languages and functional languages. 
2.One of most advanced system in programming languages.
1.Object-oriented programming language for the Java platform serves as alternative to the Java programming language.
1.Java integration of Ruby programming language.
2.It is tightly coupled with Java to allow two way access between Java and Ruby code.
1.Clojure is a dialect of LISP with addition of some advanced features.
Typed system
Statically typed.
Dynamically typed scripting language.
Dynamically typed language.
Dynamically typed language.
Programming type
Mainly object oriented but also integrates many features of functional programming in it.
Object oriented.
Object oriented programming and duck typing(as in Ruby)
Functional programming language.
Features
1.Good for fast prototyping, scripts.
2.Integrated with Java
Better IDE support.
3.The language syntax is very small and simple.
very concise and overhead-free language
1.Only language with a joint compiler to compile 2.Groovy and Java at once.
3.Highly integrated with Java.(One of the most strongest point of Groovy!)
4.Have very good acceptance and a strong web framework in Grails
1.Can import Java classes in Ruby.
2.Auto mapping of core types.
3.Common Ruby programming methods are added to core types.
4.Implement Java interfaces from Ruby or vice versa.
5.Native threading: Ruby thread = Java thread.
1.Have advanced features over LISP like Software Transactional Memory.
2.Dynamic development
Functional programming
Supports runtime polymorphism and concurrent programming.
3.Hosted on JVM.
Extensibility
Provides unique constructs of mechanisms for easy addition of the new language features like methods can be used as infix, postfix operator and automatic closure construction depending o its type.
Provides extensible meta programming features.
Extensible in large-scale enterprise Java applications.
The features like polymorphism in Clojure yield high extensibility
Who can learn it faster…?
Ruby or Python programmer.
A Java programmer.
A Java programmer.
Lisp, Scheme or Haskell developers
Example
Twitter uses Scala at its backend!
http://www.g2one.com/
Project Kenai
www.freiheit.com

Conclusion:

                The programming with Scala, Groovy, JRuby and Clojure requires some knowledge of Java. But the developers who are extremely familiar with Java find Groovy as most compatible language to work with also Lisp programmers find Clojure intresing.

                But Scala on the other hand is opposite of all! Scala is a wealth of syntax. It provides many features that it will take long time to explore all for any programmer. People see Scala as future of JVM. It’s the only one that is statically typed. Scala is tightly integrated with Java with decent IDE support, getting better all the time. But it is fundamentally different paradigm from Java.
If you ask me one to pick of all of these to learn, I will go with Scala! But, if I want to learn new language, I will definitely go with Groovy.


  • http://m.3wa.com/ Mac

    I think you meant LISP when you said “Have advanced features over LIST “. Also, I’m not really sure a Ruby/Python programmer will learn Scala faster. A lot of the type system feature in Scala is inspired and copied from Haskell.

    • http://www.tutkiun.com/ Mayur

      Thank you Mac!

      The fault is corrected. :)

      In my opinion Scala is mainly developed in considering object oriented approach but functional programming is added in it which makes it very unique in world of programming languages. So, if you are from object oriented background it certainly adds value in learning Scala.(though FP background persons will also have an advantage!).

      • http://robertcfischer.com Robert Fischer

        There’s a lot of functional programming in Ruby and Groovy, too. And more than a little bit in Clojure (being a LISP and all…). For mind-bending-ness, I’d argue that there’s a lot more value in learning Clojure than learning Scala, because Scala is going to continue to enable your bad OO habits even when you’re trying to learn FP.

        I’m underwhelmed with Scala as an FP in any case: http://enfranchisedmind.com/blog/posts/scala-not-functional/

  • Artur Karazniewicz

    Scala has joint compiler also (http://www.codecommit.com/blog/scala/joint-compilation-of-scala-and-java-sources). I disagree that ‘language syntax if very small’ in the case of Scala. In fact I believe it’s far, far more complicated than Ruby, Groovy and, especially Clojure. Having said that – it’s clean, and consistent at the same time. Also I disagree that Ruby or python programmers can learn it faster. Scala takes completely different approach than dynamic languages. I believe that persons with FP background (lisp, haskell) could grasp Scala faster – but I’m not sure. Scala is just Scala – it’s something completely new in its approach.

    • http://www.tutkiun.com/ Mayur

      Thank you Arthur for taking out time to read this post!

      Yes, people with functional background have advantage while learning Scala. But, In my opinion Scala is mainly developed in considering object oriented approach but functional programming is added in it which makes it very unique in world of programming languages. So, if you are from object oriented background it certainly adds value in learning Scala.(though FP background persons will also have an advantage!).

  • http://robertcfischer.com Robert Fischer

    I disbelieve that Scala has better IDE support than Groovy, especially now that SpringSource took over the Eclipse plugin for Groovy. Although I’m not an IDE guy, so maybe I’m wrong.

    The bigger issue—which I think you’re missing—is the additional functionality that these different languages bring to the table beyond their syntax. Griffon and Grails for Groovy and Cucumber for JRuby, for instance, are reason enough to have those languages in your project. Clojure’s ability to do multithreading without descending into a world of pain (or an entire civilization of actors) is huge for certain categories of projects. And you can happily mix-and-match all of these things into your project.

    The idea that any one language is “the future of the JVM” is patent nonsense: the era of a one-language JVM is over. Why would you allow your bigotry and elitism to keep you away from using powerful, effective tools? And why would you throw out the contributions of a huge community (like Ruby) if you can pull them in while keeping your own languages runnin?

  • Prashanth

    “It is tightly coupled with Java to allow two way access between Java and Ruby code”.
    Not sure how this is an advantage only for Ruby. I believe its the same even for Scala and Groovy.

    • Prashanth

      I meant JRuby and not Ruby. :-)

  • cmaslen

    As a C# developer I find Scala the most interesting of the JVM alternatives. There’s even a Linq implementation being developed: http://www.artima.com/forums/flat.jsp?forum=270&thread=271439

  • Guest

    The guys over at Relevance put together a whole series of blog posts comparing and contrasting Clojure, Groovy, JRuby, and Scala:

    http://blog.thinkrelevance.com/2008/9/24/java-next-overview

    • Guest

      Nice information there!

  • Anonymous

    Well, It provides abounding appearance that it will yield continued time to analyze all for any programmer.

  • peternakah

    Well, It provides abounding appearance that it will yield continued time to analyze all for any programmer.

  • Anonymous

    Typo alert! Clojure is wrongly spelled as “Closure” in the table header.

  • kumarshantanu

    Typo alert! Clojure is wrongly spelled as “Closure” in the table header.

  • http://twitter.com/seancorfield Sean Corfield

    In your summary you say “Scala is a wealth of syntax. It provides many features that it will take long time to explore all for any programmer.” but in the table you say for Scala “The language syntax is very small and simple.” – those seem contradictory. Was the latter comment intended for Clojure?

  • http://twitter.com/seancorfield Sean Corfield

    In your summary you say “Scala is a wealth of syntax. It provides many features that it will take long time to explore all for any programmer.” but in the table you say for Scala “The language syntax is very small and simple.” – those seem contradictory. Was the latter comment intended for Clojure?

  • Munch

    Are you *SURE* that JRuby can be learned the fastest by Java programmers and not Ruby programmers? (Am I the only one who sees the hilarity in this? ;) )