This is a partial list of major features that are rare or are unique to SmartClient (marked [u]). SmartClient also has several systemic advantages that cut across the entire product.
Intelligent Data Managers (the "M" in HTML5 MVC) [u]
- data caching allows reuse of data in multiple components without server contact (example)
- data paging and load on demand support for large datasets (example)
- automatically switch to client-side sorting if search results fit in cache
- automatically swtich to client-side filtering if search results fit in cache
- automatically integrates updates into client cache (example)
- customizeable data managers can be leveraged by custom components
Standardized Server Contact (the "C" in HTML5 MVC) [u]
- Standard, data-provider independant API for components to load and save data
- grid load, tree load, search form, combobox filter, databound select -> "fetch"
- edit record, grid inline edit, tree drag reparent -> "update"
- edit new record, create new row, drag copy -> "create"
- mapping standard API to a data provider allows all components to use that data provider
- create components and screens that can be used, unchanged, with any DataSource (example)
- data providers can be swapped out with zero change to application
- built-in support for WSDL and REST (XML or JSON) allows integration with any server
- built-in SQL and Java Beans support via SmartClient Server
Shared Metadata Model (the "V" in HTML5 MVC) [u]
- forms, grids, trees, detail views share a single metadata model ("DataSource")
- fields, titles, editability, validation and other metadata reusable across components
- field by field overlay allows both shared metadata and per-screen customization (example) (docs)
- components understand and navigate relations between objects (master-detail) (docs)
- schema chaining to model inheritance, create customizeable and verticalized applications (docs)
- extensible type system allows new basic field types (example)
SmartClient Server
- client and server-side validation based on single declaration (DataSource) [u]
- queuing and batching of operations to enable multiple CRUD operations in one HTTP turnaround [u] (docs)
- bidirectionl Java <-> JavaScript type-safe translation
- bidirectionl XPath binding to Java objects [u] (docs)
- automatic compression for data and content
- on the fly JavaScript stripping, combining, obfuscation [u] (docs)
- automatic fallback protocols (eg iframes) for older browsers / browsers with strict security settings [u]
- SQL table generation / data import for rapid prototyping
True Browser Insulation [u]
- Fully shielded from cross-browser testing and debugging, based on 5 key pillars
- See discussion under Advantages
Documentation
- searchable, online documentation viewer with inline examples makes finding answers easier (example)
- over 4x the documentation of any competing framework [u]
Advanced Skinning Features
- Round corners on any component, drag resizeable, animation-capable [u] (example) (example) (example)
- High quality, variable depth drop shadows (example)
- Pervasive support for icons within components
- Autofitting triple-image stretchable tabs and buttons (example) (example)
- Pervasive support for hovers (example)
Background Download [u]
- pre-load SmartClient while user views / interacts with plain HTML pages (docs)
- hides download time during login process / splash page so that user perceives instant loading
- for more significant to user experience than relative framework download size
Fluid Form Layouts
- space filling layouts make maximum use of space (example)
- create space-filling layouts that work even if some fields are not shown for current user [u]
Direct WSDL binding
- direct integration with WSDL web services without an intervening server
- automatic SOAP message formation from JavaScript data (eg from HTML forms)
- automatic XML namespace handling
Metadata Import [u]
- import existing metadata from XML Schema, Java Beans, other metadata sources (example)
- rich import captures validation rules, enumerated types, pattern restrictions, inheritance
- use schema chaining to layer presentation metadata over model metadata (example)
Relogin [u]
- Special handling for a background HTML5 operation that encounters session timeout
- User may log back in and original request is retried automatically (no data loss) (docs)
Reify Visual Designer [u]
- screen building tool intended for functional design (docs)
- zero-install, SmartClient application that runs in the browser
- load, save and share screens, using Reify Visual Designer as a central design hub for building mockups and "wireframes"
- customize for your organization: custom components, custom properties, custom skins, custom events, custom actions
- clean code generation: prototype can be refined and extended into final application, instead of scrapping prototype and starting over
- wizards for binding to RSS, REST, SQL, SalesForce, and Kapow Robots [u]
Data cube / OLAP support [u] (example)
- multi-dimensional data model navigation
- dual axis hierarchical dimensions, drill down, drill up
- drag and drop dimension rearrangment
- bi-directional cube-based load-on-demand
- charting engine integration
Accessibility
- UI components fully keyboard navigable out of the box
- automatic tab order management handles hardest cases [u]
- screen reader support via WAI (Web Accessability Institute) standards
History management
- Back/forward navigation and bookmarkability
- Flexibly tie history navigation to any application action
"Query by Example": Inline search row in grids [u] (example)
- maximally compact search interface
- enabled by a simple property, deeply customizeable
Plugin Management (Applets, Flash, ActiveX controls) [u]
- use plugins inside SmartClient layouts and windows, resize them, drag them, show and hide them
- drag and drop over plugins without burnthrough, jitter or hung drags
- drop onto plugins and receive normal drop events
Server push
- high volume HTTP streaming
- JMS integration
JavaScript class system
- create and extend classes within the browser
- real Super(), handling recursion and inter-recursion cases [u]
Incremental rendering in grids
- Only currently visible rows are rendered
- Allows data paging via a scrollbar instead of link-based paging
- Allow browsing and editing data without arbitrary page breaks separating rows
- Necessary for large trees (where link-based paging doesn't work)
- Better performance in grids showing large numbers of rows
- Incremental rendering and data paging works with variable-height auto-sizing rows [u]
Bi-directional incremental rendering [u]
- Necessary for grids with many columns
- Necessary for data cubes / OLAP navigation (example)
Get started today!
SmartClient is real, enterprise-grade HTML5: proven, complete, flexible and easy. SmartClient can radically accelerate your development of HTML5 applications and help you deliver a world-class user experience. Explore SmartClient or download the SDK to get started with SmartClient today.