RAP stands for Remote Application Platform, that is, the application is indeed running on the server but the widgets are displayed on the client. The widgets itself are half objects with a server-side and a client-side part that are synchronized over a JSON-based protocol by RAP. Widgets are created and manipulated on the server by Java code and synchronized with the client widgets.
While this approach is certainly not suitable for all types of applications, it provides a number of benefits, especially for enterprise software:
- Java-only programming model, reuse of existing tools and knowledge
- Code re-use through single-sourcing with SWT
- No sensitive business data or algorithms are ever transferred to the client
- Multi-platform: besides the Webclient, there are also native clients for iOS, and Android available
On the other hand, every user session consumes server resources, so if you expect many thousands of concurrent user sessions, RAP will not be your first choice.
You can read more about the differences between RWT and SWT in the RAP developer's guide.