Adobe MAX. Blog #3. Freedom to AIR!

On Sunday morning, I got my two conference badges ndash; one for Press and the other one as a Speaker. Each of those gives an access to special receptions or meetings with Adobe big shots, and I don “t want to miss any of those.

While waiting for the doors to the AIR Lab room to open, I overheard how one of the attendees have whispered to the other, “T-Shirts are over there! rdquo;. Now I can fulfill my main mission at MAX ndash; bring MAX T-Shirt home for kids. Being an honest person, I explained the t-shirt girl that I have two badges and asked if I can get two t-shirts. She scanned both of my IDs ndash; everything “s kosher. But then, the girl realized that making such decisions requires approval, and asked the senior t-shirt distributor for an advice. The older lady said, “No, one person ndash; one t-shirt rdquo;.

So much for being honest hellip; My bad, I violated the KISS principle ndash; keep it simple stupid. I should ‘ve made two approaches to the counter. Learn from my mistakes and don “t delegate the process of making important decisions to inexperienced people.

The rest of the business hours I spent in the Adobe AIR 1.5 class taught by Leo Shuman, an excellent instructor who managed to run this hands-on class packed with the information flawlessly. This is even more impressive given the fact that there were fifty people in the room .

AIR adds to Flex has a pretty straightforward API for working with local files and directories. There is a simple mechanism of installing and upgrading AIR applications. If you want, you can digitally sign them too. AIR 1.5 introduces local encryption, which means that you can encrypt, say a user “s password and save it in a local storage.

lt;mx:HTML gt; component allows you to build a Web browser in several minutes. Flex developers would love to have it too…

Programmatic monitoring of network connection is really easy. This is one of the selling points of AIR. If you are disconnected, save the data in the local database, and when connection is restored, the local data can be automatically synchronized with the remote DBMS hellip;if you have LiveCycle Data Services. For BlazeDS you need to develop your own solution.

The API for working with local SQLLite is easy to understand, but the result set comes back as untyped array of objects with properties corresponding to the table column names. It would be nice to have an ability to specify a strongly typed ActionScript class corresponding to the expected result set.

I can live with this.

But AIR has some other restrictions that don “t allow it to be positioned as a full replacement to other platforms for development applications for the desktop. I see some inconsistencies in the design.

On one hand, you can write an AIR application that allows a user with the right credentials to erase files from local OS. On the other hand, AIR doesn “t allow execution of the local code. In the previous blog I wrote that AIR won “t allow you to invoke an ActiveX required to start Microsoft Outlook. Why?

After the class, I spoke to one of the Adobe engineers about it. He said, that the reason behind these kinds of limitation is a requirement to keep AIR a cross-platform tool.

I don “t think so. IMO, Adobe should learn from Java, which is cross-platform, but provide JNI API to allow developers using features specific to a particular OS.

As of today, to support automatic Outlook emails with attachments, I need to write a C++ program that will invoke AIR, and then Outlook, which is not the architecture to die for.

Dear Adobe, please make AIR a full-fledged desktop development platform. You can “t be a little pregnant.

Stay tuned.

P.S. Got a feedback from a Jim Hayes about untyped results with SQLLite: “In fact, you can do this. Set the “itemClass rdquo; property on your sqlStatement to your custom class and results are returned as instances of that class “. Thank you, Jim.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s