One unique feature of Vaadin Framework is the way it automatically manages communication between the user's browser and your server. The biggest benefit of this is not directly related to communication, but rather that you can use a very productive programming model.
Security is another area where the communication features and programming model are very useful. Thanks to those, the framework provides automatic protection against vulnerabilities, such as cross-site request forgery, while the built-in components take care of cross-site scripting unless explicitly configured to render data as HTML. The framework can also ensure that a component that is disabled or completely removed from a view will not be able to accidentally receive any messages from a malicious client. These are things that you might have to take care of manually with other programming models.
The situation where you're most directly using the communication features of the framework is when you create a custom client-side component implementation. For communication between the client-side and server-side part of your component implementation, you can simply define a Java bean that holds any server-side data that should be available on the client and use regular Java interfaces for doing RPC in either direction. The framework takes care of converting your data to JSON before sending it over the network and then converting it back at the other side. It also keeps track of the URL to use for sending HTTP requests and internally routing each message to the right component. Using the same Java class or interface definition on both sides also means that the sides will always be in sync when refactoring.
One final noticeable feature is server push. A typical web application works so that communication only happens when the browser sends a request to the server and the server returns a response to that request – the server cannot initiate the contact. This is no problem, if communication is only needed for reacting to user input. The situation changes when the user is only passively waiting for updates from the server, e.g. progress updates for a slow batch job, or receiving new messages to an inbox or a chat window. With Vaadin Framework, you only need to add the @Push annotation to your UI class. The framework then automatically takes care of establishing a bi-directional communication link and keeping track of when to send messages.
As you have seen, there are several areas where the communication functionality in Vaadin Framework helps you create applications that serve your users. The most important area is the programming model that combines the main benefits from both thin and thick client architectures. Other important areas are security, integration of client-side components and the turnkey server push support.
Try Vaadin Framework