Feedback needed on ExpressUI 1.0.0-RC1, Vaadin-based CRUD framework

ExpressUI has gone from beta to near production quality with the release of version 1.0.0-RC1. GA is expected within a month or so.

ExpressUI is an ambitious project. My goal is to make ExpressUI the most productive framework available for developing business (CRUD) applications. So, I could really use feedback from folks on this forum in determining whether I’m headed in the right direction, in terms of design tradeoffs, etc.

The quickest way to learn about ExpressUI is to browse the demo, now with embedded code pop-ups and API documentation:

I’ve also added more technical info on my website at

For those who may have checked out the beta, I’ve made many significant changes since then, including a new Maven archetype for generating starter apps. Details are in the
release notes



FYI, I just released ExpressUI 1.0.0-RC2 with a few bug fixes!

I’ve been following your framework and other add-ons for a while. Pretty interesting stuff!

However, I wonder if these frameworks are really feasible for production use? And how does ExpressUI compare to the enterprise-app add-on or Vaadin’s JPA Container add-on?



I have only had a cursory look at the Enterprise App and JPAContainer add-ons. So, I can only respond at a high level.

In designing ExpressUI, I chose to make a tradeoff by sacrificing some UI design flexibility in order to enable an unprecedented level of developer productivity, while at the same time supporting advanced business features that enterprise apps typically need, for example:

  • Handling complex JPA queries with variable search criteria, sorting, paging and avoiding the N+1 select problem
  • Navigating large result sets without in-memory caching
  • Automatically caching reference entities like states, countries, menu options, etc.
  • Avoiding typical Hibernate pitfalls with regard to lazy initialization, closed session etc.
  • UI components for navigating one-to-many, many-to-many and many-to-one relationships gracefully
  • Gracefully handling concurrent modifications using an optimistic locking strategy
  • Security subsystem that allows an end user to configure each field individually as hidden, viewable or writable
  • Nested-property binding in both results and forms
  • JSR 303 and multi-property validation
  • Data input parsing and display formatting
  • Automatic refreshing of form fields bound to derived properties
  • UI components automatically handle changing data sizes
  • Form layout that can grow in complexity while retaining manageable usability
  • Build process that supports continuous integration

I imagine you could implement some of these features using competing add-ons. The question is with what the level of pain and effort. I cannot really compare in detail to these other approaches. I can only say that the goal of ExpressUI is to handle these advanced problems as painlessly as possible. I have built a number of CRUD applications for large banks, etc. and these are the kinds of real-world issues that drive up the cost of projects.

So, even though my sample app looks simple, the framework actually handles some pretty difficult problems, many of which can be tested in the
Live Demo
. For example, try opening multiple browsers and concurrently modifying the same records in different sessions. You will get a graceful message that your entity was modified by another user. In the Account form, you can page through related contacts, where the number of contacts can be indefinitely large. The Opportunity form shows how changing certain fields (stage, currency) automatically updates other fields (amount in USD). Type in a US phone number like 704.555.1212 and watch it transform automatically to (704) 555-1212. If you download the sample, you can also login as admin and set field-specific permissions.

Finally, ExpressUI provides an advanced set of Maven scripts for automatically generating a database and populating it. It even supports seamlessly swapping back and forth between a dev database (H2) and a production database like MySQL. This is key for achieving continuous integration in an enterprise environment. It allows you to refactor and evolve your domain model in isolation without impacting other developers sharing a DB.

Anyway, these are just my biased opinions. :slight_smile: I would encourage others to compare for themselves and comment as well.


ExpressUI 1.0.0-RC3 has been released. I expect to release the final version in the next 1-2 weeks.


1.0.0-RC4 has been released, and I expect GA in another week.

I compatibility tested
against JBoss+MySQL and Weblogic+Oracle and fixed a few issues related to Spring battling the JEE container. So, it is now possible to seamlessly swap app servers and databases during the development process.

I also added
in-depth guides
for setting up Intellij and Eclipse and a configuration guide for
that explains how to swap databases.

Although I’ve put a lot of effort into testing, please send me any feedback on issues or desired features.



I just released
1.0.0-RC5, which adds support for internationalization/localization. Because of this, the final release has been delayed a bit. I realized that most of my users are not in the US. :slight_smile:

To prove that internationalization works well, the live demo is now available in German and English. Language can be selected on a per-session basis, meaning that changing language requires re-login. It should be easy now to add other languages just by adding new message properties files.

Another feature I added was full CRUD operations on to-many results. It was easy to add. So, I figured why not? I also made many other bug fixes and cosmetic enhancements.

As always, feedback is appreciated!