At JavaOne this year I spent a lot of time following the scripting and dynamic languages space. The speakers for all these ‘other’ languages insisted that we had entered an age where developers would use multiple languages. They said that developers would select languages based on the nature and domain of the requirement.
Most also insisted that their language wasn’t competing with Java and would compliment Java and be used along with it. Some of the leads also felt that developers need to get used to this paradigm shift as soon as possible.
I have serious doubts about this idea of simultaneous use of multiple languages. Most developers & architects that I know primarily work with one language at a time. If they develop a liking for a new language they might dump the old one and use the new language to provide all kinds of solutions. People who once used C, C++, VB, etc dumped those languages and moved onto Java. These former C & C++ users no longer use those languages and develop everything with Java. Who has the time or energy to keep learning and following two languages?
So if the proponents of dynamic languages keep saying that their language is to be used along with Java, I don’t think they will ever make it big. They might get curiosity from thousands of developers but only a tiny percentage of developers will ever develop using two or more languages at one time. For the majority of developers to adopt a new language like Groovy, Scala, Jython, JRuby or anything else, these languages have to aim to beat the Java language. Playing second fiddle will not take them too far.
There are of course some advantages of playing along with Java and not projecting oneself as a competitor. The primary is that these languages are welcomed by the Java community & by Sun. They also get easy access to conferences and forums like JavaOne to spread their message to thousands of Java developers.
I have been writing and speaking about Groovy and Grails for the past few years. I am convinced of their abilities but I still do not see mass adoption.
For many years now we have been talking of the various scripting languages as promising and interesting but they just don’t seem to want to move to the next level.
To quote an example from the sport of cricket, ‘Yuvraj Singh’ from India burst on the international scene as an 18 year old prodigy and was expected to become one of the greatest ever. For years cricket enthusiasts talked of his great talent. However not only did he not manage to dethrone the established biggies in the team but he also seemed content with just being the talented and promising young man. He got his window of opportunity when he could have made it big. Many years on, today he is nowhere near being a legend.
Similarly, all the scripting languages are being hailed as cool and promising for several years now. However the window of opportunity isn’t going to stay open forever. Unless they move quickly they never will become a Java or a C++ and might start fading away once the current leads move on to other things.
My suggestion to all the scripting language leads, is to stop playing at being the Java language’s best friend. You very well can be friends with the Java platform and the JVM but the Java language is not your friend. Aim at killing the Java language if you hope to ever make it big.
Request readers to go through the entire article and not jump to a conclusion based on just the title. Although I don’t think that the title is inappropriate, based on some reactions in a few forums, I can see that it’s being misinterpreted. I am very much a supporter of Java and have no interest in seeing its demise.
The reason for the post is that I find all the great work that’s being put into the new languages very impressive. I just think that the languages are not getting due rewards for their efforts as they are being defensive. I have said “Scripting languages should ‘aim’ / ‘aspire’ to compete and beat Java” and not that “Java should die” or “I want the scripting languages to kill Java”.
It’s the aim, the growth plan, strategy for the scripting languages that I am referring to. I want Java to thrive and prosper but there’s no harm in having healthy new competitors. Competitors who will only push Java to get even better.