Cappuccino is the third framework I’m including in my project to implement a trivial time tracking application in multiple client-side/rich frameworks. Cappuccino was created by the guys over at 280 North, and originally showcased by their 280 Slides application. Like the SproutCore framework I recently explored, Cappuccino has its roots in Cocoa, but while SproutCore just draws on Cocoa for inspiration, Cappuccino attempts to reproduce a subset of the Cocoa API on the web and uses the Objective-J language that is roughly Objective-C built on JavaScript.

Since Cappuccino and SproutCore are so similar, it’s perhaps worth looking at some notable similarities and differences that I ran across when implementing the trivial timer application in each:

  • Cappuccino strives to let you use a single Objective-J API to implement applications, whereas in SproutCore you need to drop down to the standard HTML/CSS/JavaScript combo when you need to implement a new type of view ,for instance.
  • Both allow you to “compile” and deploy an application as a set of static files that can be served by any starndard web server (although you’ll usually want some sort of backend too), but in development SproutCore requires running a Ruby web server, whereas Cappuccino can run entirely in the browser even in development.
  • SproutCore provides a model abstraction layer that manages much of the interaction with REST-like backends. In Cappuccino there isn’t a model abstraction to handle this so each call to the server is handled manually.

Without any experience using Cocoa/Objective-C I didn’t have the immediate familiarity that is no doubt very enticing to developers coming from that background, however the Objective-J syntax was relatively easy to get used to and the API still seems sensible even without that experience. As with the other frameworks I’ve looked at, Cappuccino is fairly young so the documentation and tutorials are sparse as compared with more mature frameworks.

Now that I have three frameworks (Cappuccino, SproutCore and RestfulX) under my belt, it would be interesting to write more on specific aspects of developing with these frameworks, but I’ll save that for later. For now I’ll simply post a link to the source code, which tells all:

Blog Logo

Bruz Marzolf




Back to Overview