Ruby the Rivalby Chris Adamson
Bruce Tate's Beyond Java argues that Java's reign as the top enterprise development language must eventually come to an end and that, for the first time in a decade, major enterprise innovation is occurring outside of the Java realm. In the book, he looks at the unique traits that has allowed to Java to achieve its unprecedented level of success, and then considers what new languages would have to do and be to succeed Java.
Later chapters look at specific languages contending in this space, and clearly favors Ruby as the front-runner. This comes from Tate's own performance breakthroughs (fueled by Ruby on Rails), an analysis of the language, and anecdotal evidence from others who've tried the language.
Is Ruby already shaping up to succeed Java? What's broken with Java that Ruby fixes? And are the two mutually incompatible?
To survey the situation, we contacted several prominent authors, bloggers, and developers to get their takes. Their responses are reprinted in whole in this article.
Bruce Tate: Stirring the Pot
Bruce Tate doesn't come to Beyond Java as an outsider. His consulting company focuses on Java persistence frameworks and lightweight development methods, and he's the author of the popular Java books Spring: A Developer's Notebook, Better, Faster, Lighter Java, and Bitter Java.
1. You spend a lot of time on Ruby in Beyond Java, and it seems to be the front-runner among your "contenders" to succeed Java. What do you think gives it an edge over PHP, Python, etc.?
All are good languages, with some holes. PHP and Perl haven't consistently produced readable code for larger applications. Lisp, Python and Smalltalk have lacked the catalyst that great languages seem to need. Ruby is a good language, offering a compelling new value (in productivity) with a catalyst (in Rails) and what looks to be explosive growth. Ruby may not be the best language, but it's the most probable that I see. But it probably won't succeed Java across the board. It's likely to do well in a smaller niche first, but an important one: a big, fat relational database with a web UI.
2. Does Rails imply Ruby? Can't the same ideas be done in other languages, including Java?
Right now, Rails is that catalyst that transcends the language just as Netscape, with the promise of delivering applications via the internet, served as the catalyst for Java. But I think that Rails may possibly be the first of a wave of metaprogramming frameworks in Ruby.
3. The Ruby success cases seem to be small projects of just one or two developers, the typical "connect a web interface to a database" scenario that you base a lot of the book on. But you also acknowledge the value of Java's heavy-duty enterprise frameworks to a certain set of projects (e.g., big apps on big iron). At what point does a project get too big for RoR? What happens if an RoR project feature-creeps in that direction?
Well, you can do a lot with Ruby and small teams of people. Base Camp was basically written with one person, and it's a bread and butter application for a whole company. We won't know how far you can push Ruby or Rails until some major companies get serious about trying. One of the things that's the most interesting to me is the economy of scale--smaller scale. What if the productivity numbers are real? What if you really can get a 5x boost? Then, you can do the work of divisions with a department, and the work of departments with a team of two. Communication becomes less of a problem. Management and oversight are less of an issue. We all know what the tipping points are for growth in a company. It's hard to scale past one, five, ten, 40 and 100. These are all barriers to growth based on adding new levels of communication and management. But intellectually, Ruby on Rails scales very, very well.
4. Do you see Java developers transitioning to Ruby, or is Ruby going to be adopted by a new generation of developers?
I think both. There are developers that can't stomach learning servlets, Spring, XML, Hibernate, Struts and then some UI glue frameworks. They're going to be unleashed in Rails. There are also Java developers who are already looking for more leverage and finding it in Ruby on Rails. The number of Java visionaries adopting Rails, from Thought Works to James Duncan Davidson to Stuart Halloway to David Geary, is staggering.
5. Isn't there anything Java can do by itself to maintain its prominence? If the complexity and bloat is such a problem, what's to stop developers from just rolling the clock back to JDK 1.4 and staying there?
Java will do fine in the enterprise for a number of years on the top end, but time rolls on. It will be replaced at some point. We're going to need a higher abstraction. The best we can hope for is a sound investment in the JVM for dynamic languages to embrace the new, and to continue the conservative stewardship of the language to support the millions of lines of Java code, I think.
6. Should we expect to see Ruby make a splash in other fields? If it's so great for developing web apps, would it be useful for desktop apps if there were a suitable UI framework it could call?
It's much too early to say. Ruby is but one candidate, though it's the language with the catalyst behind it right now. What happens next? I don't think anyone knows.