I have worked with Java since 1995. Until 2002 I have worked on a lot of Java projects. I generally liked the language a lot, until I met Ruby. It was love at first sight I was using Ruby almost exclusively since then and never looked back. Until now, that is. Even though Ruby is becoming more well known daily (I still remember our clients asking, ‘Ruby what?’) I am becoming more and more displeased with some shortcomings of the language and some bad designs of the standard libraries.
In this context, I am experimenting with other options for more than a year. Lately, I have reviewed the status on Java. Thanks to strong competition from Microsoft and .NET the language has evolved considerably over the last years (generics, annotations, iterators, new libraries). But it was the release of JDK6 under an open source license that was the breakthrough for me: The JVM is transforming to the ultimate environment for dynamic languages and implementations of JavaScript and Ruby are readily available.
I admire the design of the .NET framework and the Mono open source implementation but I strongly believe that Java will prevail. Microsoft managed to keep Java out of the browser thanks to the 95% penetrations of IE. But Java can be found on just about any other device (lately on Blu Ray devices) and enjoys support from just about any major Platform/Software vendor (IBM, Oracle, Apple, etc…)
Even though I now consider JavaScript on Java to be the ultimate server side scripting solution (Project Phobos anyone?) I will keep on using Ruby and evolving Nitro on the foreseeable future. However I plan to use Java/JavaScript on some new ideas I have outside of the strict web application area. I will argument on why JavaScript is a great programming language and why Java is ideal for a new wave of network (or should I say grid) applications in a future post.