blob: e2ceb067a3e2a75e6cf1a7ef4d4cf898baacec42 [file] [log] [blame]
<div>
<h3>q07 Fragment removed</h3>
<p>
The fragment org.eclipse.rap.rwt.q07 is no longer needed and has been removed.
The contents are now located in the org.eclipse.rap.rwt bundle.
</p>
<p>
The q07 fragment had originally been introduced to be able to support different versions of
the qx client library. Meanwhile, we decided to maintain and evolve our own copy of this
client library
(<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=320993">bug 320993</a>),
so the fragment is not needed anymore.
However, with the new protocol
(<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311355">bug 311355</a>),
it will become possible to plug in alternative clients for RAP.
</p>
<h3>OSGi Integration</h3>
<p>
A new bundle org.eclipse.rap.rwt.osgi has been introduced that integrates RAP with OSGi.
With this architectural change, it is now possible to use RWT in OSGi applications without
having to include org.eclipse.rap.ui and all its dependencies.
Instead of registering your RAP application's entrypoint, theme, etc. as extensions
(which involves dependencies to the extension registry and more equinox core bundles),
you can now implement the service interface
<code>org.eclipse.rwt.engine.ApplicationConfigurator</code> and register it as an OSGi
service.
</p>
<pre><code>public class MyConfigurator implements ApplicationConfigurator {
public void configure( ApplicationConfiguration configuration ) {
configuration.addEntryPoint( "default", SimpleEntryPoint.class );
configuration.addBranding( new AbstractBranding() {
public String getServletName() {
return "myapp";
}
} );
}
}
</code></pre>
<p>
The RAP workbench also uses this new bundle to connect with an OSGi HTTP service, so
you'll always have to add this new bundle to your launch configurations.
</p>
<h3>Runtime Feature Split</h3>
<p>
The runtime repository now contains two different features:
One contains only the RAP bundles and the other feature provides all bundles that are
required for a complete RAP target platform.
If you want to create a simple RAP target platform, you'll need both.
</p>
<p>
This split will make it easier to work with mixed targets.
If you already have the Equinox Core SDK and Jetty, you'll only need to add RAP itself.
This way, you prevent duplicate bundles in your target platform.
</p>
<h3>Failover and Clustering Support</h3>
<p>
Support for transparent session failover was added to RWT. This enables applications to
run in a high-availability cluster.
</p>
<p>
RWT had to be extended in two places to achieve this. An alternative life cycle was
implemented that does not use a <em>UI Thread</em> because threads cannot be migrated.
With this <em>simple</em> life cycle implementation, RAP isn't fully compatible with SWT
anymore, but the differences are small.
As a side effect, this life cycle also eases integration with JEE and other
technologies that use thread-local variables to access to security or transaction
contexts.
</p>
<p>
The second area of work was to enable sessions to be replicated between cluster nodes.
Therefore all classes in RWT whose instances will have session scope were made serializable.
Note that application code must also be prepared in that all objects that live in the
session scope must be serializable.
</p>
<p>
Serializable RWT sessions can also be used to swap inactive sessions onto disk and thereby
releasing the memory consumed by them. This allows for infinite session timeout settings
and saves users from annoying 'the session has timed out' messages.
</p>
<p>
For further details, please visit our
<a href="http://wiki.eclipse.org/RAP/RWT_Cluster">Cluster wiki page</a>.
</p>
<h3>UICallback Improvements</h3>
<p>
The UI callback was redesigned and made more robust.
</p>
<p>
When a callback request fails, the client sends a new callback request to re-establish
the broken callback connection. To avoid unnecessary load on the client, retry requests
are sent with a suitable delay.
</p>
<p>
On some servlet engines, an active UI callback prevented the session from expiring. This
has been solved so that applications can activate the UI callback without interfering
with the session timeout.
</p>
<p>
The <a href="http://wiki.eclipse.org/RAP/UI_Callback">Server Push wiki page</a>
summarizes how the mechanism works internally.
</p>
<h3>Text Shadows</h3>
<p>
The Theming now supports text shadows for most widgets that display text:
Shell, Label, CLabel, CTabFolder, Button, DateTime, ExpandBar, Group, Link,
List, Spinner, TabFolder, Menu, ToolTip, Combo, CCombo, Tree, Table, Text, and ToolBar
</p>
<p>
<img class="framed" title="Text Shadows in RAP" src="images/Text-Shadows.png" />
</p>
<p>
Text shadows are not available in Internet Explorer due to this browser's lack of support
for this feature.
Transparency for text shadows is supported using the
<a href="http://www.w3.org/TR/css3-color/#rgba-color">rgba</a> notation for color.
Example:
</p>
<pre><code>Button {
text-shadow: 0 1px 0 rgba( 0, 0, 0, 0.3 );
}
</code></pre>
<h3>Virtual Tree</h3>
<p>
The server-side part of the Tree widget was considerably improved and optimized. Now,
a Tree with SWT.VIRTUAL style can handle huge item counts without performance degradation.
</p>
<p>
For a live demo, check out the tab called <em>Complex Data</em> in our
<a href="http://rap.eclipsesource.com/">Examples demo</a>.
</p>
</div>