Thick and Rich: Exploring delicious client-side web application frameworks

Web applications were originally (and necessarily) server-centric, using the web browser as a thin client that just displayed the view. As the use of AJAX has become popular, application behavior has crept onto the client, but is often achieved by Frankenstein methods such as serving HTML snippets with embedded JavaScript that provide some application behavior.

Over the past couple of years several web application frameworks have emerged that put the entire client application on the client (web browser), and use the server just to deliver the application and provide data persistence. A couple of the major advantages of these frameworks: 1) they can deliver desktop-like applications in the browser, and 2) the server can simply provide a set of web services that the application becomes a client of, allowing loose(r) coupling between server and client.

As an exercise to get acquainted with a few of these frameworks, I’ve come up with a trivial project time tracking application that I’ll be implementing in each framework I try out. It’s simple enough that I can implement it in a reasonable amount of time in each framework, but has the following features:

  • It uses two models that have a one-to-many relationship between them
  • Persistence is provided by a set of JSON web services (using Rails for familiarity reasons)
  • It requires a timer view component that isn’t part of any of the frameworks and requires creating a custom view
While there is certainly more that could be added to this application to explore each framework in further depth, I’ve chosen to keep it simple in the interest of time and with the caveat that it is by no means a comprehensive way to explore these frameworks.

Now, on to the question of what frameworks ought to be included in such a comparison. Since there are too many frameworks to allow for trying them all, and there’s no fair way to decide, I’ll just be trying out the ones that for whatever reason spark my interest. Contenders include SproutCore and Cappuccino, but first up will be the lesser known RestfulX.

Update The trivial timer app (Clocky) is done being implemented in RestfulX, SproutCore and Cappuccino. See implementation details for:

blog comments powered by Disqus