Archive for the ‘JAVA Community News’ Category

Adobe Releases Open-Source BlazeDS, Updates Flex and AIR

Adobe released today BlazeDS, an open-source version of its server-side framework for Flex, and published the specifications of its AMF remoting protocol. The company also released new beta versions of Flex and AIR. In an interview with Artima, Adobe’s Christophe Coenraets describes how these tools improve enterprise developer productivity.

Adobe today released a beta version of BlazeDS, its open-source server-side data management framework for Flex applications. The company also published for the first time the specifications of its Action Message Format (AMF), a Flex and Flash-specific remoting protocol. Finally, Adobe released new beta versions of its upcoming Flex and AIR frameworks.

Artima spoke with Christophe Coenraets, Adobe’s senior Flex evangelist, about these releases. At the opening of our interview, Coenraets described what BlazeDS means for developers who wish to construct rich user interfaces that access and modify data on the server:

LifeCycle data services is the server-side of Flex. It has three main components: a messaging infrastructure that allows you to do real-time data push and collaboration-type applications, remoting that allows you to invoke from a Flex application a method on a Java object on the server, and data management services, which is a way to keep the client-side model in sync with the middle-tier model automatically, including using off-line caching.

We are making the messaging and remoting pieces open-source today as BlazeDS, or Blaze Data Services. BlazeDS is now available under the LGPL license. The beta version of BlazeDS can be downloaded from Adobe Labs, and the target date for the final release is early 2008.

BlazeDS is a set of Java services that you run as part of your application server. By opening this up, we expect to see implementations for other platforms as well. We’ve been briefing people in the community who already started to build clones of this technology on other platforms, such as PHP and Ruby. We want to create a big ecosystem of developers using the technology and this programming model.

Because all of these technologies are already being used in enterprises, and the open-source move will result in even more developers using these tools, some enterprises want an organization to stand behind these projects. So we are also announcing the LifeCycle Data Services Community Edition, which is BlazeDS with the backing of Adobe. It includes certified builds of BlazeDS that have been tested and approved by the QA organization at Adobe, and enterprise and developer support, in a manner similar to the JBoss/RedHat model.

Coenraets described AMF, Adobe’s Flash remoting technology, and compared AMF to Java’s RMI:

For remoting, we use the AMF [Action Message Format] protocol, which is a binary encoding on top of HTTP. One of the major benefits of AMF is performance. This technology has been around for a few years—AMF was introduced with Flash remoting—and it’s a technology that people have already embraced.

Still, AMF was known as proprietary to Adobe because we never officially published the specification of the protocol, even though some in the community successfully reverse-engineered and cloned AMF. Indeed, there are now AMF implementations on PHP and even Ruby. We wanted to remove that hurdle, so we are now publishing the spec for the AMF protocol.

We think that the programming model for AMF is convenient, especially for people working with Java objects on the server. If you used XML over HTTP, for instance, you would have to transform your object data on the server side to XML and, on the client, you receive XML, and the first thing you typically do is transform the XML back to objects.

The AMF programming model, by contrast, makes a lot more sense if you’re working with objects at both sides. You deploy your Java objects in your application server. There is a deployment descriptor that allows you to map objects to a logical name. On the client, you can reference those objects via the logical name. We have a remote object class that you instantiate, pointing it to a destination, and then you can start invoking the methods available on your Java object from your client.

It’s a fairly similar programming model to Java RMI. In contrast with RMI, however, the AMF client-side model is more dynamic. That’s because ActionScript works both as a dynamic language and as a strongly-typed language. By default, if you don’t specify a type, you get a dynamic object. The strongly-typed approach is very familiar to people using Java and RMI.

You can work either with a weakly-typed approach, or a strongly-typed one. Suppose that your remote object has a method that returns a java.utils.List of Product objects. By default, the client provides you a Flex ArrayCollection, and the Product objects, which were strongly typed on the server, will on the client be dynamic objects. You can also specify that the object be mapped to a object, an ActionScript version. We don’t provide an automatic Java-to-ActionScript mapping, but there are several projects in the community that automate that task.

Coenraets pointed out that BlazeDS’s messaging is especially designed for applications where the server needs to push data to the client:

The messaging piece in BlazeDS enables any kind of application to let the server push data to the client. A typical example is a trader desktop where you push real-time market data to the client, but any other application with real-time notification and collaboration can benefit from this, such as when two or more clients collaborate together.

A basic example of that is chat, but you can obviously synchronize the user experience between the client and server for many other purposes. We’ve seen examples in call-center applications where a customer support rep remotely drives the UI of an end-user. To do that, you need messaging, and to be able to send messages from the server to the client.

Again, this technology is not new: It was available in LifeCycle data services. The pricing structure was an obstacle for many people, and we’re changing that now by making this component available as open-source, too.

Finally, Coenraets highlighted some of the new features available in AIR (Adobe Integrated Runtime) beta 3:

We are also releasing a new version of Flex 3 Beta, and AIR Beta as well. One of the new features in AIR is support for the new video codec, H. 264, a new audio codec for AAC, support for multicore processors, full-screen hardware acceleration, support for Apple’s Leopard OS, and runtime auto-updates. Another new feature is that HTML content inside AIR can now embed Flash movies or Flash content.

What do you think of BlazeDS and the AMF remoting protocol?