Sunday, September 14, 2008

Rails, Trails, Lift, and Seaside

I am fairly much "in like" with Rails: I have been using it for personal and customer projects for almost 3 years. If Ruby had good runtime performance, I would be happy with Ruby and Rails for most of my development. Because Ruby is such a terse language, it is very easy to read and understand the code and (few) configuration files that Rails generates for you and it is easy to write custom models, controllers, and views - mostly because Ruby is such a fun language to work with.

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.

2 comments:

Randal L. Schwartz said...

Seaside works very nicely in the GemStone/S environment, which is free even for commercial use, as long as you have a 64-bit Linux handy, or a VMWare environment that can run a 64-bit Linux. And with GemStone, you get object persistence for free (no need for an ORM layer to slow down your day). See http://seaside.gemstone.com/ for details.

Mark Watson, author and consultant said...

Thanks Randal. I gave Seaside + Squeak a good try a while back, and had an easy time deploying it to Linux. Good stuff, but most of my customers want me to use Java, or in the last few years Ruby on Rails - as a consultant, I usually just use what customers want.

I have heard good things about GemStone + Seaside.

That said, in the future when I retire, it would be easy to imagine myself only using Squeak :-)