Are you the one who jumps in to try all new technology? When choosing your car model, do you already select a hybrid engine, or even a fully electric one, instead of the conventional combustion engine? Both will take you from location A to place B, but features and risks in your investment are totally different. All solutions are still valid choices for years to come.
The same applies to currently supported Vaadin versions. Vaadin 10 is probably the most interesting as a technical solution, but it doesn't have all the features and reliability that you expect from the traditional solutions.
Comparison matrix for Java developers
Generally, I think it is stupid to compare technologies with a matrix. But if we leave out those who only pick Web Components from Vaadin 10, we are basically comparing different versions and it might actually help to make to right decision.
Feature |
Vaadin 7 |
Vaadin 8 |
Vaadin 10 |
Notes |
Java API for page navigation and app initialization |
★★★★ |
★★★★ |
★★★★★ |
Router API has better support for hierarchical views and deep linking to sub views. |
Amount of built-in components |
★★★★★ |
★★★★★ |
★★★ |
See the list of components missing from V10 at the docs site. |
UX of built-in components |
★★★ |
★★★ |
★★★★★ |
Vaadin 10 components are designed ground up for mobile usage and generally more modern. |
Featureset and Java API of built-in components |
★★★★ |
★★★★★ |
★★★ |
Flow components still misses certain features and helper APIs. |
Third party components |
★★★★ |
★★★★★ |
★ |
Directory has hundreds of proven add-ons for V8, but not too many for V10 (with Java API). |
Web Component integration |
★ |
★★★ |
★★★★★ |
The built-in Element API is better than the V8 solutions. Absolutely no reason to use GWT with V10. |
HTML Template support and JS integration |
★ |
★★ |
★★★★★ |
The CustomLayout and the declarative support in V8 will feel ancient once you hop in with the V10 templating. |
Portlet support |
★★★★★ |
★★★★★ |
★★★ |
No support for Portlet spec in V10, but individual web components can be used. |
Stability |
★★★★ |
★★★★★ |
★★★ |
Both are declared “stable”, but V10 has been stable for couple of weeks, so we must accept some .0 issues. |
Long-term support |
★★★ |
★★★★ |
★★★★★ |
Vaadin 8 still has 4 years of promised free support, full 5 years for Vaadin. |
What would I choose?
Of course, the only right answer is the consultant answer: it depends. Although I was the first ever JS developer in the company and I can do some amazing hacks on the browser side, I like the abstraction that the Java API gives to me. I value the larger feature set (using the Java API) in Vaadin 8 a lot. There are just some things, like drag and drop, that I can’t achieve using Java with Vaadin 10. Also, there are essential extensions, like proper map components, that are only available for Vaadin 8 at this point. Thus, I would choose Vaadin 8 today for most of the applications I maintain.
But, I expect this to change in not so distant the future. I'm not going to estimate if it will take a half year or 3 years, but at some point in the future, Vaadin 10 will have better Java API and better set of extensions. Also, going with Vaadin 8 I accept the fact that I might need to migrate to Vaadin X at some point ( 5+ years from now), when free security updates are no more provided for the old version. With Vaadin 10 the migration to latest LTS comes around the same time, but the effort is expected to be smaller.
There are also situations where I'd choose Vaadin 10 as well, already today. If my team would have a front-end developer, who is willing to take control of the client side stuff, I'd definitely need the flexibility provided by the new version. Also, if my app would have a complex custom component in a central part of the app, Vaadin 10 would probably be the more efficient basis for my next success story.
I hope this article helps you to make wise decisions, but I know, it is hard to choose from two damn good but still so different options ;-) If you have any further questions or hints for others to make this tough decision, share them below!