In the last community spotlight, the focus was on add-ons and celebrating the first 500 of them. Let’s dedicate this month’s episode solely for community efforts that are NOT in the Directory and that are not Vaadin add-ons.
No library is an Island, entire of itself
Nicolas Frankel, known of his quality Vaadin Books, is one of the most active Vaadin advocates out there. He blogs about generic developer topics, but they often relate to Vaadin. During the last months, he has written a nice tutorial for Docker that just happens to use a Vaadin app as an example. Creating well structured UI code has always been a passion for Nicolas and he recently also wrote about clean MVP implementation using Spring and Vaadin.
In a true OSS manner, Nicolas also pushed his improved MVP implementation to a Vaadin add-on called vaadin4spring. Technically speaking, it is not a Vaadin add-on and not listed in the Directory, but a Spring “add-on” that provides helpers for Vaadin developers. Thus, I think we are allowed to discuss about it in this episode ;-) The less than a year old “hobby project”, started by Petter Holmström (Vaadin Ltd) and Josh Long (Pivotal), has turned into a really popular basis for Spring based Vaadin apps, … ah, sorry, Spring apps that use Vaadin for the UI. 114 stars, 70 watchers and almost 50 forks in GitHub is a great result for a newish helper library!
In my recent architecture rant, I made a strong claim that most modern Java web apps should be based either on Spring or Java EE. Now that Spring got its paragraph, I guess I need to be fair and give Java EE evangelism one too. Rob Gravelle is in the middle of writing a series of articles about creating web applications using the Java EE environment. He is using Vaadin there to build a mobile web UI for the example application. In the last episodes, he has covered how to setup the development environment with plain Eclipse targeting the GlassFish server. Previously he has e.g. covered the basics of JPA and the lightweight modern EJBs. I’ll be eagerly waiting for the upcoming episodes to get to the real meat.
The common programming model for all platforms
The component based programming model of Vaadin is indeed well suited for mobile development as well. Aubrey Kilian compares Vaadin development to Android development, but instead of an Android app, you get an HTML5 based web app. And this is indeed a nice catch: the experience you have from component based UI libraries can be adapted almost as such to many other UI frameworks. A common path for new Vaadin developers is that they have previously developed large internal Swing apps, that nowadays need to have a superb browser based UI. Their years of experience on desktop apps helps them to get started really quickly, thanks to the familiar programming model that Vaadin provides. And also, the experience you gain with Vaadin can be adapted to Android development and, as not all desktop Java apps are dead, also to e.g. Swing or JavaFX based desktop apps.
Speaking of Swing applications, SIB Visions’ Rene Jahn also wrote to a German publication called Java Aktuell, about adapting the same UI code to different UI technologies. With a carefully built architecture, just by changing the “adapter” you can choose the “output” to be either a Swing (for desktop) or a Vaadin (for web) application. This is a pretty well known pattern for our own customers as well, e.g. when converting desktop or applet based Swing apps to modern Vaadin web apps.
Other blog entries and events
SIB Visions’ developers have again created lots of other Vaadin related blog entries. Like with Nicolas, their blog isn’t by no means Vaadin specific, but lots of their projects are using Vaadin and thus there are topics like SAP Hana, embedded systems (Rasperry Pi servers, Smart TVs as clients), IoT and server push, often with a UI built using Vaadin.
Roland Krüger has written excellent instructions for a truly resource friendly ComboBox usage, in a real world DB backed use case. This is an essential article for all users who need to use ComboBox in a truly memory efficient manner, with large datasets. Last week I wrote about a related topic, as well. I wanted to simplify wiring a lazy loading (read: paging) service layer, e.g. JPA facade or Spring Data repository, to a lazy loading UI component, like Table or Grid. I’m pretty satisfied with my solution, but I’ll definitely need to check if a similar solution could be adapted to ComboBox as well.
If you happen to be in the Nordic countries next week, consider taking a last minute trip to Turku and visit Vaadin HQ next monday. We are organizing a “super tech Monday” with various events. You can first join our Industrial Prototyping hackathon during the day and then enjoy the icy Baltic Sea on the Vaadin MeetUp Cruise to JFokus. The free “mini conference” has interesting presentations by Simon Maple, Sven Ruppert, Holly Cummins and Henri Muurimaa.