original:http://www.tutkiun.com/2009/11/scala-groovy-jruby-clojure-comparision.html
|
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.
Related posts: