Monday, August 16, 2010

GWT: Best 5 GWT Libraries

Continuing with the GWT series we're going to see some of the best GWT libraries.

Ext GWT

Ext GWT, also known as GXT, is a complete widget library for GWT. It gives you Grid, Trees, Drag&Drop, Forms, Data Binding and much more.

The beauty is that everything comes perfectly integrated and works perfectly with GWT. GXT can be compared with SmartGWT, but the main difference is that SmartGWT is a wrapper around a JavaScript library, but GXT is a pure GWT implementation.

If the GWT widgets are not enough for you application, that should be your first option. GXT has a Commercial and Open Source license, so if your application is not Open Source, you'll need to pay.

GWT-Mosaic

GWT-Mosaic is a great expansion to the standard GWT library. Distributed with an Apache License, allows you to use it in any application.

GWT-Mosaic provides enhanced Trees and Tables, compared to GWT. But probably the best feature is the layout implementation. If you're used to the Swing layouts, you'll feel at home. On top of that it also provides a great Form and DataBinding support.

Probably the main complexity is mixing the Mosaic layouts with GWT components. But checking the demos and documentation helps to solve it. As a best practice tip you need to remember only that: don't insert a Mosaic layout inside a GWT layout.

GWT-DND

GWT-DND is one of the basic components of other libraries, like GWT-Mosaic and GWT-Cal. Distributed with an Apache License only makes it better ;)

GWT-DND provides all the needed support for all type of Drag&Drop operations, you can even expand them for your own needs.

GWT-Log

GWT-Log is the best option nowadays to have client side logging capabilities. The lack of a real logging system is probably one of the big missing features of GWT, but GWT-Log solves it perfectly.

It even provides multiple ways of see the logs, allowing to send the logs to the server, show them in a window or a console client side. As any log system is possible to configure the logging level.

GWT 2.1 implements java.util.logging emulation that seems will be able to super-seed this library, but until it's released, GWT-Log will still be an irreplaceable library in my GWT projects.

GWT-Cal

GWT-Cal is probably my favorite GWT library. If provides a great looking a really flexible calendar component for GWT projects. If you need an iCal / Outlook / Google Calendar component, don't look more, that's what you need.














Why do I like it? Well mainly because is the core part of the GWT application I'm working with, but also  because both developers are really helpful and collaborative.

Conclusion

As you can see all the proposed libraries are based in Apache License, except GXT and GWT-Cal. As I said at the beginning, if GXT covers your needs, don't make your life complex and use it.

Before using any GWT library, check that's really a GWT library and not a wrapper around a JavaScript library. The main problem with this kind of solutions is that are hard to mix with pure GWT components and usually slower and harder to expand.

As a last tip remember that any extra library that you add to your project will have 2 side effects: the compilation of your application will take longer and your application will need to load bigger files.

See you soon.

7 comments:

  1. gwt-cal isn't apache - it's GPLv3, and has commercial license like GXT.
    It's indeed great library - especially in terms of rendering performance of many events. Still needs some polishing but overall highly recommended.

    ReplyDelete
  2. Fixed, thanks for pointing it.

    Regarding the polishing of the GWT-Cal library, don't hesitate to open some bug reports to ask for new features and/or fixes. I'm sure that both Carlos and Brad will appreciate it.

    ReplyDelete
  3. "Best" (frameworks) is maybe too strong expression. Frameworks you mentioned are great from UI components point of view, but what about smartgwt, gwt-platform, gwt-validation, acris, gin, pirity, pectin, gwt-beansbinding, etc...?

    ReplyDelete
  4. Hi Peter,

    As you known, any time that someone refers to "Best", "Better", "Worst", .... it's always from the writer point of view ;)

    GIN, gwt-beansbinding, .... are also great libraries, but I don't have personal experience with all of them, so it's hard to give an opinion. Regarding SmartGWT I wouldn't put it in any "best"/"top" list.

    gwt-platform looks great, but will probably be replaced by the MVP support in GWT 2.1. Also I never found it specially useful, but maybe I didn't tried hard enough.

    My experience with SmartGWT was quite bad, mainly because I wanted to mix it with other GWT libraries and modify the theming.

    ReplyDelete
  5. Personally I like to use Cubee UI because it has some cool features like data-binding, timeline animations, etc... It's a replacement of the built in ui api of gwt, and at this time it has a poor component set, but it's very easy to create your own components. It's opensource and Apache 2 licensed.

    ReplyDelete
  6. Stay as far away from SmartGWT as possible. It's bad enough how heavy and non-modular it is, but it's obviously just a scam to push their enterprise products, and they're snide to "community" members on top of that.

    ReplyDelete
  7. Try gwt-material gwtmaterialdesign.github.io/gwt-material-demo/snapshot

    ReplyDelete