Rails, Trails, Lift, and Seaside
I just took another good look at Trails this morning, and for building CRUD web applications it is starting to look very good because of the great runtime performance of both Java and the Tomcat/Jetty/Hibernate, etc. software stack. Unfortunately even with annotations for POJOs that make dealing with persistence much easier, Java is not a concise language and I find it less fun to browse generated code and customize generated applications. Not the fault of Trails: Java is a language that is optimized for very large projects rather than agile development of small or medium size projects. This is a "right tool for the job" issue.
Lift is written in the Scala language (runs on the JVM with good Java integration) and largely because Scala is more terse than Java, I find the generated code and any customizations to be easier to read, understand, and write. Scala lacks some flexibility of dynamic JVM languages like JRuby and Groovy, but the runtime performance of Scala is excellent. Lift's built in ORM persistence is modeled after Rail's ActiveRecord. The fact that Scala natively supports embedded XML makes it interesting for building web applications. As a language Scala looks very good but I have not had time to climb very high up the Scala learning curve.
Both Trails and Lift use Maven and are very easy to install and experiment with: check out the Trails quickstart and the Lift quickstart. Well worth experimenting with.
Seaside runs in the open source Squeak Smalltalk environment (free but performance is almost as bad as Ruby) or the VisualWork Smalltalk environment (fairly inexpensive commercial licensing and good runtime performance). I have not tried Seaside in other supported Smalltalk systems. When I use Squeak (not too often) it is usually to experiment with some old NLP code that I wrote: a good environment for trying out new ideas. I have experimented with Seaside, and it is easy to build small web sites with and also easy to deploy to Linux servers. Definitely a good option if you already know Smalltalk and you want to write very interactive web applications.