A co-worker asked me today if I had heard of Ruby. A a friend of his told him that Ruby was "the next big thing". I conveyed what little I know about Ruby, and how his friend is probably a new Ruby on Rails programmer, caught up by it's success. I explained that it is unlikely that Ruby will be the next big thing.
From my personal experience it seems that new programmers who pick up a dynamic scripting language, such as Ruby, Perl, or Python, are amazed at the flexibility of the language. Often this leads to a proclaimation that it will be "the next big thing". I say this because I was one of them, a devoted Perl developer since the mid-90's. Along the way I found myself straying from my desired Perl path over to the Java track, and eventually I saw things in Java that I never saw in Perl. These things I saw are important things, especially when you start building very large applications that can't be down.
I'm sure there will be a few Ruby fans wanting to scream about now, but that's ok, everyone is entitled to their opinion. For those fans I want to say that I want to see Ruby be the next big thing, and that I am on your side. Java as a language stinks, it is long-winded, and simple things are sometimes hard to do. In Perl I can write a SOAP client with one line of code, I love that part of Perl.
Perhaps I should explain what Ruby doesn't have. For me the main two are the lack of high-end application servers and the lack of tools.
When I search Google for "ruby application server" I get only a few pages of results, with the only WEBrick coming up a couple of times and not much else. This is fine for a small shop, but if I have an enterprise application that needs to run across a dozen systems, then I am thinking WEBrick isn't going to be up for the task. It is also likely that for an application this large I will expect a high level of support for the product. For some reason I don't think that I will find this for Ruby.
For my Java projects I use Eclipse, Maven, Checkstyle, JUnit, JCoverage, and more. I use Axis, Spring, Hibernate, Struts, and more. The Java language has a rich set of mature tools and frameworks that make team programming easier, refactoring faster, and maintenance less of a chore. I am not saying that Ruby is without tools, I am just saying that there aren't as many of them. With Java, the quantity and quality of tools means that I can choose the tools that best fit my shop, and that I don't need to settle with whatever is available.
I hope that I haven't offended too many people, but a great language can't be great at everything. And Ruby is a great language, but it isn't Java, it isn't C#, and it definately isn't Lisp. It has weaknesses, and I feel that it's major weaknesses are the lack of enterprise level servers and tools. If you disagree, and have a great story on how your Ruby server handles a million page views a day, then please leave a comment, I want to hear about it.