Question

I'm starting work on a smartGWT project in a few days and I'd like to know what kind of experiences you had. To avoid making this a bashing of smartGWT or GWT or a freestyle discussion, I'm going to provide some pointers for the discussion:

  • Do you feel that the provided widgets are integrated well? Is there any widget you miss in particular?
  • Have you encountered any problems when designing your application that were caused by the framework?
  • Is the datasource integration as usefull as the smartClient team claims?
  • What methods do you use to make your smartGWT application persistent? e.g. How well do Hibernate and smartGWT play with each other?

Feel free to add anything you feel is worth pointing out.

Was it helpful?

Solution

I guess you already have your answers, but I would like to add a few more comments that may affect your decision:

Pros:

  • SmartGWT is the most compreensive LGPL GWT-based widgetery library you can find. So if you care for GPL pain, this is your thing
  • Comprehensive Showcase.
  • Really good performance (just check the Showcase).
  • Very active community in the forums.
  • SmartGWT extensions is another important project. For example, it has support for GWT-RPC based communication, which is not possible only with SmartGWT (unless you implement your own integration).
  • Rapid pace of development from the SmartGWT guys. Just count the number of releases since the SmartGWT project appeared.

Cons:

  • Besides the Showcase, I sometimes feel the only way to figure out how something works is by asking in the forums. This leads to a spread knowledge base. A community based wiki would be preferable.
  • Large amount of static files you have to use with your application (the famous 'sc' directory) which might lead to problems if your back-end is in GAE (because of the 1000 files limit).

OTHER TIPS

We used SmartGWT in our last project (duration: 6 months). The following is my personal opinion:

The widgets are really great! The documentation and API is verbose. We would use client-side again.

The server-side integration works, but did not save any development time. Instead we had a lot of problems where we had to find workarounds. Also, because of the new API, no other developer can maintain the project within investing a lot of time to learn the SmartGWT API.

Some Cons:

  • You have to learn a totally new API instead of using Hibernate and GWT-RPC or REST.

  • The data integration is done automatically, that is true. But if you need some (also little) changes, you have to write XML mapping files as with Hibernate or JDO. So the benefit is gone.

  • The forum support is bad: You get an answer to almost every posted question. But that answer often does not help. They ask you things such as “why do you want to do that”. Or they say: “use our tool and do XYZ with it” three times, although again and again I told them this suggestion does not work. After a few answers to a question the final answer is: “you need training, buy our support”.

  • The commercial support is way to expensive (costs approximately as much as the SmartGWT license).

We will probably not use the server-side integration of SmartGWT again.

You can read all my "lessons learned" with Pros and Cons at my blog:

http://www.kai-waehner.de/blog/2010/12/11/lessons-learned-smartgwt-2-3-component-library-for-google-web-toolkit-gwt/

Best regards, Kai Wähner

Do you feel that the provided widgets are integrated well? Is there any widget you miss in particular?

You could create any missed widgets, there is no single framework that can provide everything you want. The widgets are pretty extendable.

Is the datasource integration as usefull as the smartClient team claims?

The data (JSON/XML) can be provided by servlet services, and they are understood by the widgets.

What methods do you use to make your smartGWT application persistent? e.g. How well do Hibernate and smartGWT play with each other?

In the backend servlet services of GWT, you can persist your data in the store by using any persistent layer in Java. Hibernate can be just used as same as normal java app.

Do you feel that the provided widgets are integrated well? Is there any widget you miss in particular?

Yes. The widgets have a consistent API and work well together.

Is the datasource integration as usefull as the smartClient team claims?

This IMO is one of their strongest feature. Once you start using their Datasource API you realize how little code is required to get a fully functional CRUD screen

What methods do you use to make your smartGWT application persistent? e.g. How well do Hibernate and smartGWT play with each other?

Hibernate works out of the box with the SmartGWT EE version. With the LGPL version using Glead works wells

I think SmartGWT has a ton of great widgets, but but but there is a HUGE price. Create a simple SmartGWT based project and watch how many files get loaded by your page. That, I think, is totally against the ideals of something like GWT. While SmartGWT may be a pretty good option for people on a deadline, if you want raw performance, stay away from it. The number of HTTP requests will simply kill your application.

  • Have you encountered any problems when designing your application that were caused by the framework?

Yes. When I combined Google Eclipse plugin, SmartGWT, GWT 1.6.4, and Wicket the gwt compiler would emit bad javascript. By bad javascript, I mean javascrip that would not work in webkit, or firefox. I was not able to get good javascript until I removed it completely from the Eclipse project and restarted Eclipse. So, this combination would not work and I ended up building the SmartGWT piece separately in another project. The other issue is that the Smart client seems to want control of the whole page in a css sense. So, the integrated SmartGWT module was all messed up, because styles were not isolated properly. Your mileage may vary.

Personally if you use SmartGWT only and for everything then all will most likely be fine, but if you try and mix it, well my results were disastrous. So, I no longer use it.

Just as a counterpoint to the poster above who mentioned troubles with Wicket, the SmartClient forums (forums.smartclient.com) have reports of success integrating SmartGWT with a wide variety of other technologies. This poster's problems sound like 1) a GWT bug causing bad JavaScript and 2) CSS naming conflicts between SmartGWT and Wicket, probably neither framework's fault. All of SmartGWT's style names can be renamed via the skinning system to resolve any such conflict.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top