Summary<br />This presentation focuses on the advantages that GraniteDS brings over BlazeDS in the following areas:<br />Licensing and Support.<br />JPA Integration.<br />Remoting.<br />Real-Time Messaging.<br />Client Frameworks.<br />Validation and Numeric Types.<br />Mobile Platforms Support.<br />Roadmap.<br />2<br />
Licensing / Support<br />3<br />GraniteDS<br />is made for enterprise-grade projects:<br /><ul><li>License is LGPL v.2, widely used and accepted by big corporations.
An enterprise version of the product is available with long-term maintenance.
Development and production support is provided by Granite Data Services Inc.</li></ul>BlazeDS<br />is made for open-source or small projects:<br /><ul><li>License is LGPL v.3, less used and generally refused by big corporations.
No enterprise version, long-term maintenance or support is available: security updates and bugfix patches are only available through new versions.</li></li></ul><li>JPA Integration<br />4<br />provides an uncompromised integration with all major JPA engines (Hibernate, EclipseLink, OpenJPA and DataNucleus):<br />GraniteDS<br /><ul><li>Lazy initialization is fully supported. Uninitialized collections and single-associations are serialized as is and retain their initialization states internally.
GraniteDS emphasizes strongly typed AS3 entity beans. Entities on the Flex side are generated on-the-fly (Eclipse), based on their Java counterpart.</li></ul>BlazeDS<br />provides only partial integration with Hibernate:<br /><ul><li>Lazy initialization is only partially supported in the last version of the Spring-BlazeDS integration: uninitialized properties are set to null, without any metadata information.
Entities are serialized as loosely-typed ObjectProxies or must be written by hand.</li></li></ul><li>Remoting<br />5<br />GraniteDS<br />offers strongly-typed access to server-side components:<br /><ul><li>Client-side components are generated on-the-fly (Eclipse), based on their Java counterpart (EJB3, Spring or Seam).
Compile-time errors and code-completion helps in coding the Flex application and solving issues related to server-side refactoring.</li></ul>does remoting through the un-typed Flex class RemoteObject:<br />BlazeDS<br /><ul><li>No code-completion, no compile time-error, errors can only be detected at runtime.</li></li></ul><li>Real-time Messaging<br />6<br />uses asynchronous servlets for real-time messaging (“Gravity”):<br />GraniteDS<br /><ul><li>Much more scalable than the classical synchronous servlet model: 1 – 0.025 ratio between client connections and server threads.
Relies on long-polling, internet-proxies compliant.
Available for all major applications-server: Tomcat, Jetty, JBoss, GlassFish and WebLogic.
Clustering support through JMS distributed topics.</li></ul>uses simple polling or streaming through synchronized servlets:<br />BlazeDS<br /><ul><li>Not scalable: 1-1 ratio between client connections and server threads.
Relies on simple polling, not truly “real-time”.</li></li></ul><li>Client Frameworks<br />7<br />GraniteDS<br />comes with a powerful Flex framework (“Tide”):<br /><ul><li>Context and sub-context management: all received instances of a same entity are merged into a centralized location.
Transparent lazy-loading: uninitialized properties are automatically fetched when they are accessed for the first time.
[Managed] annotation support with dirty-checking support.
Data-paging, relying on the specific JavaEE framework capabilities.
Real-time synchronization of entities and conflict management.
Role-based security management, integrated with the underlying JavaEE framework security stack.
Dependency injection and event bus.</li></ul>BlazeDS<br />does not provide any Flex framework by itself:<br /><ul><li>Third-party frameworks can be used but do not provide tight integration with the underlying JavaEEframeworks.</li></li></ul><li>Validation / Numeric Types<br />8<br />comes with a powerful validation mechanism and supports all Java numeric types:<br />GraniteDS<br /><ul><li>Implementation of the Bean Validation specification (JSR-303) in ActionScript3: constraint annotations placed on bean properties are used in order to validate bean properties.
Java annotations in JPA entities are replicated by code generation.
BigDecimal, BigInteger and Long Java types are implemented in ActionScript3: no loose of precision/scale at serialization time and possible arbitrary-precision computing on the Flex-side.</li></ul>BlazeDS<br />does not provide any such features:<br /><ul><li>Validation relies on the standard and cumbersome Flex mechanism.
BigDecimal, BigInteger and Long Java types are all serialized as Doubles (AS3 Numbers) with possible loss of precision/scale.</li></li></ul><li>Mobile Platforms Support<br />9<br />GraniteDS<br />provides native libraries for the Android / iOS platforms:<br /><ul><li>Written in Java (Android) or Objective-C (iOS).
AMF3 remoting through dedicated channels: no changes on the server-side.
Integrated with code-generation tools: Objective-C entities and services / Java services*.
Blackberry support*.</li></ul>(*) Planned for Q1 2012.<br />BlazeDS<br />provides limited mobile integration:<br /><ul><li>Mobile platform support is provided as Air applications, with important performance issues and native integration limitations.</li></li></ul><li>Roadmap<br />10<br />roadmap features state of the art technology enhancement long-term:<br />GraniteDS<br /><ul><li>Extended mobile platforms support.
Large-scale cloud deployment services (GAE is already supported).</li></ul>may encounter a “conflict of interest” with reliable feature additions:<br />BlazeDS<br /><ul><li>While Adobe is interested in a strong open-source project, it has limited incentive to extend the technology significantly as this could compromise adoption of its commercial product, LCDS.</li></li></ul><li>Contact Us<br />http://www.granitedataservices.com<br />http://www.graniteds.org<br />Granite Data Services Inc.<br />1501 Broadway - 12th Floor<br />New York, NY 10036<br />+1 (646) 535-5048<br />firstname.lastname@example.org<br />11<br />