Review of Java Rich-Web frameworks (A comparison of ZK, GWT, Echo2, Vaadin and Icefaces)

This article is going to do a review of a number of Java based RIA Frameworks. That is, frameworks which allow the developer to develop the GUI code in pure Java. The GUI produced should display in a web browser, and may be composed of HTML and javascript, but all development should be purely in Java.

This criteria sets a bench mark. Complex GUIs require sophisticated software paradigms, of which object-oriented design lends itself very well. I don’t find much interest in these microwave-dinner-like AJAX frameworks that offer amazing widgets that are completely inflexible once you want to tweak them.

Looking at the following Java based RIA frameworks, I will only be looking at their “showcase” screen. That is, their demo which contains all the GUI widgets.

This article will also only be looking at a certain set of components. For this article I don’t want to spend more than 5 hours comparing these frameworks. If you start comparing each of these frameworks on a deeper level you will be analyzing forever.

So let’s ignore the basic widgets like text fields, and concentrate on some of the more complex features such as tree, table, tree-table, layout management and dialogs. I would say these are among the most importantly complex features of a GUI framework.



First up Icefaces, a framework built upon JavaServerFaces and purports to offer a richer GUI experience. At first sight the components look quite pretty. The look and feel has an air of arctic chill about it, with a touch of post modern in its Picassoesque logo.

Table : Can’t move columns around. No example of a table in a scrollpane. No example of an editable table. This is fairly standard stuff that is missing. Being able to do advanced row selection with CTRL and SHIFT works quite well but is quite sluggish. It would be nice to see some hour glasses.

Tree : Seems a little sluggish. I think every expand/contract action is hitting the server and loading the data. Maybe that is configurable. It is also not key controllable. That is I cannot move through the tree with my arrow keys like any normal tree.

TreeTable : IceFaces has Expandable Table. It looks fine although there is no evidence of custom rendering. It also behaves sluggish like the tree indicating that there is no client caching happening.

LayoutManagers : No real advanced layout management on offer. It all looks pretty much like what you could do with a HTML table.

Dialogs : Called a ‘Popup panel’. Fairly simple. No option to resize is a real disadvantage, and prevents you from seeing how layout management would respond due to a resize.



First appearance: looks light and fluffy like a Kleenex commercial. However beneath the breeziness lurk some pretty heavy duty widgets. It also has an admirable example of a spreadsheet, which screams out why some desktop applications should never make the jump into the browser world.

Tree : ZK is keen to show loading on demand. It appears to cache data in the client, and is controllable with arrow keys. No example of tree in a scroll pane – I don’t really see a ‘pageable’ tree as being a solution. (Could ZK be trying to hide a performance bottle neck?)

Tree-Table : ZKs answer appears to be a ‘Tree Model’. Another example is a ‘Grid Hierarchy’ which seems much more sophisticated with embedded components.

Table : Can edit strings/boolean/date and seems to be excellent. Columns cannot be moved around. There are some other very attractive table components, such as accordion expandable and contractable tables, and sophisticated sorting menus on column headers.

Layout Managers : Excellent number of layout managers. ZK has a high emphasis on portal style layout managers which it does quite well.

Dialogs : Moveable, but not resizable. It would be nice to check out the inner layout management at work.



Next up is Vaadin. With a Scandinavian sounding name, images are conjured up of beauty combined with functionality, like an IKEA showroom. And on first glance the GUI components presented are quite beautiful without undermining their functional purpose.

Tree : Looks fine. It is arrow key navigable. But I can find no example of a tree in a scrollpane or using large amounts of data. What is it with these frameworks and displaying lots of data in their trees?

Tree-Table : I can’t seem to find any example in their showcase.

[UPDATE: Tree-table exists. See comments section]

Table : The table examples are very good. There are some examples of large data sets. It doesn’t seem to want to cache properly, or refreshing is pretty slow. A useful label at the top indicates to the user the rows currently being loaded. No example of table cell editing, but columns can be moved around.

[UPDATE: Table cell editing exists. See comments section]

Layout Managers : Very good and can satisfy any kind of crazy layout this side of GridBagLayout hell. The ‘application style’ layout demonstrates its layout in a dialog : resizing and moving is pretty sluggish, but the internal mechanics of the layout manager work correctly.

Dialogs : Look very nice, work well, and are nicely resizable.



