Do the words JProfiler or Install4j sound familiar to you? Well, they are both popular products developed by ej-technologies and for this month’s Community Spotlight, I had the pleasure of talking with one of its founders, Ingo Kegel. Ingo and his team used Vaadin to develop the front end of their new product, Perfino, a promising JVM monitoring tool for production servers. Ingo is also a very active member of the Vaadin Community, having published a couple of add-ons, one of them recently merged into the core of Vaadin.
Hello Ingo, it’s great to talk with you! I was really looking forward to it.
Me too! My Vaadin-based monitoring tool Perfino 3 has been released last week and I'm ready to talk about it and my general experience with Vaadin.
Congrats! I played with the demo and the UI components on it look familiar to me… what can you tell us about it?
Indeed! Vaadin is a very good fit for the Perfino UI which falls into the "admin UI" category. There is a lot of data in the backend in our case and the easy incremental delivery of data to the browser makes it very performant for large tables. Perfino is a relatively new tool but it's now reached a mature state in version 3. We've used the experiences of our first customers to improve the tool and we're really confident that Perfino delivers excellent value. It's very easy to set up, has extremely low overhead and a really simple and transparent licensing scheme.
What kind of technologies are you “mixing” with Vaadin in Perfino?
Perfino has a couple of separate parts. The most important part of Perfino is the agent which does not have any third-party dependencies apart from ASM. The collector is totally separated from the UI, and its most important external technology is a database. In the UI server we do not use any frameworks except for Vaadin. One important external client-side component is yFiles for displaying call graphs, which I integrated as a Vaadin Javascript component.
Would you say that development is simpler when your UI code is next to your backend code?
In a sense, the UI code in Vaadin is both frontend and backend code at the same time, so yes, eliminating the transport layer between browser and server is priceless in terms of developer productivity. Our real backend is the collector which is not coupled to the UI, because it must be able to run in a separate process.
How do the frontend and backend communicate in Perfino?
Via RMI, but that's only optionally the case if the collector needs to run in a DMZ. Usually they run in the same process.
What about the persistence layer? What technologies do you use there?
Plain SQL. We need every extra bit of performance and we need total control over what is executed on the database. Persistence layers are great for applications with data from complex business domains, but not in our case.
Why did you decide to use Vaadin for Perfino?
I compared a lot of frameworks, mostly client side based ones. Vaadin seemed like a silver bullet for me in how it combined backend and frontend development into a single layer, so I went with it. I'm fluent in Swing programming so learning Vaadin was extremely easy. Mostly, my expectations have been met and I feel like the time for developing complex UIs is an order of magnitude shorter than it would be with some client-side frameworks. Of course there are drawbacks, but they are not especially significant for me. For example, when you want to "break-out" of the framework and extend it yourself with new client-side functionality, you have to understand the orchestration that goes on behind the scenes. But if you go with what the framework offers, you really don't have to do that.
And in fact, you indeed digged into the code and now are a committer of the Vaadin framework itself. What’s the story behind this?
Well... nearly every web application needs a login form and I rely on the browser to save my user credentials and auto-fill the form for me. With Vaadin, this was not so easy. When you click on a button, the interaction goes through a server-side loop and the browser does not see a direct submit of a form. Vaadin had a special login form component before, but then modern browsers became more restrictive and it stopped working and eventually it was deprecated. So I decided to develop my own login form component as an add-on. A couple of Vaadin versions later, that add-on was merged into the core in place of the deprecated component.
Awesome! It was a pretty popular add-on with more than 20.000 downloads and now available out-of-the-box. I bet you received a lot of positive feedback.
The user feedback was very helpful in getting it work in all kinds of different situations. As a single developer you sometimes only test things in one way - for example, I always closed the auto-complete drop-down with the enter key, but the tab key did not work for auto-completion, as another user pointed out. So this open development benefits my users, as well as everybody else.
Yes, that’s one of the advantages of having an active community in open-source projects. Vaadin has been around for more than 15 years already, but what’s your personal view of the future of Vaadin in contrast with pure client-side frameworks?
Well, I don't see how advances in client-side-only frameworks could threaten Vaadin. And with its web components strategy, Vaadin seems to have an interesting angle for breaking into the client-side only development. I'm personally looking forward to the immensely improved data-binding in Vaadin 8 and I hope that Vaadin will continue to work on the Grid component and add lots of features to it, for example hierarchical support.
Well said! Thank you Ingo not only for your contributions to the Vaadin framework but also for sharing your thoughts in this interview. Best wishes with Perfino and your future projects!
Thanks a lot Alejandro! Bye!