Vaadin : still way behind Cappuccino

Posted: October 14, 2011 in IT/Dev
Tags: ,

The recent Vaadin framework, that has been developed for at least one year (however far later than Cappuccino) brings application navigation/logic on the server side (en Java), by limiting json messages to widgets (GWT) state changes. Moreover, as the communication layer is generic (common, many bridges still available), GWT’s Java to Javascript generation step isn’t required anymore while developing (contrary to ExtGWT and Smart GWT). However this solution still does not catch up with Cappuccino in practical use, both in terms of achieved result, performance, and concepts :

– Interest of Java on the server side is less obvious for navigation application code (only UI management and actions). Using Javascript is sufficient for these, and Java is more useful at services layer (more complex, connectors to heterogeneous systems).

– Defining the user interface is based on Swing syntax and principles, that is very limited use of design patterns, and not in the elegant manner found in AppKit (responsability chain, dynamic bindings, KVC, KVO, delegates instead inheritance). There is no real/elegant architecture, nor innovative. The provided features are limited to widgets, whereas AppKit adresses most of applications needs, thanks to proven best practices.

– Such a solution to generate Cappuccino client side would be long and not fun, as it would require to define Java wrappers/generators for each control. Moreover as previously said the AppKit is more than just a widgets library. This redondancy would also be unuseful, as client side service proxy (using CP2JavaWS) seems comfortable for agile development.

– Objective-J 2.0 will bring a modern parser, and WebKit still allows powerful and easy debugging. Validating using Java compilation doesn’t seem so great, besides adding weight/complexity. Moreover state changes and/or display bugs would still require digging into generated Javascript code (despite it being simpler since most of navigation/application has been moved on the server side).

– Some controls (notably Table view) are limited in Vaadin. Most importantly, performances look really behind : while live scrolling, it takes many seconds to update the rows. The developers choosed then to display a waiting message (range of rows being loaded – however not accurate).
Cappuccino and CP2JavaWS allow live scrolling among thousands of rows without any pause (on WebKit), or really slight ones using Firefox. The lite client side application code in Vaadin may require more messaging with the server (the client side is less autonomous – probably no caching in table view, etc.), that might lead to this performance concern.

– Vaadin does not provide abstraction for media layer, contrary to Cappuccino’s implementations of Quartz/CoreAnimation above its DocumentBridge.

– provided layouts arent’s as evolved as the constraint based one from Cappuccino (with automatic recursive calculation).

-the interface builder, whose design is derived from Atlas/IB, faces same limitations as other common editors (as they do not follow the principles that did make IB great)

– the default theme, despite being (too much) derived from Aristo, isn’t as polished. We just can compare Vaadin Tunes with ThatMusicApp. Recent buyout of Sofa (that created Aristo) by Facebook tends to confirm their advance. Even Google didn’t try to compete in this area, where they have always been known to be weak.

Advertisements
Comments
  1. Joonas says:

    Just a note about the “facts” in this article: Vaadin framework project was started in year 2000 and the first public open source version was released in 2002 under LGPL license with name “Millstone”. Thus the framework has far longer history than most of its competitors.

    Opinions in the blog post are so heavily biased that it might not be fruitful to start an argument over them here. I hope that the reader does his research for get more objective view…

  2. Hi,

    Despite having used all of Java frameworks since servlets, and having read Ajaxian and Theserverside from their respective debuts, I didn’t heard about Vaadin before reading the new article at theserverside. I then did a quick review from what I found at Vaadin’s site (quick read of documentation, examples). These are first impressions and personal feelings/thoughts (as it is a blog).

    As I found the default theme close to Aristo/Apple’s style I then did a quick search on Google to find out whether or not Vaadin development started before Cappuccino release. Most of results showed a few years (back to 2008), and most activity in years 2010-2011, so I thought it would explain why it is based on GWT. I was however then intrigued about the article at theserverside that initially did lead me to think that Vaadin was a new framework.

    I had then no reason to think it was even older. However back to 2001 (Struts era) there wasn’t obviously GWT compiler nor even XMLHttpRequest, so Vaadin would have to be compared to WebObjects, that still provided a component based architecture since 1995, Direct2Web and Direct2Java modes, EOF persistence layer. Tapestry and Wickets are known to be direct successors to WO, and it took more than 10 years to J2EE to catch up.

    (and what about James Gosling, who took most of Java’s ideas – however left some great ones – from Smalltalk and Objective-C. He then wasn’t so visionary, S. Jobs was, and Cappuccino team is also).

    What I now understand about Vaadin now providing integration with HTML5 browsers features, is that it only relies on GWT for Java to javascript compilation step, and then uses its own widgets. This should then be stated more clearly on the article and website (GWT name may bring more hype).

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s