Adobe Flex 2 - First Looks
Home Tutorials Reviews Weblog
Review: Adobe has taken over Macromedia and Flex - how is it going ?
Feature: The Flash Player is a superior distributed engine - does Flex 2 match up ?

I have been promising a look see at what is happening in the RIA-Rich Interface Application space for a long time - and given other commitments have found the time to only nibble at the RIA space. I have done some AJAX coverage, a bit of analysis of the Java scene and further elaboration of the direction UI interfaces will be taking over the next 10 years. And that of course is really delivering on the old IBM and Bill Gates promises of Information at your Fingertips.

Delivering information at your fingertips is a 5 fold process. 1) is the establishing and integration of data sources with 2)secure and inexpensive data storage 3)that can be quickly and securely accessed over high bandwidth local or remote data links that 4)can deliver to any device that 5)can present the data in a fashion easy and intuitive to use by the original requester. Notice we have omitted two key characteristics in this chain of events - does the user have the ability a)to update or modify any of the data received or b)add new data back to the data source. But, yes this is the classic n-tier development stack.

RIA is really about the whole process but essentially provides step 5)-data presentation and enables full utilization of 3)-data connectivity and 4)-any device UI enablement. But the key to making RIA truly rich is its ability to deliver the 6A's strategy: 1)Immediate Access to information for 2)Anyone Authorized 3)Anytime, 4)Anywhere on 5)Any device in 6)Any format required. Now Microsoft, IBM, Google, Oracle and a dwindling number of others are in the business of trying to deliver on this 6A's strategy.

Again RIA is centered on 5)Any device and 6)Any format enablement. And of course that has been the rub for the past 10-15 years in development. The code that works on PCs has rarely worked on mainframes, minis, LANs, PC's or Web Applications and all the vice versas. Each device and OS Platform has its own properties and almost unique programming languages and tools. So developers have had to maintain 3-5 similar but different codebases to reach all the various devices and platforms.By definition IT has been working in isolated development silos.

Over the past 10 years, two IT developments have changed that equation quite dramatically. First, cross platform code and scripting languages like Java, JavaScript, Ruby, ActionScript and other cross OS and cross device tools have started to gain major presence in development because they clearly solve the cross OS platform problem - rationalizing mainframe, LAN, and PC development greatly. But now in micro versions these same tools are leaping over to a broad range of embedded and mobile devices. RIA is about this shift, and Flex 2 in particular is about the Flash/ActionScript version of the same.

The second development is Web Services and its packaging in SOA-Service Oriented Architecture cloaking. Now the steps of linking/binding any data source with any device have been constructed such that rewriting one or the other interfaces is not required. We can use legacy data sources with legacy UI interfaces if we so choose. RIA vendors then enter and say "use a RIA interface and we will deliver any device, online and offline." Again, Flash and Flex 2 are Web Services and therefore SOA enabled to some extent.

The Flex 2 Flash Promise

The Flash Player is at version 9 and it delivers what Java, PDF, .NET, AJAX and others still aspire to - a runtime engine that delivers cross OS platform and many device execution of code with highly efficient support of text, sound, video, image, and animations. The code is ActionScript 3 which is just an advanced clone of JavaScript (and is in fact closer to the JavaScript 2 standards adherence than the current JavaScript 1.5).

The Flash player and therefore Flash .swf files (which are standardized) work the same on mainframes, Windows or MacOS or Linux PCs or many mobile phones or embedded devices. Flash has some very clever builtin routines to allow for runtime scale up and down depending on the output display device. But of course the mealy word here is "many". Flash player currently delivers more mobile and embedded devices with more uniform capabilities than its competition. How that will fare into the future is still an open question - and part of this first looks review.

About 4 years ago, Macromedia, which has since been bought by Adobe, started work on Flex. The purpose of Flex was to integrate data access components and selected links so that Flash developers could deliver not just great designs; but also great design and data components linked together. Five obstacles had to be overcome:
1)Make the Flash player more secure especially in increasingly hostile web environ;
2)Make the Flash player more efficient in storage and handling of many media types;
3)Make the Flash player more performant in delivering its multi-media shows;
4)Make use of data components in Flash applications easier program and develop;
5)Make integration of local and remote data resources easier to program and develop.

And of course all of this had to accomplished at the same time that Flash's base of OS platforms and devices supported with as uniform look, feel and performance as possible was continually expanded. Sound like Sun's Java mission and, with omission of cross OS platforms, the .NET mission.

I can report to you that with Flex 2, Adobe is delivering 1) through 4) with fair success; however for data integration there are still problems.

What Flex 2 Delivers


The screenshot above is taken from a Linux PC. It would look identically the same on a Mac or Windows PC. It could look identically the same on a few but by no means all embedded or mobile devices that the Flash Player runs on. Screen size and device controllers determine a lot of what can be done on micro devices.

The big difference between this and Flash Design applications which typically show videos and screen shows with narration (Flex 2 can do those too) is the ability to display data processing components like buttons, pull downs, text fields, and data grids and have them filled with either local or remote data. This is what Flex set out to do and Flex 2 delivers much more impressively on.

Specifically, Flex lacked the ability to deliver an IDE that could do drag and drop visual development of screens designs that are vital to Flash sites. In addition, Flex lacked a debugging tool that allowed users to step through the code while doing screen operations and see where the code was in error. Flex 2 changes these and other problems dramatically:

