134

Question for all the GWT gurus out there - which is the best GWT widgets library out there? And why?

List based on the answers:

И наконец- новое поколение основанное на JsInterop:

Jason Washo
  • 536
  • 6
  • 22
tellme
  • 871
  • 5
  • 18
  • 23
  • Did you forget to include gwt-mosaic in the list? – Ashwin Prabhu Apr 28 '10 at 14:20
  • 2
    This question was not specific about requirements, so predictably, the most highly visible (core GWT) was voted up even though it doesn't meet all requirements. If you have a complex enterprise application with many screens and high data volume and you need powerful grids and editors, that's what SmartGWT is for. Plain GWT is great for many apps, but many enterprises with this specific set of requirements evaluate GWT and decide SmartGWT is a better fit. To get an overview and decide for yourself, read the QuickStart Guide. http://www.smartclient.com/releases/SmartGWT_Quick_Start_Guide.pdf – Charles Kendrick Nov 30 '10 at 21:59
  • you are missing gwt-bootstrap – caarlos0 Sep 30 '12 at 04:42
  • I have created a site proposal to give questions like this an official home away from Stack Overflow. It's called [Code Recommendations](http://area51.stackexchange.com/proposals/66606/code-recommendations?referrer=S-_R40wBFZh6TlZ3Al4_Sw2) Help make it a reality by joining and asking questions now! – daviewales Mar 23 '14 at 12:51
  • This looks also promising: http://gwt-material-demo.herokuapp.com/ – kozla13 Aug 31 '15 at 12:38
  • GWT-Material is the best I have seen so far. – Jason Washo Oct 15 '16 at 03:12

27 Answers27

52

Do not bind yourself to ANY of these libraries. Use Vanilla GWT to create the structure of your project. In particular, use the MVP pattern and an Event Bus. Please, see google article to know how to best design your client application with GWT: Building MVP apps

After, you can use any widget of these libraries (say a table, or a combobox, a datepicker, etc) and incorporate it to your project. Try to use extended components ONLY if you don't see a way to do it with vanilla GWT. This way you don't tie yourself to these libraries which are ALWAYS a pain when you try to do something that doesn't appear in the demo application, contain many bugs and their support are poor at best.

How to look for widgets should follow this order:

Careful with other libraries, I've worked with them (and still have nightmares).

Italo Borssatto
  • 15,044
  • 7
  • 62
  • 88
monzonj
  • 3,659
  • 2
  • 32
  • 27
  • 1
    Any specific experiences with other libraries you would like to share? – Adam Nov 04 '11 at 04:29
  • 6
    GXT, I would not recommend it to my worst enemy. If you consider it, please, first Google it and make sure you know where you are getting into. SmartGWT, a JS wrapper, very ugly. Run far away from it. I have experience with both in a real project. First I used SmartGWT, but its limitations made me move to GXT. I soon discovered the mess they had there with form bindings and java generics (Jesus, every time I remember....) I don´t know which is worse! I finished it, yes, but I suffered immensely. After that I learnt to use vanilla GWT and only the widget I liked from other libraries. – monzonj Nov 29 '11 at 23:32
  • This post is old and by its nature will date, but I've used GXT extensively for the last 2 years and while it has issues, it also allows the creation of very good looking applications with relative ease. It has very useful grids, buffered grids and live grids. SmartGWT also has well featured grids and components. Also consider [Vaadin](http://vaadin.com). – Carl Pritchett Nov 30 '11 at 02:30
43

Depends on what you mean by "best". Best looking? Best API? Best for extending to your own custom needs?

E.g., I was just evaluating table classes to use in our application. We've been using GWT-Ext, but it has many performance problems for us, and is very hard to get the tables sized the way we need them. I came very close to going with GWT-Mosaic, but decided instead to build off the widgets in the GWT Incubator.

So, why did I make this choice? It seems that too many of the libraries out there come with their own, for lack of a better word, baggage. Either you have to dive whole-hog into some MVC framework (which may not be entirely compatible with the rest of your code base), or you have to adopt someone's new fangled layout system, or you have to live with the fact that you cannot really debug the code (because its just JSNI wrappers).