Tree : The GWT tree is very smooth. Caching appears to be very good. Finally a tree that can handle lots of data. But why no example of a tree in a scrollpane? A more complex example shows tree cell editing (well for a Boolean value at least).

Tree Table : Can’t seem to find any example.

Table : The table example isn’t really anything. You have to look at ‘Cell table’. The table cells are editable, but there is no example of a table in a scroll pane. Focus traversal policy is also pretty poor in this component.

Layout Managers : Dock Panel offers a compass type layout. The other layouts don’t offer much more sophistication than HTML table layouts.

Dialogs : Very poor examples in GWT. There is a picture of a guy with a light saber in dialog. Its modal but you can’t resize it. Nothing much else to see.

Echo2 (Echo3 still in Beta).


I have to admit I have some experience in using this framework, but like I said, I am only going to be reviewing the component showcase. There is an Echo3 in the works, but it has been in Beta stage for over two years. Echo3 also seems to be abandonding the Java only paradigm for some Java/Javascript hybrid model.

Tree : Has no example of a tree.

Tree-Table : No tree, so no tree-table to be seen.

Table : Has a table where you can select rows. No example of sorting, scrollpane, cell editing.

Layout Managers : To me the layout management that I can see is too similar to a HTML table (which it probably is in the background).

Dialogs : Dialogs are fine and resizable.

In summary, Echo2 seems to have barely any complex GUI components in its showcase, and the fact that no significant work has been done to move Echo3 out of the beta stage, makes it a risky choice. Icefaces definitely has a lot of sophisticated components on offer, but it seems to be too locked into the server world. The most trivial user interactions require calls to the server creating a sluggish user experience. It doesn’t feel like a RIA framework.

It really comes down to GWT, ZK and Vaadin. GWT really suffers from the fact that its showcase is fairly sparse. What it has on display is fine, and its tree is the most highly performing out of all the frameworks. However the dialogs and layout management on display are pretty dismal. Vaadin has exceptional layout management, but sadly there are no examples of cell editing in Vaadin. Based entirely on what I have seen in all the above showcases, I think ZK has impressed me the most.

Posted in RIA | Tagged , , , , , , , , , , , | 11 Comments

11 Responses to Review of Java Rich-Web frameworks (A comparison of ZK, GWT, Echo2, Vaadin and Icefaces)

  1. Hi,

    There is an example in the book about making table cells editable (scroll down).

    Regarding the lack of TreeTable, you can download an official, free TreeTable add-on from our add-on directory. It’s not in the core because we don’t want to bloat it, and we have an excellent add-on functionality.

    • felixzacat says:

      thanks Henri,
      But I do think you should include table cell editing in the showcase. I think its a pretty important property of a table in general.

      I will have to dig deeper into Vaadin when I have time. Looks really good! I am a hard core Swing fan so itll take me a lot of convincing before I go into the RIA world.

      • Jani laakso says:

        Sounds like a good idea.

        I think we should add a demo on Vaadin sampler that contains a table which’s cells contain other UI components such as Button, ComboBox and TextArea with with more complex layout. Some of the components would automatically be in “editable” mode.

  2. Jani laakso says:

    Just to describe how powerful Vaadin’s table component is I’d like to say that you can basically add any UI component or layout inside Vaadin table’s cells. You can even add tables inside your table :-) But typically people add Strings, XHTML styled Labels, Panels, ComboBoxes, TextFields etc. inside table cells.

    This dynamicity is pretty useful feature on more complex use cases but supporting various combinations requires some extra code and layout calculation on the browser. This is the reason why stock Vaadin Table is not super fast on it’s rendering. Still, I’d say it’s fast enough for many places and people seem to like more features than lightning fast speed.

    One ideology on Vaadin is that you can pretty much combine any UI layouts and components to each other in various ways.

  3. Jack Wilsons says:

    “A picture worth a thousand words”. The demo really tells the difference.

    For people who are interested in pivottable, you might take a look at ZK Pivottable and ICCube (GWT-based).

  4. Costas Yiannoulis says:

    You should jump into the zk’s community. You will find many ex swing/swt developers loving zk.

  5. han says:

    vaadin is behind-the-scenes built atop GWT
    may just be a convenient veneer
    and its got bells+whistles i.e. widgets, book/docs, IDE support

    and its scandinavian
    how kool is that!!

  6. Pekka says:

    Scandinavian ? Think not.

    The company behind the excellent Vaadin product is Finnish.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">