- a zero-install DHTML/Ajax client engine
- rich user interface components & services
- client-server databinding systems
In SmartClient, all presentation duties, and all HTML generation, takes place in the browser. No HTML generation or presentation duties are handled by the server. Once a SmartClient application has loaded, only data is transmitted between the browser and server.
By minimizing server contact, this architecture boosts responsiveness and scalability far beyond what is possible with server-side architectures such as JSF. By minimizing the amount of server-side code, the architecture also improves stability and reliability (only server code can crash the application for all users).
SmartClient integrates with any server platform through standards-based approaches such as REST and WSDL web services.
SmartClient also includes a Java integration server for accelerated integration with Java servers, with special support for popular Java frameworks such as Java Beans/EJB, Spring, Struts and Hibernate.
SmartClient components can be easily embedded in existing applications. Grids, forms, trees, dialogs, wizards and other SmartClient components can be added without making architectural changes.
When embedded in this fashion, SmartClient components are fully functional, still capable of drag and drop, dynamic databinding, data paging and adaptive client-side operations.
Using standard object-oriented approaches, you can extend, customize and create new SmartClient components without ever learning low-level Ajax techniques or doing cross-browser testing and debugging.
Ajax MVC (like Struts for Ajax)
Going beyond just widgets, SmartClient provides a model/view/controller architecture within the browser. Like a "Struts for Ajax", the SmartClient MVC architecture provides a standardized model for server contact that simplifies Ajax applications and allows developers to quickly learn each other's code. This avoids the "code soup" typical of projects that adopt widgets-only Ajax frameworks, where loading and saving of data is done differently on every screen.
Ajax MVC also provides tremendous performance and scalability benefits. All loading and saving of data is performed by intelligent data manager components, which:
- cache and reuse loaded data in multiple views without further server contact
- handle load on demand for high data volume applications
- adaptively perform operations such as sorting and filtering within the browser
The first step in Ajax adoption is often the most catastrophic: as developers create new screens with Ajax grids, forms and other components, they duplicate basic metadata such as field names, types, and validation rules in a vendor-specific format. This results in a brittle, difficult to maintain applications that are permanently tied to one technology.
SmartClient allows you to use standard sources of metadata, such as Java Beans or XML Schema, to configure SmartClient components. For example, the columns of a grid component can be derived from Java Bean properties, or the fields of a form can be derived from XML Schema definitions embedded in a WSDL file.
Presentation-specific attributes can be dynamically layered on top of standard metadata, combining the customization features necessary for delivering your final application with the simplicity of working with the metadata you already have.
Offline, desktop, mobile capable
Through the Adobe AIR platform, Firefox extensions, Google Gears and other technologies, SmartClient supports both offline capabilities and desktop-installable versions of SmartClient applications, without the need to change any code.
Through the Apple iPhone's support for the full Safari browser, as well as other devices that support full versions of the Opera or Internet Explorer browsers, SmartClient applications can reach the mobile world with no change in code.