Design and build a collaborative user experience for a chance to win cool prizes!
Blog

BlackBeltFactory made with Vaadin - part 2 - Usage

By  
John Rizzo
·
On Mar 23, 2010 7:17:00 AM
·

This post is about BlackBeltFactory.com, a community for learning Java related technologies.

70,000 members contributed to building 100+ exams and great courses over the years.

Typically developers go there to:

  • Take free exams
  • Take distant courses with a coach
  • Contribute to the courses and exams content
  • Coach other developers

Should we add exams and courses about Vaadin on BlackBeltFactory?
Give your opinion in this Vaadin forum thread.

see part 1 : the selection of Vaadin

I've used Vaadin intensively for 4 months in 2009.

The beginning was easy and we acheived results quickly, thanks to:

  1. The good (logical) API
  2. The complete user's guide
  3. The examples

I must admit that I've spent some days on the JPA/Hibernate integration. Not that Vaadin and JPA are related. But I had to use JPA a little bit differently than in a classic Controller/View design. And the Vaadin site contained a misleading example where they mixed UI code and Hibernate sessions. My main question was, when displaying selectable lists, whether to keep the detached entities in the Vaadin component (= in the HttpSession) or not. With Struts/JSP, I would certainly not have kept the entities of the list. Now, I know that with Vaadin I keep them. It would have been nice to have a realistic and well-designed example of a small Vaadin/Spring/Hibernate business application.

Along the project we've spent some days to correctly manage the "windows", to have multiple tab browsing work well. The Vaadin API will probably improve on that perspective with the v7.

Toward the end, we've also spent days to improve the performance of the site. We did a few mistakes, such as not compressing the GWT generated JavaScript. We also had to limit the usage of nested Vaadin visual components (layouts), because the JavaScript takes too long to execute for heavy pages. Server/client data transfer is no real issue, but the time it takes for Vaadin JavaScript to reorder stuff in the browser can be too long with complex pages (as our home page). For example, notice the load time difference between a long and a short page of our reference manual. For a few critical pages, we have replaced the usage of heavily nested Vaadin layouts, by pure old good (but trivial) html. This is the case of the list of events (right columns) of the home page. An event typically contains a line of text with a link and a user's picture. We have hand-coded the html for producing an event in the list. It took some time to get used to the boundaries of the framework. That being said, hand coded html concerns less than 1% of the visual part of our Vaadin application.

Not everything has been easy and immediate, but thanks to the excellent quality of the:

  • API,
  • product,
  • source code,
  • documentation and
  • forum,

we have been much more productive during the first 4 mouths since using Vaadin than ever before.

Simple things are very easy and natural. Complex things are possible. We've always got smart and accurate answers to our questions in the forum within 24h. That made us over-use the forum a little bit.

With Struts/JSP/JavaScript, we used to be slowed down by the deficient programming model and technical issues. It gave us plenty of time to think about the layout of our pages and the functional requirements. Since Vaadin, I sometimes develop the UI so fast that I have to force myself to stop coding in order to think about the layout and application features.

I really would like to thank Vaadin's team for their great work and tell them that I've never ever become to regret our choice.

 
John Rizzo
BlackBeltFactory co-founder.