The web client is the default client delivered by the RAP server if an application URL is entered into a web browser.
As of RAP 1.5, the following browsers are supported:
- Internet Explorer 7+
- Google Chrome 7+
- Firefox 3.5+
- Safari 4+
- Opera 10+
- iOs 5+ (Safari)
- Android 3+ (stock browser, limited)
The web client is represented on the server by the class
org.eclipse.rap.rwt.client.WebClient. (Since RAP 2.0.) An instance can be obtained via
org.eclipse.rap.rwt.RWT#getClient(). Besides the methods specified by the
org.eclipse.rap.rwt.client.Client interface, it also provides a number of constants that may be used in the configuration map of an application entrypoint.
WebClient#getService() method can be used to obtain the follwing supported services:
Diferent clients may support different services. If you target multiple clients, check for null before using a service.
Until RAP 1.3 the web client was based on qooxdoo. In RAP 1.4 qooxdoo 0.7.4 was forked, trimmed down, and largely re-written to better fit the specific needs of the RAP project. Therefore, the API reference for qooxdoo is no longer valid for the RAP web client.
RAP uses HTML to render most of the GUI. The <div> tag is nearly the only element used. The exceptions are <input> elements for text fields and the Upload widget, and <iframe> to support the Browser widget and BrowserHistory. (<img> may be used in some older code that is targeted to be removed.) CSS3 is used where available to render visual effects like rounded borders. If CSS3 is not sufficiently supported, SVG and VML are used as a fallback.
Drawing (via Canvas/GC) is implemented using the HTML5 <canvas> element, except in Internet Explorer 7 and 8, where VML is used instead. <canvas> is significantly faster than VML, and complex drawings should be avoided when targeting IE7/8.
The web client uses the RAP Protocol to communicate with the RAP server via HTTP-requests. The protocol was introduced in RAP 1.5 for server-to-client messages, and is also used for client-to-server messages since RAP 2.0. The syntax of the protocol is stable API since RAP 2.0, while the actual types and properties are currently not considered public API. (Meaning there may be breaking changes in minor releases). All changes are documented in the corresponding bugzilla entries using the keyword "protocol" on the whiteboard field.