Adobe's Flex is a client-side programming environment targeting the Flash virtual machine. Today Adobe announced that it will release subsequent versions of the Flex SDK under the Mozilla Public License. Artima spoke with Adobe's James Ward and Eli Greenfield about what open-source Flex means for developers.
Flex is Adobe's high-level programming environment for creating rich-client applications that run inside the Flash virtual machine. The Flex platform consists of five main components:
A set of ActionScript components for creating rich graphical user interfaces. These include the standard fare of UI widgets, but also incorporate multimedia, such as easy access to the desktop's Web camera or microphone. Layouts and transition effects are included, too, as are a set of rich charting components.
ActionScript code generators and XML schemas that make it possible to compose complex user interfaces with an XML grammar, and then have the framework automatically generate the equivalent ActionScript code. Flex's XML language, MXML, exposes component properties via XML, reducing the amount of boilerplate code developers have to write and maintain. Most Flex applications are a mix of MXML and ActionScript code.
An ActionScript compiler that turns ActionScript into the bytecode format for the Flash Virtual Machine. The Flex compiler, in fact, performs a two-stage compilation: It first turns MXML code into ActionScript, and then compiles the ActionScript into Flash bytecode.
A set of server-side data integration components that were previously called Flex Data Services, but were recently re-christianed to Adobe LiveCycle. The server-side part of this framework is written in Java, and can run in enterprise Java servers. The client-side part integrates with data-aware Flex components. Since Flex applications can communicate data with services in a variety of other ways, too, such as via HTTP, direct socket connections, or by invoking Web services, Adobe LiveCycle is an optional Flex component.
The Flex SDK, which Adobe made available for free in 2006, includes the first four of these components, with the exception of Flex Charting, for which the company charges a license fee. Adobe also made available last year a version of Flex Data Services that runs on a single CPU, for free.
Today, Adobe announced that it is taking the additional step of releasing the next version of the Flex SDK under the open-source Mozilla license. Artima spoke with James Ward, Adobe's Flex evangelist, and Eli Greenfield, who is principal scientist of the SDK.
When asked how Adobe envisions the community adding value to Flex, Ward noted that Flex already enjoys a healthy open-source ecosystem, with major Flex projects, such as FlexUnit, released under open-source licenses.
He also noted that with the next version of the Flex SDK, slated for final release at the end of 2007, Adobe will first make the sources available via a Subversion repository, and will, over time, migrate to a model to include committers outside of Adobe, too.
According to Ward, Adobe's business model with Flex includes building some of its own software with Flex, such as the recently released Adobe Media Player; charging a license fee for the enterprise-ready version of Flex Data Services; and selling FlexBuilder licenses to developers. FlexBuilder is an Eclipse-based IDE for visually designing, coding, and debugging Flex applications.
When asked if Adobe intends to position Flex as a direct competitor to the now open-sourced client side portions of Java SE, Ward said that that was not the case, and that his company viewed Flex and Java as complementary technologies.
How do you think the open-source Flex SDK will influence client-side Java? Do you think it will hurt, or improve, client-side Java over time?
So, Flex Data Services - FDS, will still remain closed.
Hopefully, Adobe will atleast make its pricing more reasonable. Right now it jumps from free for single-CPU to $10k/cpu for multi-cpu boxes. Not palatable for an ISV like us who have no control over the machine on which our apps may be deployed.
On a related note, I'd like to know folks' experience in developing Flex/Java apps without FDS - Will I need to hand-roll a lot of stuff, or can I use any other libraries to make this task easier?
Can we use any of the open source flash servers to provide us what FDS provides? If an open source server like Red5 would work, is anyone out there using an open source server instead of FDS? What do you lose out on if you use an open source server instead of FDS?
Using XML to describe UI and generating code to implement it or a library to use that description to build the UI on the fly seems to be very popular.
Consider Mozilla's XUL, or GNOME project's GladeXML (seems to support everything from C to Haskell(!!) for Gtk), or Microsoft's XAML (apparently, they also use it to describe things like workflows).
This approach seems to be really powerful. I played around with Glade, initially following the example from Gtk Java binding, but later realized that the UI can be used in most other Glade supported language with relatively simple changes.
Anything to make building UIs saner is "a good thing".
Wouldn't it be nice if there were a standard way to describe basic UI that could be used with any of the tools? :-) Of course, we can always wish :-)