I have been Java Developer for most of my software developer career. I have been involved in all kinds of projects – Java Back-end, Front-End, Native Android, even in some small cases in embedded applications. I was a little bit closed up to the functional programming to be honest. I probably don’t know everything in deep details because of my unfocused attention but that is not always a disadvantage. The benefit of touching a lot of stuff is that you could potentially open up your eyes to wider horizons.
It give you full control over the flow of the information. This can be a good thing from one point of view. If you need more control over what information is transmitting to the server and back, what is saved locally – how and when the information is moving etc.
This is feature from developer (coder) point of view means more coding (code) that could potentially create more bugs. If the business case is such that you don’t need such control, maybe Vaadin Framework may be better choice of technology. In the incoming version 10 of Vaadin there will be more client side and server side components so you – you’ll have more options soon.
Here are some tips from my experience:
In this framework – the data transmission is hidden behind Java Interfaces. So if you code your project entirely on GWT, you could forget about how the abstractions are made and implement it all in Java. This is also true in Vaadin. Internally it uses optimized custom data transformation. At least this is the way I was using GWT. There are also methods to use existing REST /JSON/ Services with a little bit of extra work.