InfoQ

News

More on Granite Data Service's with Project Founder Franck Wolff

Posted by Jon Rose on Oct 20, 2008 04:51 PM

Community
Java
Topics
Web 2.0 ,
Rich Internet Apps ,
Rich Client / Desktop
Tags
Flex ,
Web 2.0 ,
Adobe Integrated Runtime ,
Adobe ,
Flash

Earlier this year, InfoQ discussed Granite Data Services (GDS) with project founder Franck Wolff. In this post, we follow-up with Wolff to learn more about the recent 1.1 release of GDS.

Wolff started by updating InfoQ on what's new in the latest release:

GDS 1.1 was released on October, 6 with three main new features:
  1. Tide: This module is intended to be a full alternative for the Cairngorm + Flex Data Management Service stack. On the Flex side, we have found Cairngorm to be a good Flex development framework but somewhat tedious to follow (numerous files required for rather simple operations). On the Java side, Flex Data Management is only available in LiveCycle Data Services, and some features required for us aren't implemented at all or not the way we expect them: standard J2EE frameworks integration (such as JBoss/Seam, Spring or plain EJB3), client-side entity caching, collection paging, and transparent lazy loading. Tide addresses all those requirements and targets for now the JBoss/Seam framework (Spring and plain EJB3 will come soon).
  2. Granite Eclipse Builder: This new Eclipse builder plug-in automatically runs Gas3 (the GDS ActionScript3 generator) each time you have created or modified a Java bean (likely an entity bean). When configured for your Java project via its graphical wizard or options panel, it replicates on the fly your entire Java model to its ActionScript3 mirror. Generated beans implement all required logic for strong typing externalization, lazy-loading support, and Tide integration.
  3. MXML/AS3 Web Compiler: It has the same features offered by its Adobe equivalent (on-the-fly compilation of MXML files deployed in your war), but also brings the ability to compile code from any input stream (from a simple String or a database for example). This has been contributed by Sébastien Deleuze (author of the Igenko project ) and you may test it online here.

InfoQ asked about the state of the GDS documentation:

This is still a work in progress but we have added a new "Getting Started" section with detailed tutorials for people starting with GDS developments. The reference documentation still needs some improvements, but should be updated very soon.

InfoQ followed-up on the previous interview with Wolff, asking if his previous BlazeDS and GDS comparison still held true. BlazeDS was open sourced late last year by Adobe.

I had a quick look to BlazeDS code and played with it a few times... It is a great techno, but as far as I know, it still doesn't feature some important enterprise functionalities such as full EJB3/Hibernate support (lazy loading), code generation tools, and tight integration with the JBoss/Seam and Flex Data Management Service equivalent. All those features are available in GDS 1.1, and I would again say that GDS competes more with LCDS (that still doesn't have lazy loading features) rather than with BlazeDS.

Next, InfoQ asked about the long-term roadmap for GDS:

One of the most important feature in GDS roadmap is to offer a full client-side Data Management system that integrates with (almost) all J2EE framework solutions. This is the very purpose of Tide and, as I said before, besides its current JBoss/Seam support, we will make it available for Spring and plain EJB3 technologies. Furthermore, we are looking carefully to the emerging Web Beans specification (see JSR-299) and, hopefully, we'll make a Tide/WebBeans integration available as soon as the first implementations are available.

Another feature we are going to provide is a way to facilitate upload and download operations in GDS. Currently, if you use the standard flash.net.FileReference class with GDS, you must write a servlet to carry on upload/download operations. We are going to make this easier, at least by providing a standard dedicated servlet in GDS.

On the administration side, we are going to write a GraniteDS console that will enable runtime configuration management and services exploration (something like the AMFPhp Servcice Browser).

Other directions for the long-term are a set of Flex components for data management (such as an Entity Form that constructs a Flex form from a model metadata description, etc.) and maybe streaming.

Lastly, InfoQ asked about the GDS community:

It has been almost 1 year since the 1.0 release and I have seen a continuous growth of GDS forum members (from about 100 members to 300 by now). Download rate is now more than 100 a day, but it is hard to evaluate from this data the number of developers using GDS... Very good news for GDS is that we are seeing some major companies using GDS for production applications (unfortunately, I can't say their names by now).

GDS contributors (including myself) are about dozen, though most of them are very occasional (patches or small extensions). William Draï (my colleague at Adequate Systems) and I are of course the most active, but Cameron Ingram (see his blog here) and Sébastien Deleuze (GDS Web Compiler author) have contributed, on a regular basis, with original and significant features.

Learn more about GDS at: http://www.graniteds.org/

Quick correction on LC DS Features by Jeff Vroom Posted Oct 20, 2008 7:08 PM
Re: Quick correction on LC DS Features by Emmanuel Bernard Posted Oct 20, 2008 7:44 PM
Re: Quick correction on LC DS Features by Jon Rose Posted Oct 20, 2008 8:59 PM
Re: Quick correction on LC DS Features by William Draï Posted Oct 21, 2008 4:48 AM
Re: Quick correction on LC DS Features by Jeff Vroom Posted Nov 7, 2008 11:58 AM
  1. Back to top

    Quick correction on LC DS Features

    Oct 20, 2008 7:08 PM by Jeff Vroom

    LiveCycle DataServices does have client-side entity caching, lazy loading of referenced objects and paging of association properties.

  2. Back to top

    Re: Quick correction on LC DS Features

    Oct 20, 2008 7:44 PM by Emmanuel Bernard

    Yes but what Franck is talking about is transparent lazy loading. While transparent is not necessarily a desirable feature per se, avoiding metadata duplication is a big plus.

  3. Back to top

    Re: Quick correction on LC DS Features

    Oct 20, 2008 8:59 PM by Jon Rose

    Also, there is a large cost difference between LiveCycle and Granite. Hopefully, the EJB3 support will make it into BlazeDS one of these days...

  4. Back to top

    Re: Quick correction on LC DS Features

    Oct 21, 2008 4:48 AM by William Draï

    More than the cost difference, the architectures of the two solutions are also completely different (and probably complementary). With LCDS, the Flex client interacts almost directly with the database through Data Services, and the business logic is on the client, one the goals being not to have a service layer at all. LCDS itself manages the persistence of the data model, and requires lots of configuration for each managed entity to do this, partly duplicating the Hibernate entity mapping. With GDS, you keep the business logic in the J2EE services, and the Flex client can just use these services by exchanging Hibernate/JPA detached objects without having to write any service wrapper. Except for lazy loading, GDS never accesses Hibernate/JPA directly and does not need any particular configuration for persistence. Each approach has its pros and cons but we think that supporting detached entities with a clean J2EE service layer brings significant value for Flex/J2EE users.

  5. Back to top

    Re: Quick correction on LC DS Features

    Nov 7, 2008 11:58 AM by Jeff Vroom

    Another clarification on the LCDS features: * All client interaction is mediated by an object which implements the Assembler interface. This exposes the create, update, delete, and query operations. We provide a hibernate assembler which by default just handles the persistence operations but you can easily extend that to intercept the calls, perform additional security or validation of your model before or after the persistence code. I think that for queries, it is easy to expose services directly but if you want to manage updates you need to establish more structure for your server objects. You can use LC DS just for queries and not for updates if you want. It is easy to mix and match remote object and data management use. * In LCDS2.6, the default data management configuration is pulled right from the hibernate configuration so you do not need to duplicate the entity configuration. You do still have to declare which entities you want exposed to flex clients for security purposes but that is all that is required. You can then selectively override the defaults to optimize how data is fetched: lazy fetching, paging of associations, on-demand loading of associations.

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.