SmartClient / Smart GWT vs. Competing TechnologiesIn a nutshell:
Feature Descriptions (and samples)The following brief feature descriptions describe the features in the table above, and provide links to live examples and documentation.Client Features (Summary): SmartClient LGPL and Smart GWT include all in-browser components, including all UI components and all client-side databinding systems, with the sole exception of the UI components involved in the Analytics module (CubeGrid and Chart) and communications code designed specifically for interactions with the SmartClient Server Framework. A complete system ready for binding with any REST or WSDL services or with GWT-RPC. Server Features (Summary): Server features are based on the SmartClient Java Server Framework, a set of standard Java .jars, servlets, jsp tags, tools and other resources that work with any standard J2SE or J2EE servlet engine or application server and with any standard Java IDE. The SmartClient Server Framework can be installed into existing projects and is compatible with popular Java frameworks such as Struts or Spring. Calendar Provides out of the box drag and drop calendaring interface similar to Google Calendar, including day/month/week views and automatic persistence to any data provider. Calendar can also visualize any dataset that contains date/time information. (SmartClient example ) (Smart GWT example) Pluggable Data Model UI components support a "pluggable" data model that provides both a description of the data(fields, types, validation rules, etc) and operations to fetch and modify data. This "pluggable" data model approach means user interfaces can be re-used with any data provider without change. Screen designs such as master-detail navigation can be easily captured as custom components that are then usable with any data model - you can even swap the data model on the fly. (SmartClient example)( Smart GWT example) Advanced Filtering: Allows end users to define advanced search criteria, such as fields being greater or less than target values or matching a pattern. Advanced mode provides power equivalent to a SQL "where clause". Searches are easy to save and restore. Adaptive Filter & Sort: Combines large dataset handling with adaptive use of client-side filtering and sorting: to handle datasets that are too large to download completely in advance, filtering and sorting initially take place on the server. When all matching records have been loaded client-side, SmartClient automatically & transparently switches to client-side filtering and sorting. This provides immediate responsiveness and dramatically reduced server load. Works with any server platform; Java Servers with SmartClient Pro or better have built-in support for server-side filtering for SQL and Hibernate. (Adaptive Filtering example: SmartClient, Smart GWT) (Adaptive Sort example: SmartClient, Smart GWT) Server Data Binding: Provides a simple Java API for handling requests for data from SmartClient visual components. Greatly accelerates integration with Java-based servers as compared to building REST or WSDL services for SmartClient components to consume. Client-to-server communications are handled automatically and transparently via a high speed, compressed protocol. Sophisticated client-server protocol handles data paging, server-side sort, automatic cache updates, validation and other error handling, optimistic concurrency (aka long transactions) and binary file uploads. Requests can be routed to Java classes via simple XML declarations, and required parameters to the method are fulfilled automatically, similar to Spring's "dependency injection". (Custom DataSource example: SmartClient) (DMI example: SmartClient, Smart GWT) Server-side Validation: Both client and server validation are driven from a single XML declaration, with a built-in set of validators similar to XML Schema or JPA restrictions. Custom validators can be added. (SmartClient example) (Smart GWT example) UI Auto-mapping: Intelligent 2-way binding between persistent Java objects and UI components handles arbitrarily nested objects, Java Enums and Generics, avoids transmitting unused data to the browser without the need to write separate DTOs (Data Transfer Objects), and even allows bi-directional XPath-based mapping between UI fields and Java objects, when loading and saving data. (Data Selection example: SmartClient, Smart GWT) (Saving nested objects example: SmartClient, Smart GWT) SQL Connector: A Wizard enables a DataSource to be generated from existing SQL tables, or SQL tables generated from a DataSource. In both cases, the DataSource is capable of performing all CRUD operations (create, retrieve, update, delete), including query-by-example search, without the need to write any server code. Java business logic may be added to modify requests before SQL is executed, modify responses, or take any other action. (SQL Connector in action: SmartClient example, Smart GWT example) (example: SQL Wizard screenshots) Hibernate Connector: A Wizard enables a DataSource to be generated from an existing Hibernate bean, or a beanless Hibernate configuration can be generated from a DataSource. In both cases, the DataSource is capable of performing all CRUD operations (create, retrieve, update, delete), including query-by-example search, without the need to write any server code. Java business logic may be added to modify requests before they are passed to Hibernate, modify responses, or take any other action. (Hibernate Connector in action: SmartClient example, Smart GWT example) (example: Hibernate Wizard screenshots) Queuing: Queuing allows multiple data load or save requests from different UI components to be transparently combined into a single HTTP request with guaranteed in-order execution. Queuing makes it easy to reuse data operations across different screens and in different combinations without needing to write screen-specific code to combine operations together. Queuing also makes it simple to define transaction boundaries when data in different UI components need to be saved together. (SmartClient example) (Smart GWT example) HTTP Proxying: The HTTP Proxy allows an application to access to web services hosted on remote servers, which are normally inaccessible to web applications due to the same origin policy. Once installed, the HTTP Proxy provides transparent proxying of requests without further configuration (public sites may wish to whitelist specific services that may be accessed via proxy, for security reasons). (SmartClient example) (Smart GWT example) Excel Export: Allows any grid component to export its current dataset as CSV (comma separated values), for download or viewing in Microsoft Excel and other tools, without the need to write any server code. Exported data respects the user's current column order, sort direction, search criteria, and shown vs. hidden fields. Works with any DataSource type (Hibernate, SQL, custom). (SmartClient example) (Smart GWT example) Advanced search: Complex searches assembled via the FilterBuilder component can be executed against SQL or Hibernate without the need to write any code. (SmartClient example) (Smart GWT example) SQL/HQL Templating: Allows the SQL or HQL queries automatically generated by the SQL and Hibernate connectors to be easily customized directly in the DataSource definition, by overriding specific clauses from the automatically generated query, without the need to Java code. SQL Templating makes it trivial to use SQL joins while retaining built-in features like advanced search (SmartClient example) (Smart GWT example). Even complex reporting queries can still leverage search, data paging, and other built-in features (SmartClient example) (Smart GWT example). Batch Uploader: An end user interface for batch upload of data as a pre-built, customizable component. User can upload data, have it validated, make corrections, and save the data to a target DataSource. Supports a variety of upload formats and any data store that can be connected to SmartClient. (SmartClient example) (Smart GWT example). Network Performance Module: A set of services designed for enhanced delivery of SmartClient applications in WAN, internet and extranet environments, including:
Analytics Module: Specialized components for viewing, navigating and editing very large, multi-dimensional data sets (also known as data cubes) for business intelligence, analytics and reporting applications. (example:Basic Cube) (example:Cube load on demand) (example:Cube with charting) Real-time Messaging Module: Real-time data delivery via HTTP streaming (aka "Comet") for monitoring, command & control, trading desk and real-time collaboration applications involving time-sensitive, continuously updated data. SmartClient Messaging supports data delivery rates sufficient for continuous full-screen refresh and works through firewalls, HTTP proxies and other intervening network devices that can cause issues with other HTTP Streaming / Comet implementations. Supports codeless integration with JMS (Java Message Service) and a custom connector architecture for other message sources. Indemnity, Warranty, custom terms: (Not strictly a feature) Enterprise licenses come with the legal protections typically required by large enterprises for risk management reasons. Exact terms can be modified to suit your organization's legal requirements. Batch DataSource Generator: Can produce fully functional SmartClient DataSource definitions from Java beans, Hibernate mappings, and SQL database schema. Allows an organization to import their entire set of business objects and relations into SmartClient as fully searchable and editable objects, with zero duplication. Comes with source code and instructions for modifying the default generation process to take advantage of organization-specific annotations, naming conventions and other sources of additional metadata that can drive SmartClient component behaviors. Visual Builder Team License: Allows deployment of Visual Builder as a central design and development hub on a shared server Visual Builder is SmartClient's drag and drop visual screen design and databinding tool, itself a SmartClient web application that can be accessed without installation of any kind. Central deployment of Visual Builder enables developers, product managers and designers to collaborate on a shared design by simply emailing a URL.
Visual Builder also eliminates waste and duplication in the design process: instead of the
throw-away "wireframes" produced by typical design tools, prototypes built in Visual Builder
are real applications, ready to deploy or to customize further inside traditional development
tools.
Learn more..
Deeper Discussion (on question marked items)Client-side Events and Adaptive Filtering: Because of the inability to write client-side event handlers, server-centric technologies such as ZK and JSF can't support many use cases that are common in modern applications, such as rapid data entry with field interdependencies, customized client-side filter and sort, and custom drag and drop interactions.Server-centric technologies also incur many more server round-trips, making them less responsive and far less scalable than SmartClient & Smart GWT. While this problem can be partly mitigated in hand-crafted demos, in actual application development this problem gets worse as more customizations are added, requiring more and more frequent server contact. Finally, because in a server-centric architecture there is user interface code running on the server, applications are much more difficult to understand and audit from a security perspective. The RIA / SOA architecture used by SmartClient & Smart GWT creates a crystal clear boundary between the UI and secure data services, greatly reducing the possible types of attacks and the amount of code which could contain a security vulnerability. Because of these severe limitations, Isomorphic does not regard server-centric technologies as suitable choices for high-productivity, high performance RIA applications. Server Data Binding: As compared to our completely free offerings, server-oriented technologies make certain trivial server binding scenarios easier, such as hardcoded / tiny datasets. However they do not handle advanced data binding scenarios with the simplicity available with SmartClient Pro. (Master-Detail example: (SmartClient) (Smart GWT)) Ext Price: Timely access to Ext patches requires a support subscription, otherwise, patch availability may be delayed by several months, as only major dot releases are available to licensees who have not have purchased support. In contrast, patches to SmartClient and Smart GWT are immediately posted publicly, and licensed users are given special treatment on the SmartClient Forums.
For this reason Ext's combined license plus support price is more directly comparable to
the license price alone for SmartClient / Smart GWT. Isomorphic then offers further support services, such as SLA-backed support plans with
response time and resolution effort guarantees appropriate for mission-critical
applications.
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||