Recently, in the course of my profressional life, I’ve had the “opportunity” to use Adobe’s newest attempt at web publishing, Flex2. On the surface, it looks like a pretty neat technology. One of the major faults with the standard web technologies (HTML, CSS, and JavaScript) is that they aren’t standard. Each browser has it’s own quirks. Another major downside is the lack of a solid visual layout tool that can create reasonable CSS and XHTML.
Flex2 promised answers to both these problems. First, the output is a Flash application, which means that it would run on a common interpreter in all browser. The paid version also comes complete with an IDE that will do code completion along with visual layout. Had Adobe managed to use these two features to thier full potential, they would have a leg up on the plain AJAX crowd.
But of course, this is Adobe, the company that would use legal means to secure ROT-13 encryption. It’s also the same Adobe that doesn’t seem to think Linux exists, a fact that tends to irk your’s truely.
The problems for me started at download, when I discovered that there wasn’t an IDE for Linux. To me, this makes little sense. The Flex2 Builder is based on Eclipse. Eclipse is plugin based and runs on Linux, however, the plugin was only available through the Windows installer. Eventually, I got the command line tools so I could, at very least, build the project. However, this meant that I was short the visual tools, making working with Flex no easier than HTML/CSS.
Flex’s next attempt to clutch defeat from the jaws of victory is the funkiness of ActionScript3. It’s not possible to pass objects around without shelling out for the $20,000 per CPU server component. Therefore, all data must be passed in XML format. This creates two problems. Many Flex components are very picky about the exact format of the XML that comes it and are not easy to use with a more generic object model. The second is that ActionScript3 tries to make your XML into an object that you can reference using dot notation (ex. element.child.innerchild[2].text). However, since this is just syntatic sugar on top of XPath, you are forced to deal with all of the quirkiness of XPath. One great example is that an array of objects becomes a single entity and causes error conditions when accessed in array form.
Overall, my impression of Flex2 was that it’s much like a trophy wife, expensive and beautiful on the outside, but rotten beyond skin level. It will eat your babies.