Aria and Aria support a number of widget sets, some sharing a common ancestory and others significantly different. Aria abstracts the widget concept so that it can work with various widget sets in a consistent way. The ability to handle multiple widget sets means that with certain limitations you can switch between widgets sets without having to change large parts of your application.
TODO - Lots
Swing is probably the most sophisticated and best supported widget set supported by Aria. Most of the advanced graphcal components supported by Aria are Swing components and rely on the Java2D library for much of their power.
Swing is available on a wide variety of platforms, inlcuding some mobile devices. Swing's power really shines through on the desktop where it can be combined with technologies like Aria and Java Webstart to deliver compelling applications.
AWT, the original Java widget set lacks the sophistication of Swing but still allows powerful applications to be constructed. AWT has fewer components available than Swing, and this is reflected in Aria's support. The AWT and Swing widget support in Aria has been designed to allow easy switching rather than strict adherance to either API.
A major revision and implementation of the SWT widget set has taken place. The most important widgets are now wrapped and usable in Aria. The applet/application has also been updated to share the very latest Aria infrastructure. A number of helpers, utilities and layout components have also been included. Along with the core SWT development a sample SWT application manager has been included, the Aria International Soccer Manager, demonstrates how to build a complete application using Aria and SWT.
While Aria includes some HTML support it is incomplete and at the time of writing it should be considered experimental. The HTML support is designed to allow features of an application to be delivered via a web browser or to allow integration of Ajax like components.
J# is a Microsoft .Net platform modelled on Java and the AWT. J# also includes some incomplete support for Swing like components. J# support may be of interest to those developers who must support devices where no JVM is available. Aria's J# support is functional, but should still be regarded as experimental.
Some third parties have used Aria with other widgets sets on mobile devices (e.g. the LCDUI), please see the Aria forums for more information.
The ability to switch widgets sets is probably of most interest to developers of mobile applications who may have to support embedded applications. While Swing is becoming more widespread many mobile devices still do not support it and therefore AWT or SWT may be a more viable options.
Of course any common abstraction can make it difficult to support widget specific features and Aria's widget abstraction is no different. That said Aria does little to hinder access to native features, so you can still build the best possible UI.
The key to writing portable applications is to isolate the widget specific code as much as possible.