Tuesday, January 18, 2011

Java 4,5,6.. What next???? Python.. Scala.. Erlang...

For a Java Fan it becomes a lot easier day by day  to lost in the overgrowing languages in the JVM world, that includes Groovy, Jython and a host of other languages with Groovy being the Flag bearer. However with the stagnancy of Java ( i m saying this because the next java version is slated to be released in Summer of 2012) and  with the introduction of other languages, it seems a good choice/time for a java developer to taste other languages. Some of the major languages that a java developer i think one should follow on is.

  • PYTHON: It seems to be a great language by syntax and looks like a relative of 'C' language. The Current version of Python 2.7 is seems to be much popular than 3x version. Because of its ability to run on multiple platforms that includes (Linux, JVM, .Net) i think this should be the first choice of a developer. The emergence of Various Development Frameworks like WxPython, Django ( best for web app development) provide a strong reason to go for this language. In addition we also have to consider Google's Bet on python, ( Google really invest heavily on python with Guido Van Rassum on this board, ya the same person who created python). I think before trying out the same java feature ever and ever again, one should see the new angle python brought into development e.g. Virtual enviroment, Easy_install, Pip etc. The central repository pypi definitely helps the developer to get an understanding of all the libraries with their documentation a lot.
    Some important links are:
  • ERLANG: Wanna go for a concurrent languages, that ERLANG seems to be extremely fit to the concurrent world. Developed by Ericssion in 1985 and open sourced in 2000 this language serves as a basis for one of biggest platforms on the world, that includes FACEBOOK CHAT and facebook page rendering things. The Syntax is seems to be an complex one, but with the time it turns out to do the thing in a much simpler way. It also plays a great part in the NoSql movement with CouchDB being created in it. So give ERLANG a try, if concurrency seems to exist anywhere near you.
    In addition this also support Web development, Nitrogen is the framework here, that one needs to look into.
  • GROOVY: The ability to call itself Java++ and with the recent web development in GRAILS framework ( somewhat similiar to Rails framwork) will make this language an excellent choice for Java developers, since the language fundaments and syntax seems a lot similar to java. ( Relationship can be considered Java -> Groovy as C -> C++). since you can use all the java libraries can be used in GROOVY, so a java developer can find him/her on the best side of river & safe at home.
  • SCALA: The mixture of OOP & FP ( functional programming) and its concurrent features makes this languages an excellent bread earning language of future. Since scala provide the concurrency in terms of "ACTORS" ( ya inherited from ERLANG)  and with web development frameworks like LIFT, SINATRA it can be termed as the replacement of java on to the JVM in the next coming years. Like Groovy you can use all existing java libraries, however the learning curve is little steep because of the complexity of the language. But as per my observation and as per the blogosphere world this language can fit extremely well in the Java world.
    Even as per a blog the Groovy developer says "if he knows that Scala exists and is about to come then he would never had developed Groovy". This statement itself says a lot about Scala.
    Some important links are:
Personally out of above 4 i will mark the languages in this order Python -> Scala -> Erlang unless you have a special inclination or have a special requirement.
So go ahead, give it a try and find out to do the thing differently rather then repeating yourself each and every time. SO remember, remain DRY ( dont repeat yourself).
          If you want to know about the Good Books in any of the above, please write me in the comments section or mail me. Surely, will love to tell anyone.
        Sorry, for the Typos..


  1. I personally go with Python. I have to use Java at work, and being my first language, I will always love Java... but Python is just so much better in any respect... clean, expressive language, and the libraries are nearly as good as Java's. Good post!

  2. Agreed, I went with Python, too!

  3. Thanks, Weiler,Mike.
    However i think, with the need of enterprise market, it will be essential in sometime for a developer to know the breed of languages like Haskell, Erlang, Clojure etc.

  4. Java Release isn't scheduled for Summer 2012, instead it is intended to be released in Summer 2011

  5. Thanks Tom,
    However i feel with the kind delays that we have seen in the recent past & no RC yet, it would definitely pose a question mark on the mentioned date. In addition, the inclusion for some JSR's either has been not finalized for inclusion or included at the last moment.

  6. @panbhatt, I'm actually pretty confident that Oracle will hit the date. JDK 7 was recently announced as feature complete and now they're focusing on the bug hunt :). Interesting post BTW! Our take on it is that Java developers will use a bunch of languages on the JVM (mainly Java, Groovy and Scala) to solve the problems of the future (rapid web development, concurrency etc). And now for the blatant book plug! We're writing a book about this, see http://www.java7developer.com for details!

  7. You forgot about Ruby. JRuby integrates well with Java libraries and other Java code, and, if talking of web frameworks, Ruby on Rails is the first one to mention.

  8. It is sure interresing to invest in learning new languages.

    One must wonder why through. For me it is not for my business work. All is in JAVA or C++ here.

    And to be honnest has we have more than 13 millions code in JAVA today, I guess that we will not go to python on scala tomorrow !

    So basically I choosed to learn a new language for my pleasure in my freetime.

    Then I don't need to learn the next big language, but instead I can learn what appeal to me.

    So I choosed closure for now. Why ? Because it is lisp, and that is really different from other languages out there.

    Groovy as already said is JAVA++. Scala bring functionnal programming but I studied functionnal programming a lot at university.

    Clojure has like something more than scala. I do not say it is better, but it is more different than Scala compared to JAVA.

    It another way of programming really and the syntax is very easy.

    It is functionnal yes, but dynamically typed and I want to play with the "code as data" feature.

    It still benefits from the all the JAVA API so I can concentrate on the concept.

    I tried a little of python a few years ago. It is nice but then I have less appeal for it. I have read here and here that basically python is lisp with more syntax and without macros. I don't know, but I sure like the concepts of python.

  9. Nice article buddy and nice options for Java developers also but I say Java is java I have used python and not very impressed with it. the Object oriented feature of Java and able to run anywhere its great advantage.

    deadlock in java

  10. Thanks all, for sharing your views. Ya surely i missed Ruby (that was intentional) because i do not ruby will make a great tool in the developer's arsenal unless he learns Ruby on Rails (that's really awesome).
    And there are just my way of prioritize my learning aspect in keeping view of the time, that we all had.

  11. Groovy is a great language (with real great IDE support).
    Scala is an even better language. Python is pretty good as well.

    I'd say, learn Scala. It's much harder than any of the the other ones, but once you got that, you will not have problems with
    functional languages again.

    Except maybe that you dont think they are as good as Scala.
    My Java adventure is over for me for sure. Im done with it, only thing it does right it is pay the bills.
    But Im moving away from it. Any language like Erlang, Groovy or Scala would be nice working in.