Vaadin lets you build secure, UX-first PWAs entirely in Java.
Free ebook & tutorial.
How to sell Vaadin to my customers?
I've been developing in Vaadin some years and currently I have a company which is delivering complete applications to customers. We were thinking to offer also vaadin development for our customers (besides ReactJS+API), but the question is ... what are the key points that could be benefitial for them?
For me, vaadin has some concepts that I am just not simply fan of:
1- when you do UI in Java, you tend to mix business logic with UI logic. This breaches the current way of development (JS frontend + REST API). How to prevent this correctly? In my projects I did it simply... Vaadin UI was a independent project and I was communicating with REST/SOAP endpoint on the same server. Performance maybe not ideal, but the code clean.
2- load balancing. How can I do this in Spring boot environment? I see that in J2EE (wildfly) one can serialize the requests between nodes and thus keeping the servers in sync with load balancer in front of them. How can I do it in Spring boot / Tomcat environment? In REST/JS is one request one transaction... in vaadin every transaction must get the same context on server...
3- the development of framework just goes bit slow... maybe this is just not the case anymore, as I see that you are putting great effort in development last year, but in the past... I had to make from the ground up the REST loader for the vaadin table. Now it is already included, but it was not that easy thing (paging, sorting, filtering ...), if you think of how easy is this in jquery datatable (provide URL and go!).
So and the real question, what are really the keypoints of vaadin development, which I could mention in my discussions with customers? Some breath-taking aspects of vaadin. We will just still offer JS development, but we do not want just throw away experience got from years of development in vaadin. That's why I would like to be prepared for the question: "... and what is that vaadin thing in your technology stack?"
About point 1 - Plain REST or SOAP is one simple way. Another is to follow some architectural pattern (like MVP). You can combine both of these easily if you use Spring - business logic should go into Services layer and its implementation can be anywhere as far as the UI is concerned. Also remember that writing UI code in JS isn't any guarantee that business logic isn't seeping into the UI side - I'd say that if you're not paying attention it's just as easy to slip and, for example, make some calculation in JS where you really should be creating a new service instead.