Don't get me wrong, the GWT Incubator isn't perfect...the widgets there are in some amount of flux. In my case, this was the best choice, though. It gives me good (but definitely not perfect):

  • API
  • Extensibility
  • Look and feel (well, this is kinda weak, but that's what CSS is for.)

So...the answer (for me) is a combination of:

  • Stock GWT widgets (with lots of custom styling)
  • GWT Incubator tables
  • A few home-grown widgets

(I should add: the "baggage" I'm referring to isn't necessarily a bad thing. But, if you just want a widget or two, it can raise the bar on what it takes to just get your work done and how good youe application looks.)

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
jgindin
  • 948
  • 8
  • 15
  • Most of the widget libraries require some license due to the dependency on some external AJAX library. This, as well, add extra size to your solution. Note, as well, that most of the widget libraries depend on one or more additional external components. – IgorM May 18 '09 at 20:09
13

See this component library GWT Bootstrap this is a implementation in gwt of Twitter Bootstrap.

Xosler
  • 275
  • 4
  • 13
  • I think the most important today is create [Responsive web design with GWT](http://www.javaworld.com/article/2842875/java-web-development/responsive-web-design-with-google-web-toolkit.html). – eQ19 Mar 29 '15 at 10:38
10

GWT alone is a pretty good library.

I didn't use all of the mentioned ones but can recommend Ext GWT.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Sajal Dutta
  • 18,272
  • 11
  • 52
  • 74
  • 2
    I agree with bare GWT. Along with incubator projects (http://code.google.com/p/google-web-toolkit-incubator/), you can implement anything basically. I used MyGwt but it sucks when they shut down the project and changed its name and all the forums and support, licence are changed – Robert Childan Nov 27 '09 at 00:11
8

I prefer vanilla GWT. Some of the other APIs look pretty and their showcases really show off the widgets, but I always find that the performance isn't the best....when I say performance I mean more like response time. I hate when an application feels sluggish.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Nick
  • 1,340
  • 1
  • 15
  • 23
8

Most of the libraries mentioned are not open source and even worse: are just wrappers on top of a JavaScript library. The power of GWT lies in the fact that the application works on different browsers (because of the code generation for the "big" browsers specifically). These JavaScript underlying libraries can cause lots of problems.

I agree with jgindin GWT Incubator and GWT Mosaic are the best so far.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
  • Very misleading. Almost all of the libraries listed are open source with commercial friendly licenses (Apache, BSD, LGPL) except ExtGWT (GPL). Further, even in the very limited component set currently provided, GWT has many cross-browser bugs - simply search their bug database to verify this. The GWT compiler is not magic and does not automatically correct for weird, situation-specific browser layout bugs and the like - they need to work around them like any other framework. Nor are they always at the cutting edge - they have not announced official iPhone or Android support, SmartGWT has. – Charles Kendrick Dec 02 '10 at 01:05
7

Not saying it's "the best", but I've been using GWT-Ext at work lately. It's got some pros and cons:

Pros:

  • Relatively easy to setup and use
  • Decent sized community behind it
  • LOTS of examples online, all of which have accompanying code
  • Good selection of widgets that cover a wide range of functionality

Cons:

  • Makes assumptions about your data's format and structure that you may not be able to accommodate
  • Library is just a JSNI wrapper, which makes it harder to debug and extend
  • Future support and development on the library is uncertain
  • Some annoying cross-browser issues still exist (especially with layouts)
  • Search function on their forums is essentially useless. (This is becoming a big pet peeve of mine >_<)
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Toji
  • 33,927
  • 22
  • 105
  • 115
6

Do NOT use any of them! If you plan to develop a large scale application, you should consider using MVP pattern. The best implementation around is MVP4G framework, it supports GWT code splitting out of box. There are a lot of great examples, you can start with. The most valuable one is Mvp4GModules.

beastieboy
  • 91
  • 1
  • 3
5

Add the new one: GWT-Bootstrap :)

There isnt a stable release right now, but will have soon.

caarlos0
  • 20,020
  • 27
  • 85
  • 160
4

My experience shows that there are always many problems with 3rd party libraries. The best way - is to use well-known and well-maked technology itself plus your own components. It may take a longer time to write and maintain them, but TCO is always at lower level.

3rd party libraries often can break your plans unexpectedly. And it's hard to find and fix the source of problem.

So I'd suggest to use plain GWT.

Sergey Karpushin
  • 874
  • 1
  • 10
  • 33
3

I think SmartGWT is fine if you just whant to use the Widgets as they are, but if you would like to extend or modify the widgets as I do in the Gxt Scheduler I think that Ext-GWT is a better choice.

Rasmus
  • 1
  • 1
3

for me EXT-GWT (aka GXT) is the best library currently available,I use it in 6 months project,and it helps a lot with many predefined components like grids,trees.... It's beautiful as well

aymen
  • 1
  • 1
  • 3
    You must be kidding! I've been using GXT for 18 months now on a daily basis and I can honestly say it is a nightmare. – Alex Worden Jan 07 '11 at 22:40
2

Definitely not SmartGWT. Their framework is bloated and has a very half-baked nature. They have a million widgets, but trying to get them to work for your project is not easy. Datasources complicate the process of managing your data in a very big way, for example, in order to get to data in your datasource, you must use fecth and inspect often. While you can cache the results, it is not always easy to interrogate them.

RPC is another weak and convoluted area. There is contradicting information in the documentation and in the forums. While the documentation will say that you should rarely use a custom operation as part of a ds, they forum will tell you that it's perfectly fine. Learning to use these tools effectively is an uphill climb on the best of days.

They will oversell the product. For example, the charting/analytics package contains graphs... But those graphs won't display negative values or let you manipulate axis labels in any meaningful way. And they openly respond to queries about this on the forum with a "yeah so what" attitude. "We don't plan on adding that to 3.0x even though that's one of our selling points, it's on our road map." When they sold me the package, they never mentioned that I couldn't display negative values. Really? What graph would not need to be able to show negative values? I can think of only one- the one depicting the number of unhappy Isomorphic customers.

Stay away from these guys, and head over to any competitor's site, for example ExtJS, JQuery, heck even quxdoo. There are a few projects out there that are really gaining ground and actually offer a good solution.

Take great caution if you ever evaluate this product. It looks nice, but about two weeks in to the project using it, you'll start seeing what I mean. Widgets are half baked, datasources are extremely over complicated, and just because you paid for forum support, doesn't mean you'll actually get anything other than snide, condescending answers that at first will make you think you missed something. You didn't they're generally very arrogant.

Best of luck, and stay away from this product if you value your development time and maintainability. Oh and one last thing. Look at the MVC example on their web site. It has literally nothing to do with MVC other than the label reads "MVC". They'll try to convince you that such frameworks are for inexperienced developers, and that such a concept has no place in real programming... Kinda like those try catch blocks.

binarygiant
  • 6,362
  • 10
  • 50
  • 73
  • All quite false, as you can easily verify. Here's the MVC sample (http://www.smartclient.com/smartgwt/showcase/#featured_smartgwt_mvc) this user basically doesn't get it - read the description and you'll see the tremendous power being demonstrated. I can't even guess what is meant about having to "fetch and inspect" but most likely the user did not read the QuickStart Guide and is using the system wrongly. Just read it yourself (http://www.smartclient.com/releases/SmartGWT_Quick_Start_Guide.pdf) and the architecture is clear and self-explanatory. Also, our charts do plot negative values. – Charles Kendrick Jun 28 '12 at 01:32
  • Let's be honest here. The current stable build of 3.0 does not support negative numbers, and in their own words they refuse to support it: http://forums.smartclient.com/showthread.php?t=21219. – binarygiant Jun 29 '12 at 15:46
  • http://forums.smartclient.com/showthread.php?t=7026 – binarygiant Jun 29 '12 at 15:54
  • ?? That thread directs a customer to use a dot release (3.1). It's free, not an upgrade, and it's very stable. You tried to make this sound like an attempt to oversell or extract more money, which is not only false, but could not be further from the truth: just look at all the major new features people are getting for free in 3.1 (http://blog.isomorphic.com/smart-gwt-3-1-smartclient-8-3-feature-roadmap/). You were clearly being intentionally misleading, which sheds light on your other comments. – Charles Kendrick Jul 02 '12 at 22:55
  • It certainly is not my intention to mislead. In response, however, I will say that it is misleading to highlite all the great features of a product, in this case the analytics package, but somehow leave out that it did not (pre 3.1), in fact, plot negative numbers. Further, upgrading to a 3 "dot" release is fine as long as there are no custom CSS implementations in the 3.0 release which highlights another point where working with SmartGWT is painful... – binarygiant Nov 15 '12 at 11:47
  • The analytics package provides a huge amount of functionality and has successfully used by many companies to build impressive UIs. It lacked one feature you needed, which was provided in a free update. The fact that this update was free is completely incompatible with the claim of an "oversell", hence, intent aside, you were misleading. As far as claims of CSS issues during upgrade, no one else has reported a similar problem. This appears to be more baseless FUD, but if it isn't, then post it to the forums and if it's a valid bug report, it will be fixed. – Charles Kendrick Nov 17 '12 at 21:52
  • @Charles Kendrick: Whoever posts on the forums as Isomorphic is very snide, passive aggressive, and condenscending. I would agree with that. It has turned a number of our developers off when it comes to SmartGWT. Whoever posts as tech support needs some people skills. –  Apr 02 '13 at 19:47
  • @0A0D be careful about reading too much tone into what is really plain text. I tell my team to link to docs whenever possible because the docs get updated constantly but ancient forums posts become stale and spread bad information. Some people take a link to the docs as an implicit "RTFM you luser". We also make an effort to answer simple things within minutes if it's possible to do so, because this allows a developer to keep working and not be blocked. But this means we are very concise which again people sometimes perceive as rude. In each case our intent is the reverse. – Charles Kendrick Apr 24 '13 at 21:26
  • @CharlesKendrick: I would tend to agree that plain text in and of itself does not accurately convey tone. I don't think it is a problem of being too terse, it is a problem of word choices and phrasing that turns people off. If you could fix that, you would have the best product. Sometimes the replies are: "Did you check the forums? It has been answered here before..". Well, yes, I did check the forums but didn't find it. Can you help? If the intent is to really help like you say and provide links, then do so. There are people who don't show research, but I typically provide all the info –  Apr 25 '13 at 11:55
  • required by the forums and still get push back, snide remarks, or the like. To make sure it wasn't just me reading into things too much, I showed the comments to several different people and there was unanimous opinion that it wasn't me but rather the Isomorphic person on the other side. I like SmartGWT, don't get me wrong. But the customer/developer support needs some work. –  Apr 25 '13 at 11:56
  • @0A0D Well, I'll take your word for it that someone was snide, and I apologize. To explain a little - the Support team are developers that actually fix bugs, because we think "1st level support" working from cheat sheets is just ineffective. They are passionate about improving the product - you've probably seen how aggressive we are about fixing bugs - and sometimes this passion can translate to annoyance at being pulled away from fixing something real, to deal with a question they perceive "shouldn't have been asked" (whether that's fair or not). Anyway, it's something we're working on. – Charles Kendrick Apr 25 '13 at 17:51
2

gwt-mosaic's user group doesn't seem very active and I couldn't find a user's manual besides the wiki snippets. gwt-mosaic introduced me to two interesting tools.

1) gwt-mosaic includes a wrapper for Tibco's PageBus which is a publish/subscribe tool for the JS parts of your app (RPC handlers, widget callbacks, widget setters). This is an alternative to gwt's event bus.

2) gwt-mosaic encourages the use of Beans Binding (http://code.google.com/p/gwt-beans-binding/) for binding data to widgets and validating widgets.

smartgwt isn't cheap for the full feature set and support. The jar is too large for appengine unless you remove the theme files you don't use. They invest engineering on the server side too.

I've heard ext-gwt is sluggish and the JS files are large.

The gwt widget incubator looks deprecated. I believe the deluxe grid will be released with the new gwt.

The lack of look-and-feel, binding, and validation standards is hampering the interoperability of widget libraries.

  • There's no SmartGWT GAE issue with large .jars unless you ignore the install instructions in the docs, in fact, SmartGWT Pro includes a sample project that runs on GAE and provides full CRUD, using JPA for persistence. Also, cheap is relative - the most expensive license & support option offered for SmartGWT is still a negligible part of the cost to deliver the overall application/product when cost of developers, QA, hardware/hosting etc are considered. If you're on a shoestring budget, there's the free (LGPL) version. – Charles Kendrick Dec 02 '10 at 01:19
2

SmartGWT is a good library and it has a lot of examples but the user interface is not that sleek. For user interface Ext GWT is good.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Rahul Garg
  • 8,410
  • 8
  • 33
  • 28
1

We're currently liking the GWT Mosaic widgets. We've worked with ext-JS and we've rolled our own widgets in the past. ext-JS licensing and bulk were a problem for us. Rolling our own isn't what we want to do. Mosaic gives us a happy middle ground which we like to think will be an even happier middle ground as the project matures.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
user124884
  • 11
  • 1
1

One thing to be aware of is that from the forums GWT-Ext looks like it will no longer be developed/maintained much (maybe not at all?). On their website they recommend migrating to SmartGWT.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Tim
  • 966
  • 1
  • 13
  • 22
1

Didn't see this one mentioned, Vaadin (previously known is IT Mill Toolkit), but maybe that's because it's not technically exactly GWT; as their FAQ says:

How does this differ from GWT?

GWT applications run in the browser, while Vaadin applications run on the server. We do actually use GWT as a "rendering engine" on the browser side, so you can combine Vaadin and GWT.

Community
  • 1
  • 1
Esko
  • 29,022
  • 11
  • 55
  • 82
1

smartGWT is slow and examples are lacking and it is very hard to find answers for even the basic questions, i.e. see all my non answered questions on this forum. I'm dumping smartgwt.

codekitty
  • 1,438
  • 3
  • 20
  • 30
  • SmartGWT is definitely a work in progress but it's getting better. On two separate occasions I've had the developers fix bugs in the trunk within days of me reporting them, which is encouraging. It is a big, heavy API, though so you have to ask yourself whether it matches the app you're writing. – AndrewR Jun 30 '10 at 07:48
  • SmartGWT has more samples than any of the libraries being discussed here. This is objectively verifiable: (http://www.smartclient.com/smartgwt/showcase/#main) We also have an extremely strong QuickStart Guide (http://www.smartclient.com/releases/SmartGWT_Quick_Start_Guide.pdf). Please do look at the questions this user asked - one was invalid, one I answered. – Charles Kendrick Nov 30 '10 at 21:28
1

Google's default library is the most powerful library.

Ext GWT adds bells and whistles but apart from that it's similar to Google's.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
ShashiKant
  • 210
  • 2
  • 8
1

I would say if you need only a few widgets then build your own. You might copy-paste some concepts from the libraries mentioned. But they all lack one or the other thing. I have played with most of them and abandoned every one.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Drejc
  • 14,196
  • 16
  • 71
  • 106
0

Two important things -and what the most of libraries miss- are unit testing and debugging. It is where GWT shines. If you use a library which is based on vanilla js, you give away the ability to unit test and debug your project. As a GWT developer you should consider these points and use a library with no or minimal js dependency.

Şah-ı Merdan
  • 494
  • 7
  • 15
0

We've been doing gwt projects for more than 2 years, and we stick to the default widgets. We made our own open source library to autopopulate the default ones or our own widget extensions. Please check it, it's called gwt-jet. It's very well tested since we use it in large production environments, and we hope it will grow safely thru time.

Federico Pugnali
  • 655
  • 8
  • 18
0

Comparison of the two EXTs here with pros and cons.

Nick
  • 1,340
  • 1
  • 15
  • 23
0

We have built a large HR portal and a couple of smaller applications using GWT Portlets. The focus of the project is not so much on building a collection of widgets but on creating a simple programming model.

From the website:

GWT Portlets is a free open source web framework for building GWT (Google Web Toolkit) applications. It defines a very simple & productive, yet powerful programming model to build good looking, modular GWT applications.

The programming model is somewhat similar to writing JSR168 portlets for a portal server (Liferay, JBoss Portal etc.). The "portal" is your application built using the GWT Portlets framework as a library. Application functionality is developed as loosely coupled Portlets each with an optional server side DataProvider.

David Tinker
  • 9,383
  • 9
  • 66
  • 98
0

I am using GWT for a year. After lots of research, I have decided GWT Mosaic as a widget library.. Mosaic uses some of the GWT incubator components such as PagingScrollTable.. But the features of the combobox and table are not sufficient for us.. That is why, we have extended these components to add needed functionality.

Gursel Koca
  • 20,940
  • 2
  • 24
  • 34
0

Check out SpiffyUI: www.spiffyui.org

It is not just a widget library but complex UI/UX GWT framework.

Chuprin
  • 1,147
  • 1
  • 13
  • 18