You may remember Sanjiv Jivan as the GWT-Ext developer that changed over the
debacle. He then went on to start work on a GWT version of SmartClient libraries and has now
released SmartGWT 1.0.
It is a tour de force of not only a huge widget library, but he explains how it is much more:
So what’s so smart about SmartGWT? Let me try to explain. SmartGWT is not just another
Widget library. While most Ajax frameworks focus primarily on presentation and displaying mostly
read-only data, either local or via XML / JSON, SmartClient was built with server side
integration in mind. Most enterprise applications are not just about about data presentation, but
about being able to propagate data changes made by the user to the backend. So while its tempting
to use library X that has a cool tree widget, it’s not until you actually try to use it
your application that you encounter the real world hard problems. For example, how do you take
data from your business objects on the server to not only display in a tree widget, but also be
able to update your data model when, say, the user reorders the tree nodes or make edits /
deletes in the UI. How do you display hierarchical data where nodes may have hundreds of
children? And so on..
Most Ajax frameworks stop short and leave it up to the user to manage state on the client side
and propagating the changes to the server. This is not a trivial problem! Over the past few years
UI widget libraries have improved significantly and there are now various options available to
users. Simply put, having good looking widgets is not the hard problem today. In addition to
having good looking widgets, having end-to-end integration of the UI components with the backend
is the hard problem. It’s this 20% of the functionality that takes 80% of the time in
building most enterprise applications.
The showcase will give you a good
feel for what is out there, and it contains some interesting items including:
-
Miller
Columns: The ColumnTree provides an alternate navigation paradigm for Tree data, sometimes
called “Miller Columns” and seen in iTunes
-
Nested Grid: A
convenient way to display 1-n relationships
-
Printable
Views: SmartGWT supports printable views of its components.
-
Advanced
Filter Builder: a databound filter builder.
-
Tile
View: Representation of data as “tiles”. Again, TileGrid supports data binding
so sort / filter and edits can be easily performed.
- Calendars : A Google Calendar like widget that supports databinding so edits and drag drop
changes can easily be propgated to the server for persisting.
- TreeGrid : Supports multiple columns, editing, column locking, lazy loading and more.
-
Live Grid /
Tree: Grid / Tree virtual scrolling or live grid
Really amazing work. Sanjiv recently had a Q&A session with InfoQ where he talks about
the approach taken in developing SmartGWT and the his thoughts on the differences between
SmartClient and Ext.
