User interfaces are important because they are how users see the underlying system.
Users are specialized kinds of objects, and should be treated as such in the business and software model.
Users also require specialized interfaces to present object state and accept input.
An object is represented by a window, an attribute by a control or field, and a method by a menu option.
The user interface can therefore be automatically created from the class.
The presentation and access is modified according to the role(s) that the user can perform.
Default presentation may be modified by formatting pictures and parameters.
Java™ supports introspection via its reflection capability, by which a class may be queried about its interface.
This allows a universal client to dynamically create the user interface to a class based entirely on its interface.
The Java™ abstract windowing toolkit (AWT) provides the controls and layout management for such an interface. This is to be extended via the Java™ foundation classes (JFC), Java™ beans and Active-X bridging technology.