What is the Client Component Framework?

Awhile ago, Stacy Young broke the news of an internal-to-Adobe framework for RIA development, inspired by OSGi and Spring and targeting the Flash Platform, called “Gravity.”

If you’re a Java developer, you probably already now about OSGi and Spring, de facto standard implementations of modularity and dependency injection (among other things), respectively. Both are leveraged within the AdobeÂ® Digital Enterprise Platform (ADEP).

Although “Gravity” never did make it to Adobe Labs, work on the framework never ceased. In fact, work on “Gravity” increased as it became clear that large-scale application development on the client (edge device) with Flash and AIR required similar modularity and dependency injection support.

One of the attractions of so-called Rich Internet Application[1] development is a blurred line between client and server, leveraging the full facilities of the local environment where software executes. In order to promote such blur, though, it helps to have a consistent programming model end-to-end. ADEP provides this consistency by embracing OSGi and Spring on the server-side and by offering the Client Component Framework (pka “Gravity”) on the client-side for customer experiences built on AIR or the Flash Player.

If you attended my session at MAX last year, “Realizing great customer experiences with LiveCycle ES3,” you may remember that I talked a fair bit about “Gravity”–now the Client Component Framework in ADEP. As you can see, marketing has since determined final product names; so, please apply the following translation when reviewing that content (i.e. slides 26-47 in particular):

Shortly after MAX 2010, Stacy reiterated that a public release of “Gravity” was approaching.

As has been the case for the past few months, you can play with the Client Component Framework now. To do so, please join the pre-release program for the AdobeÂ® Digital Enterprise Platform (ADEP). (Don’t worry if the initial screen says something about LiveCycle ES3; you will subsequently see reference to ADEP.) Once you do sign-up, please post your feedback on this technology (and the rest of the platform) to the pre-release forums. Thanks!

Although it’s just now becoming a public, supported API in its own right, the Client Component Framework in ADEP has been used in production for awhile now. LiveCycle Mosaic 9.5 (part of LiveCycle ES2.5) leverages Gravity internally for managing composite RIA components (i.e. tiles).

As shown in the above figure, the Client Component Framework operates above the Flash Player and below the Flex SDK–much like the Text Layout Framework. That is, the framework operates independent of the Flex SDK and supports a mixed-SDK-version runtime environment. This is especially important for large enterprise project that may need to reuse components from other vendors that don’t all leverage the very latest (or same) Flex SDK.

Additional points of value in the framework include the following:

It enables you to choose what parts of your solution to upgrade and when.

Newer versions of a component that may leverage a newer Flex SDK can co-exist with older versions of the same components based on an older SDK.

Since components using the Client Component Framework communicate via a service registry, not each other, you can apply versioning and other policies as you would expect of a service-oriented architecture.

Components using the Client Component Framework are intrinsically loosely-coupled, which improves their changeability, comprehensibility and testability.

Having introduced the Client Component Framework, next we’ll talk about the Composite Application Framework, which leverages the subject of today’s post. Cheers!

[1] Aren’t most apps RIAs these days?

Update 7/26/2011: Instead of moving on to the Composite Application Framework, I thought it best to address ADEP architecture principles first with a set of posts.

@gembin- Thanks for asking. The Client Component Framework (pka Gravity) is available NOW via the ADEP pre-release program: https://prerelease.adobe.com/callout/default.html?callid=948840B78061416C9150B2C6F2AD6647. There are currently no plans to release this framework on Adobe Labs. I hope that you join the pre-release program for ADEP, and I look forward to your feedback specifically on the Client Component Framework. If you are interested in particular follow-up posts here, please let me know that, too.

Thanks for your quick response!
i’m really interested in Gravity and really like the coupling of flex and OSGi.
I’m looking forward to the release of this framework in near future and believe it will benefit the flash platform community a lot.

i tried the Potomac Framework(http://www.potomacframework.org) which is also an OSGi alike framework for flash platform, but finally i gave up for some reasons. and really excited when Gravity comes. Hope to see more posts about Gravity.

i’d like to join the pre-release program.

BTW: i always got “Incorrect Username or Password” error when login the LiveCycle ES3 pre-release site. i’m pretty sure my username and passowrd are correct. and already reset several times

@gembin- I believe that someone from the pre-release team has been in contact directly with you. You are indeed registered for the program. Hopefully you’re now able to dive in directly to give the Client Component Framework and the rest of ADEP a spin. Cheers…