Flex 2 is built into the Eclipse modeling framework. It takes advantage of the IDE to provide its own perspective which means visual design window, Project control wizards, Components toolbox (see the lower left side of the screenshot), Property table (see the right side of the screenshot). All of the convenience of drag and drop design are accorded the Flex 2 developer except animation support - that is left with Flash 8 tool and the associated animations and videos can be dropped in. Joining Flash-made .swfs together with the Flex apps for data integration and/or synchronization does take careful planning.

In addition, Flex 2 allows for a whole array of tools to add scripting to event driven exception processing which is at the base of not just Flex but all IT processing these days. Our full review will look at these tools in more detail. Finally, Flex 2 and Eclipse provide for dynamic debugging that works partially but not completely. Essentially, non-Flex/Action Script code on the server is out of Flex 2's purview.

In sum, Flex 2 has made substantial improvements on Flex and is now competitive with Java and .NET for its development domain with one small exception, data integration.

Flex 2 and Data Integration

Macromedia before and it looks like Adobe too have been at best ambiguous about data integration and Flex. For example, when I downloaded the Trial Flex 2 Builder bundle I saw that there was a Flex 2 Data Services download too. But I figured it was packaged within the Flex Builder bundle or had extra services that I could add on later. Nope - it is essential and no packaging together or prominent words of guidance making sure that users get Flex Data Service with the Builder.

Now take a look at the FlexHelp file on data integration:
Now read this direct quote from above: "The most important thing to remember about working with data in Flex applications is this: Flex applications do not directly connect to a database. And, therefore, Adobe® Flex Builder 2 provides no tools for directly connecting to data. You interact with data using MXML and ActionScript code." Read this as meaning there are no direction connection nor JDBC (or their ilk like OLEDB, ODBC, even CORBA) connectors provided for Flex 2. Under Generating the data in the screenshot above, read one way how you do get data to Flex 2 - yep its an AJAX-like mashup.

Now why would Adobe want to do something like this ? Put its great Flash Player on the same footing as AJAX when it really does not need to. And consider that the rapidly evolving 6A's requirements say that for desktop and offline operations you really want to support classic local and even remote connections like JDBC, ODBC, etc. There are three arguments for this limited accessibility tactic. First, in the Web sandbox model where many Flex apps will be running, local connections are subject to stringent authentication and sometimes no-usage controls. So why offer what you can't have much of the time. Second, Flex is trying to channel developers into the new wave of XML and Web Services based access which will work either remotely or locally in an offline mode. Third, the whole database connections model, opens another can of worms in terms of coding and security wise that Adobe may a)want to reserve for its Adobe PDF Forms handling product and/or b)may not want to handle at this time (be aware database developers that is the next focus of security attacks on databases so that compression with various forms of encryption and persistent or challenge authentication are on their way in).

The downside to this cheat or short-changing on data integration are also listable:
1)Visual Studio and Java Developers (Eclipse, NetBeans, EasyJ, etc) familiar with classic database connections will have to get used to a new model;
2)For desktop, offline and data replication tasks, the classic data connection model wins;
3)Performance can take a big hit if data has to move in and out of XML format for delivery;
4)data exploration tools like Data Explorer are lost on Flex Builder impeding coding;
5)never eliminate a path to data until it is totally dominated by a simpler method.
Thus, this Flex App should be part and parcel of the Flex Builder experience, not stand alone.

Now in defense of Flex 2 I have not read through the Developers Guide in all its fine detail; the full review will obviously explore the nature of this problem more fully.The other problem which cropped up is Flex support for Application Servers. It currently supports Adobe/Macromedia's JRun 4 out of the box. I simply did not have time to explore use with Apache Geronimo, BEA Tuxedo, IBM WebSphere, Microsoft Server, Oracle AS, and other popular app servers.


One cannot help liking what Flex 2 delivers on the GUI side of the equation (see our first screenshot for a sample). Flash in general, and Flex also, have a deserved reputation for delivering professional looking and media rich applications. And still doing so with greater efficiency than their competition. But that efficiency and performance advantage is at risk with the data integration models used within Flex 2. As well, developers flexibility to deliver Flex and Flash in the 6A's divergent environs is restricted. This is a tragic flaw because the development community is on the search for one (or a much smaller set of) developers tools to work with in the 6A's/SOA/SaaS future.

This is the source of another concern - a much smaller set of tools is the marching orders in many shops. That translates into Steve Ballmer's cry for "developers, developers, developers". But who will decide what developers use as tools and development processes now is going much higher up the chain - to the CIO/CFO level as they decide what gets used in the organization. Savvy Open Source and commercial vendors understand this and so they are making access to their development and deployment tools very cheap and painless. Witness what is happening in the database and IDE marketplaces. Now some of this phenomenon is no doubt competitive thrust and counter thrust among vendors(think database). But some is just coping with reality that consolidation and rationalization is being demanded across the board. Adobe with Flex 2 and some of its other products has yet to take this into account. They cannot act like Microsoft which has a huge developer base (Adobe simply does not have a fraction of that in the developer space) and charges for every developer tool directly. The model that Adobe has to watch is IBM(free Eclipse, Websphere Community, and DB2 Viper Express C), Oracle(free SQL Developer, JDeveloper, and Oracle XE), and Sun (free Java, NetBeans, and App server) which have made the bulk of their frontline developer tools free and charge only for extensions, combinations of tools, and high end enterprise programs and suites. In short Adobe's $739 for FlexBuilder with Charting is a non-starter. Adobe is still acting as if it is serving the 1990's consumer and small business marketplace. Not a winning a strategy for some very promising software in Flex 2.

Top of Page  Home  Tutorials 

Developers Weblog  Graphics Reviews and Tips