Adobe AIR
Last week I was supposed to create a little project. Requirements were short: interoperability.Given the fact that I’ve never used Adobe AIR before, I thought it was a good opportunity to try it.
The result was a small project management app. For the server-size I’ve used PHP + SOAP + Zend Framework, and for the client I’ve used Adobe AIR with JavaScript.
I’ve created the server in a few lines:
1<?php
2// autoload class for Zend Framework
3include 'Zend/Loader/Autoloader.php';
4
5// class that deals with SOAP requests
6include 'SOAP.class.php';
7
8// initialize autloader
9Zend_Loader_Autoloader::getInstance();
10
11// if it's a request for the WSDL descriptor file
12if(isset($_GET['wsdl'])) {
13 $autodiscover = new Zend_Soap_AutoDiscover();
14 $autodiscover->setClass('test');
15 $autodiscover->handle();
16// if it's a SOAP request
17} else {
18 $soap = new Zend_Soap_Server("http://localhost/soap/index.php?wsdl");
19 $soap->setClass('test');
20 $soap->handle();
21}
22
23?>
The descriptor is build automatically using PHP Documenter type comments from the class that handles SOAP requests, if this case it’s named “test”.
This was the easy part so I’ve moved on to the Adobe AIR client following this simple steps:
- Download and install Aptana Studio
- Install Adobe AIR plug-in
- New project -> Adobe AIR
- and voila! Coding can begin!
Adobe AIR is using for a JavaScript engine Webkit. Sounds familiar? Webkit is used by Safari and Google Chrome. So the JavaScript code should only be compatible with Webkit!
Of course there is a “but” and a plus. The “but” is that there are some restrictions, for instance “eval” can only be used to decode JSON, and the text introduced directly in an element (as text) can not be executed:
1div.innerHTML = "<a onclick=\"alert('ceva')\" href=\"#\">click</a>";
This link will get to the element by will not run anything on “onclick” because the parameter was send as text.
This was a pretty big disadvantage for me, but I’ve managed to figure out an alternative by building HTML elements using DOM and adding events using addEventListener.
Briefly Adobe AIR is using this formula:
1Adobe AIR = (Webkit)Web Development - security + air framework.
It seems very easy for a Web Developer to develop desktop apps with Adobe AIR.
Of course is not very fast and it’s not looking like a good idea for complex apps. But if your thinking about medium and small apps, if I had to choose between Adobe AIR and PHP GTK for instance, the first option seems a lot more viable and easy to use!
In the end the project was ready in less then 3 days and the graphics were gorgeous! It didn’t even look like it was build using only HTML and JavaScript!