When using portlet events, communication between portlets on a page is possible but does result in full page refreshes due to how JSR-286 portlet request lifecycle works. Therefore, I would recommend using e.g.
the ICEPush add-on and some other underlying communication channel if communicating between two Vaadin portlets for a smoother user experience.
Depends on the application. There should not be many portlet-specific aspects to this, so earlier discussions about servlets mostly apply. There is a performance penalty when using Vaadin compared to carefully designed GWT applications (Vaadin is a layer on top of GWT), but in many cases it is not significant and the communication requirements of Vaadin can also be lower than those of a naively implemented GWT application. The initial download of a large GWT application can be significantly larger than that of Vaadin.
Not that I am aware of, but maybe someone else knows of one. You could try to combine the information from some simple Maven-Spring-Portlet tutorial with a Vaadin-Spring tutorial, or a Vaadin-Portlet tutorial.
On Liferay, if you use custom widgets (from add-ons or written by you using GWT), widgetset compilation is probably best left to the
Vaadin Control Panel for Liferay .