I gave [this presentation](http://media.techtarget.com/audioCast/TSSCOM/TSSJS_Barcelona_Bruce_Tate_2006-8-02.mp3) at TSS in Barcelona, Europe. It’s now available at TheServerSide.
These are the 10:
- Closures. They are important abstractions, and more than syntactic sugar for loops.
- Continuations. They enable many different optimizations for programming, including perhaps the next generation of powerful web servers.
- Metaprogramming. It’s much easier in Ruby, due to a handful of features such as open classes.
- Convention over XML. Most now agree that Rails has this part right.
- True templating rather than JSP.
- Scripting languages (Groovy, JavaScript?) with HTML instead of Java.
- Investment in Wrapping frameworks. Hibernate is strong, but so is ActiveRecord. Each has its place.
- Focus on simplicity. Java is abandoning its base to handle the most difficult problems at the expense of the 80% of the Java developers who need to build simple applications.
- More aggressive stewardship. Take out bad features. Stretch to add new important ones, even at the risk of breaking backward compatibility.
- Embrace beginners. Java’s no longer approachable.
My Ruby-based practice has shown me a dramatically different programming experience. But Java’s not going anywhere. That’s a good thing…
but it’s also part of the problem.