BlackBeltFactory made with Vaadin - part 1 - Selection

This post is about, 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.

Since the beginning in 2004, we have followed the technology evolution for building and went through multiple refactorings. For the front-end, we started with Struts v1 and JSPs. In 2006, we moved to Struts v2 (WebWork) with JSPs and have been so pleased with the improvement for the programmer's point of view. We preferred Struts2 over JSF, because all of us felt there was something wrong with JSF.

In 2007, we introduced some JavaScript/Ajax in our application with the help of Mootools to have more user-friendly Web2.0 behavior. But within a year, it was really a pain to maintain because of the extra layer of client-side JavaScript code. I couldn't say that our JavaScript code was badly structured. Maybe we are not smart enough. We just felt spending too much time on technical aspects and too littile on developing our application's features.

In June 2009, we started developing the course marketplace, which was released in March 2010 and called BlackBeltFactory. We wanted to leave the Struts/JSP/JavaScript glue, and also wanted to have more and more Ajax for the user experience. I felt like having the choice between:
  • JSF
  • Flex
  • GWT

We still had bad feelings against JSF. After having coached projects using JSF, I strongly believe there is something fundamentally wrong with it. Replacing our Struts2/JSP/JavaScript situation with a JSF/JSP/JavaScript situation was no improvement, on the contrary.

Flex was tempting. It has existed for years, people like it and the end-user result/experience is great. But ... I still feel that web applications should contain Html (while I may be wrong, just can't control it).


GWT was tempting too. No more JSP. No more HTML for the programmer (or so little). No more JavaScript. But ... still there is a client-side and a server-side from the programmer's perspective (as with Struts/JavaScript). A client-centric application such as Google Docs is a great value. But with a DB centric application as JavaBlackBelt, it's a problem because we need to transfer data prior and after doing anything. The programmer needs to manage the communications between the client and the server explicitly, including JPA entities that would be detached (and even serialized). It looked like the open door to many time-consuming side-effects and technical issues.


Then I discovered Vaadin. Rich end-user experience. No JavaScript, not even a client-side (for the programmer's perspective). No JSP/Html. Based on GWT. The model was soo promising that it was worth a try. I downloaded it and started reading the tutorial.


to be continued.  (edit: part 2 is here)
John Rizzo
BlackBeltFactory co-founder.
Trackback URL:

Hi John,

Great to hear some background info about the BlackBelt.

I've always thought that Vaadin wouldn't be too suitable for building regular websites, but with your site and Directory coming out soon, I maybe proven wrong. But at least very moving in that direction, so maybe the support for building sites will improve from it.

Waiting for the following chapters…
Posted on 3/11/10 7:57 AM.
Great looking site. Well organized. After initial page loading, subsequent page loading response time is still quite noticeable. Is it just my slow wireless modem? But is pretty fast (specially 6.2.6). Anybody else feels the sluggishness? It is not good for Vaadin.
Posted on 3/16/10 12:02 AM in reply to Jouni Koivuviita.
You are right.
One aspect of the problem is probably bound to the Window management. We don't use Joonas' navigator component yet (we tried, but we have to re-try). We need to start from a new application to better understand how the navigator reacts, and how to integrate it successfully.

For example, sometimes when navigating to another page, the previous page first reloads. I'm convinced it's because of our application (not of Vaadin).
Posted on 3/16/10 8:13 AM in reply to Stephen K Lang.