Search code examples
gwtspring-securitysmartgwtgxt

Which GWT library is best for development of a data intensive application


I'm starting to develop a GWT application which will have 500 plus users with various roles and the main functionality centered on RPC calls to watch how data is changing on the server. Think of a system for watching stocks which change every 20 seconds. In addition, the users will also be viewing graphs and charts of the changing data which are generated on a daily basis.

I have looked at SmartGWT and the samples on their showcase page. I have also tried building a prototype of the application using smartgwt. So far my biggest worry is debugging the application which some times refers to some error in the javascript end of the library. I haven't touched yet Ext-GWT which also looks promising.

So what library would you recommend for such a scenario? and is it worthwile to use any of them if you want to develop something relatively fast?. Also I would like to know if the libraries are good (performance wise) in handling graphing and huge data sets (4 tables each with at least 100 rows).

Also I'm planning to build the security using the Access Control List package of spring-security since the users will have to be assigned roles through a web interface. Is the package well suited for this and what trade-offs will I have to make when using these technologies? I want to get it right the first time rather than have to refactor or migrate to another library later on, so suggestions are highly appreciated.


Solution

  • GWT 2.1 introduced a new set of widgets designed specifically for efficient data presentation. They are called cell widgets:

    Data Presentation widgets (cell widgets) are high-performance, lightweight widgets composed of Cells. Examples are lists, tables, trees and browsers. These widgets are designed to handle and display very large sets of data quickly. [..] This design follows the flyweight pattern where data is accessed and cached only as needed, and passed to flyweight Cell objects. A cell widget can accept data from any type of data source. The data model handles asynchronous updates as well as push updates. When you change the data, the view is automatically updated.

    In my opinion while developing with GWT it is always a good idea to try to use mainly standard GWT components. They are easier to debug and they are lighter than those from third party libraries. Only if they are not enough would I look at some libraries you mentioned: SmartGWT and ExtGWT.

    I agree that SmartGwt can be painful if you need to debug it. This is because it is mainly a wrapper around JavaScript library and so there is a lot of JS code and you end up debugging it instead of Java code. ExtGwt is also based on a JavaScript library (extJS) but it isn't just a wrapper around it - ExtGwt components were rewritten in Java and consequently they are much easier to debug.