Saturday, April 19, 2008

A Review on Adobe Flex Builder Linux Alpha 3

Initially when I started to write this review, I downloaded and set up Adobe Flex Builder Linux Alpha 2 on my Ubuntu machine, faced some troubles which some will be addressed at the Troubleshooting section. It was left with just three days for evaluation and I got stuck with work. By the time I had the time to start a proper review on it (by following the materials provided by Adobe), it was already expired. I had to download the Alpha 3 instead, which was released on 31st of March.

Just in case that you had the wrong idea, Adobe Flex Builder (I will call it the "general release" to avoid confusion), which can be obtained from this address, is not the same project with the Linux release. They are both on two different projects, where the former follows the Flex product schedule; the latter at this stage is not a full release and not all features of the general release are implemented in it. Please read the release notes of it for a list of supported and unsupported features.

To give a short introduction about myself, I have no Flex technical experience prior to doing the review, knowing just general idea of it. However, I'm a supporter of the MyFUG (Malaysian Flex User Group) and I attended most of their meetings.

Environment

Flex Builder is an add-on to Eclipse IDE, a well-known IDE especially for Java-based development. The general release is a commercial add-on but is completely free for educational purpose, it is also available free for 60 days evaluation. The Linux release however is release for evaluation purposes only and it has a fixed expiry date for each release. If you want to find out more about the price and licensing details of Flex Builder, please read this link.

Eclipse is a mature, feature-rich and extensible IDE. Having Flex Builder to be an extension of it gives developers a very-well integrated environment for different kinds of development that could fall under the same project, e.g. developers can easily switch from Flex Development perspective to the Java Development perspective, etc.

Features

As you would have already read from the release notes, the Linux release doesn't support design view at this stage. It provides you with Flex SDK version 2 and 3, Flash Player, JSEclipse, Adobe AIR support and more others that you can read from the What's New.

Without a Design View could actually be a big issue to some people, but given that Unix-based users generally love text more than GUI, it could just not be the case. Plus, writing Flex application using vi editor can longer be that quick in comparison as the Flex Builder provides you with features such as content assistant, quick navigation to API source, etc.

Followed the review guidelines, I developed a simple application with an advanced data grid (read also this) which its data is populated from a local XML file through the HTTP service. The advanced data grid is part of the Data Visualization which is shipped as a trial with the Linux release since Alpha 2, it therefore places a "Flex Data Visualization Trial" watermark in the UI as you can see from the screen-shot below. Another feature that comes as a trial is the Automated Testing.

The solution to remove the watermark seems explained in this blog entry.

Development

So you may question, how bad it is without the Design View. I wrote nearly 50 lines of code with not more than half of them are realizable in the general release via Design View, i.e. <mx:Application/>, <mx:Panel/> and <mx:AdvancedDataGrid/>. The rest of the code is <mx:HTTPService/> and action scripts. Therefore the answer is very subjective to the nature of the application which you are building. If it consists of a lot of UI components, the development can definitely be sped up with drag-and-drop and other features provided by the Design View.

I am not too sure if the general release has the same behaviour (which I doubt no), content assistant does not work for advanced data grid. It turned out to be quite annoying, but knowing that Data Visualization is still at trial, we can safely say that it is not a bug.

I am also very much concerned with having a Maven 2 plug-in for Flex development. There is a popular issue tracking this at SDK-12730.

Troubleshooting

I had some issues initially when I tried to install the Flex Builder on my system, which is an Ubuntu 7.10 Gutsy Gibbon running on a 64-bit machine. There were a few requirements mentioned in the release notes that I missed out the first two:
You will have to run update-alternatives to replace the default java executable, e.g.
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-1.5.0-32bit/jre/bin/java 50
I also hit into the following error when I was trying to start the installer with JRE6:
Runtime link error - it appears that libXt got loaded before libXm,
which is not allowed.
Invocation of this Java Application has caused an InvocationTargetException. This application will now exit. (LAX)

Stack Trace:
java.lang.NoClassDefFoundError
at sun.java2d.SunGraphicsEnvironment.addDirFonts(SunGraphicsEnvironment.java:722)
at sun.java2d.SunGraphicsEnvironment.registerFontsInDir(SunGraphicsEnvironment.java:602)

The quick workaround to this is to set the AWT_TOOLKIT environment variable with the value XToolkit.

Further Reading and Other Resources

2 comments:

David Chui said...

I'd imagine Flex development would be heavily visual. If the UI being developed is simple (without animations, fx, whatever), using Flex seems like using a bulldozer to flatten an ant bunt.

If the UI is complex, the lack of a visual designer will become a pain in the ass. It feels eerily familiar with the days of Swing development with just a text editor.

Of course, I could be mistaken here.

Yuen-Chi Lian said...

The Design View will definitely come in for Linux version. We don't really know when the Design View will be consolidated into it, plus it's just a product for evaluation at the moment.

- yc