Long development cycles of compiled languages – the real killer

Ever asked yourself what are the reasons for the rise of scripting  languages like PHP, Ruby, Groovy for web development in the last couple of years? Let’s take the concrete case of Java. Common critiques of the language and the API’s, and the J2EE/JEE frameworks were/are in a loose historical order:

  • performance – too slow: this was quite a while ago. JVM’s are very fast nowadays
  • bloated: still true for some aspects. E.g. no closures (still..)
  • too complex & heavyweight, meaning too many dependencies to setup and take care of. Especially for J2EE this was the case. JEE changed a lot here.

The list could go on, but is mostly centered on those arguments which are however mostly referring older releases of the language and its libraries. Nowadays JEE is actually very lightweight, has a great set of tools that speed up app development and is lighening fast. With the advance of tooling support, common IDE’s make it irrelevant if you have to generate setters and getters (bloated?) or not, and enable refactoring of code with a button click.

When you compare the (web)framework support between Java and interpreted scripting languages Java has learned a lot from past mistakes with J2EE 1.2-1.4. CoC (Convention over Configuration), DRY (Don’t repeat yourself), Scaffolding, etc. can be found in Java frameworks just as in RoR. I don’t think that there’s a general winner – this really depends on the task and situation at hand.

Then there’s dynamic types vs. static types. There are pro and cons for both here, I prefer static typed to detect errors early at development time.

I claim that the real reason for the continued success of scripting languages are the faster development cycles. Especially there is no compilation, un- and redeployment needed. This speeds up development considerably and enables more trial and error coding if you feel like – though better do white-box testing.

Apart from that I cannot see any real advantage of interpreted languages today especially in compare to Java. The JVM is some of the most advanced piece of technology we have today: robust, scales, understood and has many mature implementations on all platforms.

What is your preferred language and why?

This entry was posted in java, programming languages, Web2.0 and tagged , , . Bookmark the permalink. Both comments and trackbacks are currently closed.

3 Comments

  1. steven
    Posted September 5, 2009 at 4:44 pm | Permalink

    well said

  2. Posted September 7, 2009 at 9:31 pm | Permalink

    I agree that this is a big part of the reason. The other is that because scripting languages are reflective in nature, it is easier to extend them in exotic ways, for example to build DSLs – and this capability can make them very well suited to solving certain kinds of problems more easily.

  3. Posted September 8, 2009 at 5:54 am | Permalink

    It’s just a choice against short term or long term advantages.
    Here in my company I do Java development, but recently I did a grails project,
    which is being liked here and is being promoted.

    The project took little time to develop, but now they are rolling it off to many users and i have reservations about it’s scalability.

    So now i should ideally port it to java for scalability since it has been accepted by management.

    So in my view you should use both static and dynamic typed languages, dynamic to do POCor prototype quickly and showcase and statically do it after wards to scale.