lisp service

(format T "Hello World") 
« Back to blog

A simple categorization of client-side web application frameworks

I recently wanted to find a new framework to use to create a very client-heavy web application, and after some searching on the Internet, I was completely overwhelmed by the sheer number of options.  These frameworks differ on a variety of dimensions, but the one I found most useful for me was to categorize them based on their "heaviness."  What I mean by a heavy framework here is one that is used for making very desktop-like applications for the browser - things that make it very simple to do things like undo in your app and end up producing a very fat client type application.  Light frameworks, on the other hand, are not much more than a layer on top of raw Javascript to help you do things like AJAX calls or DOM manipulation more easily.  Although I am looking for a heavy framework, all of these frameworks have their place.

Note that this list, right now, is based solely on what I have been reading over the past weekend and I haven't actually hacked around with any of the frameworks (I plan to once I finish making my shortlist).  Please feel free to let me know in the comments if you think I have miscategorized any of the frameworks.  I also realize that ranking the heaviness of the framework is somewhat simplistic and doesn't take everything about the framework's ability into account (everybody is unique, after all), but it just seemed like a useful heuristic to me (and I feel like it would take me at least a month to really judge all of these frameworks).   I hope, at some point, to write up more detailed reviews of some of these frameworks.  

Anyway, my classifications are below.  

  • Heavyweight (The entire app is pretty much on the client side and the framework is focused very much on making desktop-like applications - these are often used to create what are known as RIAs)
    • Flex
    • Sproutcore
    • Cappuccino
    • Open Laszlo
    • Silverlight
    • Qooxdoo
    • JavascriptMVC
    • Spry
    • OAT
    • JavaFX
    • Tibco GI
  • Light heavyweight (These frameworks still make it possible to make desktop-like applications with huge widget libraries, but seem to be one level of abstraction below the heavyweights)
    • Dojo
    • YUI
    • EXT
  • Middleweight (These frameworks don't differ that much from the light heavyweights, except they seem to have fewer widgets and UI tools)
    • Google web toolkit (GWT)
    • Open Rico
  • Welterweight (These frameworks make writing AJAX and doing DOM manipulation easier, but they seem a bit low on tools to make a full fledged desktop like application)
    • JQuery
    • Prototype/scriptaculous
    • Fork
  • Lightweight (These seem to basically be very light abstractions on top of Javascript/CSS - more like Javascript utility libraries than actual frameworks)
    • Moo Tools
    • X Library
    • Mochikit
    • XUL

Comments (5)

May 04, 2009
0xx0 said...
mootools and mochikit offer more than a stock jquery. so they are probably in the wrong category.
i don't know x library.
XUL belongs more to the heavyweight or nowhere at all.
and i would move spry one or two weight-classes lower.
May 04, 2009
Steve Dekorte said...
Here's another (very new) framework that: http://github.com/richcollins/domino/tree/master

Rich Collins and I wrote it for http://stylous.com/

May 04, 2009
Peter Braden said...
JQuery also has JQuery UI with loads of widgets
May 04, 2009
Ashish said...
Terrific list and comparison. I would love to get hang of at least one technology from each category. Presently I am learning JQuery & Prototype/scriptaculous. Let us know which one you chose for your specific app development.
May 04, 2009
ByColor said...
Ok, where's the comparison?

Leave a comment...

 
Got an account with one of these? Login here, or just enter your comment below.
Posterous-login    Connect    twitter