Over a million developers have joined DZone.

AIRgonaut: The "From Desktop to AIRtop" Series

· Web Dev Zone

Start coding today to experience the powerful engine that drives data application’s development, brought to you in partnership with Qlik.

Today I'll start with the AIRgonaut series. It will give you AIR tips to desktop-like programing questions you may already answered, with Delphi, Visual Basic, and the like in the past. But, today you may recognize that all your know-how is less important and needs an update, because of such obscure ideas the Flex architects had in mind in the past ;-).

Well, this is what my feeling was when I started with Flex/AIR this year to have a deeper look into the framework. I'll describe my experiences from the desktop developer's point of view, but with the Web developer in mind. So, from time to time you may get some comparisons to some (horrible) JSF/AJAX frontend development experiences, too.

One important thing with this series is, that the AIRgonaut development examples are Flex-based. So, I don't try to HTML/AJAXify the AIR development. This makes no sense to me. Although, it's a good idea to have this as a bridge, I don't want to replicate on the Flash runtime what I suffer from the Java Web frontends today.

For me the change to "AIR on Flex" is the logical next step to a better user experience. "Better" has to deliver more than I get today with AJAX. For short, a similar desktop-like mimic, I could already produce a decade ago with Delphi, etc., but with all the new attainments of the past Web years. So, my way goes from Desktop to AIRtop ;-).

At the moment I'm also investigating for a consistent bridge to Java, resp. Spring-based backends. So, I may get alternatives to JSF and even Rich Client Platforms, like Eclipse RCP.

You may wonder, why I think about skipping those promising or almost established technologies. Maintenance - from the architects point of view this is reducing risks and costs.

For me it seems to be less expensive to train some motivated frontend developers in Flex to program against Spring backends than to follow the rocky JSF lifecycle, even if I've experienced JSP/Struts developers in the project.

Integration of the different frameworks in the JSF area and deployment aspects, like the class loaders, are still challenging tasks. You've to invest too much time for the presentation results you get today.

Keep in mind that I'm talking about desktop-like mimic. For traditional page-based presentations JSF is still a better answer in comparison to JSP, Struts, etc. But, the user demands are changing rapidly with the next generation of Web applications.

Flex IDEs

Before we have a look at the code examples, first, a short overview of the IDEs that come to my mind when thinking about Flex/AIR development:

When I had a first look at Flex 2 I searched for a cheaper solution than the Flex Builder 2. I found a lot of ActionScript2-based solutions. But, only one could persuade me: FlashDevelop. Although, only based on ActionScript 2 syntax those days it became a fully supporting environment for the Flex 3 development pretty soon.

FlashDevelop, FLEXible

You need the .NET 2 runtime for using FlashDevelop. Although, not as intuitive as the Eclipse-based competition, its worth every non-paid penny ;-).

You get a full development cycle, whereas the debugging is based on the Flash plugin. The usage is a bit tricky with it, but it works. The compiled application can be tested in a tab of the IDE. So, you don't have to change to the Web browser on each run.

The experience of visual development of GUIs with Delphi in mind, I missed something important for productivity. The FlashDevelop forum gave a tip: FLEXible. It is not integrated with FlashDevelop. So, you get a separated tool. There are ideas for integration, but it seems that the FLEXible developer has stopped her activities.

Nevertheless, FLEXible is quite cool, because it is written in Flex 2 - and it can be extended a bit. If you don't wanna invest for a Flex IDE both, FlashDevelop and FLEXible, can be your tools to cope with all the comandline tools Adobe offers for free.

Tip: for download of FLEXible use the download link at the end of the page. The download link on top is dead for months now.

FDT

FDT, or Flash Development Toolkit, as far as I remember, is a plugin extension for Eclipse. When I had a first look at it, only supporting ActionScript2, it was a bit cheaper than Flex Builder. But, with the ActionScript3/MXML support both are similar in price today. Although, FDT only adds more coding quality features, whereas Flex builder delivers framework additions for Java backend development and graphical presentation of data.

I hadn't a deep look at it, so I can only tell you that users especially like FDTs strong support for the Flex syntax. With the Enterprise release you get also a comfortable debugger and refactoring.

Flex Builder

If you search for a visual modeler there's no real alternative to Flex Builder at the moment. Although, I still miss some features I already had with Delphi 3 a decade back.

With the third release the Flex Builder Standard became even cheaper. If you don't need a profiler, the chart components or the full LiveCycle Data Services (for Java backends) Flex Builder Standard is a good choice.

The Java backend communication can already be realized with BlazeDS, a stripped OpenSource alternative by Adobe. Although, I still have to investigate what the limitations mean to complex data when communicating with Spring backends.

Create data driven applications in Qlik’s free and easy to use coding environment, brought to you in partnership with Qlik.

Topics:

Published at DZone with permission of Rainer Eschen. See the original article here.

Opinions expressed by DZone contributors are their own.

The best of DZone straight to your inbox.

SEE AN EXAMPLE
Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.
Subscribe

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}