Using Vaadin to replace an old, large GWT project


I have a large web application that uses GWT and GXT (Ext-GWT) for the widgets. I’d like to ask if it makes sense to rewrite it using Vaadin.

The application uses Hibernate for its server-side data access. Almost every UI action needs to load or store data via the server. The thing I like about Vaadin is that I don’t need to worry about client-server communication anymore.

However, it also uses several custom components on the client side, most notably Google Maps and a javascript chart library.

I use a lot of the maps’ functionality; more than is currently available in the Google Maps Widget plugin for Vaadin. This means that I’ll have to write a lot of extra code for my maps implementation, plus a custom component for the chart library. What I’m also afraid of is that traffic between server and browser might increase a lot to keep the map’s state on both the server and the browser equal and to handle all incoming events (I use a lot of overlays on the map).

With these requirements, would it still make sense to use Vaadin or might it be better to continue using GWT?

This is mostly a question on how large are the painpoints in maintaining and continuing with the current implementation. Generally rewrites do not make sense without good reasons.

If you do decide to move to Vaadin, it might make sense to reuse some of the current functionality by packaging it as Vaadin components instead of re-writing everything.

Thanks for the reply.

Actually, the application is going to get a new UI anyway, so I’m taking this chance to also clean up the old UI code as well, since it’s very monolithic and has lots of idiosyncracies. Part of this is finding a nicer way to create the UI.

Apart from that, the biggest pain point is the way in which my model objects (from Hibernate) need to be transported between server and client. This has created some headache in the past, but that would neatly be solved by using Vaadin.

Of course I would be packaging my old maps and chart implementation as Vaadin components then, but it would mean writing a whole lot of code for the server-side as well. That’s my biggest worry. Plus, the project adds quite a lot of overlays on the map and I need to catch a lot of their events (dragging, clicking, mouseover, etc.) I’m afraid that the continuous round trips to the server for this could make the map implementation slow.