Here are some of the changes in the 2.0 release of GWT-Ext:
- Performance improvements
- Unified component model
- New layout management APIs
- Bean-friendly APIs
- Several new widgets
InfoQ.com had a chance to chat with Sanjiv Jivan, the creator and primary developer behind GWT-Ext, to get his perspective on the 2.0 release:
Briefly describe in your own words (at a high level) the changes in 2.0.
First, I'd like to congratulate Jack and the Ext team for the fantastic work they've done with Ext 2.0. A lot of the improvements in GWT-Ext 2.0 can be directly attributed to the enhancements and improved architecture of Ext 2.0.
The biggest architectural improvements in this version are a unified Component model and improved Layout management. All widgets now follow a consistent hierarchy and are subclasses of a base Component class which manages the creation, rendering and destruction lifecycle operations. This version has an architecture that separates the responsibility of Containers, which are only aware of child Components, and the layout of the Components within the Container which is handled by an assigned LayoutManager. Creating complex layouts is now a breeze.
GWT-Ext 2.0 also has a bean friendly API which makes it easier to use and also helps integrate with UI builders like GWT Designer. As for cool new features, there are a lot of them like support for grouping in Grid's, Accordion, ProgressBar, Drag & Drop support between Grid and Tree, and others. One of the other highlights of this release is a new an improved Showcase demo (http://www.gwt-ext.com/demo) that has a lot of illustrative examples along with the associated source to run each sample individually. I am a big believer in learn by example, and I hope that the effort put into building this Showcase demo helps the users.
Another point worth mentioning is the GWT-Ext 2.0 license. From what I have learnt, according to FSF, LGPL in the context of GWT libraries effectively translates to GPL unless clarified by the library author. I have added clarification to the GWT-Ext license page (http://gwt-ext.com/license/) so that most users can use GWT-Ext in commercial projects without violating the license.
There is a significant performance improvement in this version and most of the credit for this goes to the performance improvements in Ext 2.0. You can learn more about the changes they made from their site, but I'll go over some of the significant ones here in the context of GWT-Ext.
- All components / widgets now support lazy rendering which means that they can be instantiated and managed without any overhead and their rendering is deferred to the point at which they are required to be attached to the DOM. This change alone can result in significant performance improvements, especially for larger applications.
- All Components follow a standard lifecycle from creation to destruction which is managed by the framework allowing for proper memory management. Forms and Grids (tables) in particular improved a lot and users can expect much better performance with these widgets.
- With GWT-Ext 2.0, separate "config" classes for each widget are no longer required. Users simply call Javabean setters on the Component itself to set a given property of Component attribute. This not only makes the API a lot cleaner, but also helps reduce the total lines of code.
- Finally, seeing is believing. Several users have already commented on how their application is a lot more responsive and spiffy after upgrading to GWT-Ext 2.0. You can also get a sense of the improved performance by running the samples in the GWT-Ext 2.0 Showcase demo.
The layout management API's have changed, but most users have welcomed this change as the new API is intuitive and allows you to put together complex layouts quickly and easily. Separate config classes are no longer required for configuring a Component - users simply need to call the Javabean setters on the Component itself. Making this change during the upgrade is mostly a matter of a few hours of grunt work and not really something that a great deal of though needs to go into. Again, users have welcomed this change. Infact the use of Javabean accessors instead of separate config classes was influenced by the user feedback from GWT-Ext 0.9.
The Java compiler is also your friend, and any incompatibilities that were not handled are reported by the compiler. And users are always welcome to post any upgrade related questions they have on the GWT-Ext forums. While the upgrade process might take varying amounts of time for different users, one user reported that he upgraded his application that had 10K lines of code to GWT-Ext 2.0 under two days. Users can expect the API to be stable going forward.
GWT 1.5 has made changes to improve the performance across the Java-Javascript boundary and this could result in a quite a significant performance improvement in GWT-Ext. I am working on making the required (internal) changes to take advantage of this GWT 1.5 optimization.GWT-Ext is LGPL 3.0 licensed. Community forums, Wiki documentation, download links, and further licensing information are all available at the GWT-Ext homepage.
I am also planning on adding wiki documentation, FAQ's and tutorials to help users get productive quickly. In addition to the ongoing enhancements, I am planning on focusing on the users to help them take their development efforts to production. In the end, this is the real benchmark of a successful library.