Paparazzi for Programming Languages
This was originally posted on my dev2dev blog February 4th, 2008.
Have you noticed that there is a growing buzz about alternative programming languages in the blogosphere and online technical journals? Is this simply just US-Weekly for technology selling the latest Brangelina gossip that will be forgotten next week or is there really a coming revolution to get out in front of or even catch up with?
The Old Standbys
PHP and Perl have been popular Internet languages for some time and there is a history of using these languages in conjunction with the WebLogic Server (See WLS information about PHP, ColdFusion, and CGI). Even JavaScript / ECMAScript is getting integrated into the JVM in Java 6.
The New Popular Kids
Lately a newer set of languages have been getting all the attention in both the Java world and the .NET world. Of course you've heard about Ruby and Ruby on Rails unless you've been under a rock. Java has responded with it's own scripting language, Groovy and rails like framework called Grails. Presumably Groovy and Grails would be more applicable to enterprise developers because of Java roots and higher likelihood of being accessible to Java developers to learn quickly. Secondly, because Groovy is interoperable with existing java code, it can run on your corporate application server standard, which is of the utmost importance for enterprise adoption. There is also JRuby; so you can mix Java and Ruby and not have to give up WLS container provided services and all of those plentiful java API's you have lying around from existing applications, frameworks, and packaged applications. Not to be left-out, functional programming fans have also have a reason to get excited with Scala and F#, which combine elements of OO languages with functional principles. Even ERLang is getting some hype.
Why all the buzz and what to do about it?
The rationale to use these alternate languages seems to vary, but the most substantive reasons seem to center around brevity, clarity (see the Fibonacci examples), and that they are better for taking advantage of concurrent programming on the growing number of multi-core architectures. So as an enterprise Java developer and WebLogic Server user how are you to know which of these technologies is the most relevant? In my humble opinion, it's too early to declare definitive winners. I don't think that brevity alone can be responsible for a seismic shift. I am personally more swayed by the multi-core / concurrent programming arguments, but I don't feel the urgency immediately. I think these are technologies to monitor and dip your toe in, but not necessarily to dive all the way in unless you have an edge case that is in the sweet spot in one of the languages.
I am definitely bullish on the value of the application server and the rock-solid foundation provided by WebLogic Server. I feel that the new languages that will have the best synergy with existing Java assets will have the highest likelihood of success. I've spent a limited amount of time playing with Scala this weekend and deployed an example in WLS. Look for my write-up on this in an upcoming entry if you want to hear about my experiences. If you have an opinion on future programming language adoption in the enterprise, please leave a comment.