Paparazzi for Programming Languages
James Bayer's Blog |
February 3, 2008 10:33 PM
|
Comments (4)
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.
Comments
Comments are listed in date ascending order (oldest first) | Post Comment
-
Dguy and Jsnyders, thanks for your comments and putting me on to Steve Yegge's post which should probably be required reading for java developers to get their gears turning about whether they agree or disagree. I am starting to find some of the arguments about conciseness persuasive. My largest hang-up is seeing how the conciseness argument can balance the huge investment enterprises have made in java code. There are a large range of skill-sets in enterprise shops, and many developers either don't have the time or the curiosity to learn an alternate language, or at least learn it completely. I count myself as someone who has used JavaScript / ECMAScript, but I don't know it like I know Java. I find it to be an exciting time in enterprise software. Time will flush out the best ideas and keep pushing the languages forward.
Posted by: jbayer on February 11, 2008 at 1:48 PM
-
I don't think the recent buzz is just tech gossip. People are hitting limits of complexity in their implementations and groping for a way beyond Java. Java is a significant improvement over C++ but not a game changer.
Steve Yegge's recent post addresses this topic as well. As you suggest, there are huge advantages to having the new language integrate with Java. For me, the real issue is making code more understandable and maintainable by being less complex. Conciseness helps.
As far as particular "new" language, Steve Yegge calls Groovy ugly, but I don't have any experience with it.
Jython is another way to achieve integration but is well behind the current version of Python.
I eagerly wait to hear your experience with Scala.
Posted by: dguy on February 7, 2008 at 8:16 AM
-
I have noticed the buzz.
When I program in Python or JavaScript I feel much more productive. I can't quantify it but it is noticeable to me.
While my fondness for Java is decreasing. I think the JVM platform is very powerful and stable. BEA's JRocket and WLS-VE are examples of how powerful this platform can be. Any languages that run on the JVM such as JavaScript(Rhino) or Scala should do very well.
JavaScript is the language of the browser. There is a trend in web applications to move more of the MVC controller and model to the browser - leaving the server only responsible for long term data storage. This trend will help extend the popularity of JavaScript. If you work on web apps you will probably be doing a mix of JavaScript and Java. Then you might think why not do all of it in JavaScript and you might try Rhino or you might prefer to do it all in Java with GWT.
I think concise expressiveness is a key factor in a language. Closures, functions when I really just want a function, literal notation for objects/maps and arrays are all things that I think help with productivity.
I'm not sold on the better concurrency argument. I just don't think it is important for most of the code that gets written. But where it does by all means use a language that excels in that area.
I look forward to reading about your experience with Scala
Posted by: jsnyders on February 6, 2008 at 1:35 PM
-
Nice post James. It mirrors some of what Cedric wrote about in I'm not tired of Java yet. To quote, "Whatever your favorite language is, be it Scala, Ruby, Python or Groovy, I'm with you. I really am. I understand the warm glow you feel when you write code in your language because I feel it too. But what you need to understand is that there is very little chance that your language will displace Java in any way in at least the next five years to come."
Posted by: jonmountjoy on February 4, 2008 at 6:06 AM
|