Adobe takes on Java and .NET

Why Flex and Apollo will shake up client application development

Common Topics

Adobe Flash came from nowhere to become the obvious choice for embedding video into websites, despite the presence of well-established alternatives including Real, Windows Media and Quicktime. Could it have a similar impact on client application development? Last month Adobe’s Ben Forsaith ran a Flex 2 workshop for the press, showing off the new Eclipse-based IDE called FlexBuilder.

In essence, Flex is just another way to compile a Flash movie, using XML and ActionScript in a code-centric environment that’s more amenable to developers than the designer-oriented Flash IDE. There’s a visual designer with a basic range of GUI controls, and it’s an effective application development tool; although it falls short of more mature environments like Microsoft’s Visual Studio. Editing XML can be annoying and so it would be easy to nitpick the FlexBuilder IDE.

That may not matter. Flash Video took off because of its simple deployment story. All you need is the latest Flash player. The same is true of Flex. In addition, ActionScript 3.0 evolves the JavaScript (strictly ECMAScript; see here) language into something developers can take seriously for more than just scripting.

Two key new features are just-in-time compilation and the option of strong typing. ActionScript’s strong typing is not just cosmetic, but used by the compiler to create more efficient binary code. Apparently, it’s up to ten times faster than previous iterations, enabling applications that do significant amounts of client-side processing.

The rise of AJAX has proved that the smoother, richer experience of applications that run on the client but draw data from the Internet is worth the pain of writing JavaScript that works across different browsers and on different platforms. The Flash runtime improves on AJAX by largely solving these compatibility problems, or if you prefer, you can combine the two, with code in your AJAX application talking to the embedded Flash applet.

Have we not seen this before, in the form of Java applets, Microsoft’s ActiveX, and other browser plug-ins? This is where the parallel with video is most apt. Browser-hosted Java applications pack plenty of power, but the Java runtime is huge compared to Flash, and exists in a bewildering variety of versions, holding back broad adoption. ActiveX is neither cross-platform nor cross-browser, tricky to develop and associated with security problems.

A closer parallel is Microsoft’s Windows Presentation Foundation (WPF), which appears to have solved the problem of secure and easily-deployed browser-hosted .NET applications. Unfortunately, WPF requires a large runtime and only works on powerful, recent Windows boxes. WPF compensates by offering exceptionally rich graphics and multimedia, but its relatively narrow reach rules it out for broad adoption. Microsoft does have a cross-platform version of WPF, called WPF/Everywhere, but this is still in development and is less powerful than its Windows-only cousin. Adobe has a big lead here.

There are downsides to Flex. Although the ActionScript language is much improved, Java or .NET developers will miss the comprehensive frameworks they get with their respective platforms. It’s also designed on the assumption that data flows from the Internet, either over web services or via the proprietary Flex Data Services running on a J2EE application server. Creating applications that work offline is a challenge.

Further, while the Flash runtime is widely deployed, it’s not universal, particularly when it comes to mobile devices - and bear in mind that Flex 2 requires Flash 9 and does not work with earlier versions.

Another concern is the proprietary aspect of Flash, versus open standards like HTML and JavaScript. At the same time, Adobe has a reasonably good relationship with the open source community. For example, ActionScript itself is now a joint project with Mozilla and the same code will be used in FireFox. The JBoss collaboration server uses Flex for its mail client, and in the tools area there are projects such as swfmill, which compiles and decompiles SWF to XML; and FlashDevelop, which is an open source Flash IDE, running (as it happens) on the .NET Framework. Free Flex and Apollo SDKs also make the proprietary aspect of Flash easier to live with.

Some of the Flex limitations will be lifted with the launch of the next version of Adobe Creative Suite together with a new product called Apollo. The updated Creative Suite will mean that the Flash IDE supports the same version of the player as Flex, enabling easier integration of Flash movies into Flex projects.

Apollo adapts Flex for the creation of desktop as opposed to browser-hosted applications and it promises to be well suited for offline use, providing access to the local file system. There’s also going to be PDF integration, though the exact form this will take hasn't been announced yet.

However, my hunch is that Flex and Apollo will make more impact than previous attempts from Adobe (or Macromedia) at cracking the market for rich internet-connected application. ®