Saturday, September 22, 2007

Adobe Flex First Thoughts: Part III

I was able to sneak into a two day Adobe Flex 3 training session two weeks ago, and here is my reaction. This is Part 3 in a 3 part series on Flex. Today covers the Flex Server and Adobe Integrated Runtime (AIR) . The previous posts covered the Flex language and the Eclipse Plugin.

As a word of warning... these are opinions generated by a mere 16 hours in training. Errors and omissions should be expected (that's what the comments are for).

Flex Server

After two days of training, the only fact I'm sure of about the Flex Server is that you have to pay for it. What does it do? I'm not sure. I felt like doing some research this morning (so I don't sound like a complete moron) and found that Flex Server is really called Adobe LiveCycle Data Services ES (ES, huh?). And after reading about the product on the 'net, I'm still not sure what it does.

The one thing I was sure the server did was include the ability to just-in-time compile Flex applications into .swf files for web clients. Perhaps the reason is to dynamically include data into the .swf file without requiring web access. Funny thing is, I don't see this described on the product page.

The other promise the server makes is to allow occasionally connected Flex applications to run on devices outside of a network. I did a lot of work on this problem in the early part of the century, and kudos to Adobe if they finally figured out the architectural issues. I worked with ExtendedConnect, ScoutSync, and a few other of the "Enterprise Synchronization" engines, and they all failed miserably at this task. One project I worked on in 2001 had public service vehicles receiving dispatches from a server using UDP packets, and the middleware provider somehow guaranteed (eventual) delivery. Needless to say, it did not work. Now it's 2007 and I recently heard from the client, who said they finally rolled out a feature that I had been working on 6 years ago. Ha. Anyway, most of the enterprise synchronization players back then were using disconnected record sets and dirty flags on records so as to track offline changes to the database. When devices returned to network coverage, only the dirty records were synchronized. When I asked the trainer how the server manages the "occasionally connected" mode, I got pretty much the same answer. You know, Adobe ain't that bad and I wouldn't mind seeing them succeed (despite their blasted .pdf format), but I don't have high hopes for this occasionally connected thing. I'd personally be prepared to write reams of communication code if this were ever a requirement on my project.

So I'm not wholly sold on this Flex Server thing, regardless of its marketing name.

Adobe Integrated Runtime (AIR)

AIR was cool. Very cool. And it was beta. Very beta. Man, I symphathize with trainers when their software crashes. Demonstrating crummy software is one of the industry's shameful rites of passage. We should force all CS graduates to spend 6 months training users on software that crashes a few times a day just to humble them. At least in this training session, the trainer hadn't personally written the software, as has been my case so many times.

So AIR takes Flex projects and their .swf files and bundles it all into a .exe package that can execute from a user's desktop without any webserver. All the data, all the media, and all the code bundled up into one .exe package. While not complete, the vision is that all operating system resources are available to AIR applications. So AIR apps can access the filesystem and devices, while Flex apps running in a browser cannot.

Macromedia, and now Adobe, really knows how to manage and update a runtime environment, and AIR is a great example of this. Ever updated your JRE through your browser? I'm always asked a whole bunch of questions by an install wizard, and I'm left wondering if all my answers were correct. "Hmmm.... I wonder if _all_ my browsers got updated," I'll say to myself. How about Java Web Start? "Hmmm... I wonder why it's not starting," I'll say to myself. Who knows. Updating Flash versions has always been simple. And with AIR, Adobe has created a sandbox install/uninstall environment, where applications and their dependencies are managed with all the ease of updating Flash. It was really slick. And it crashed a few times. Hey, it's beta.

So while the Flex Server left me a little cold, the premise and promise of AIR got me all hot... let's hope it's not all hot air! Okay, sorry, that was an awful pun. But the alternative would be for me to say the server left me dry while AIR got me all wet. So consider yourself lucky.

No comments: