Adobe AIR

Read this post in English

Share on:

Saptamana trecuta a trebuit sa realizez un mic proiect. Cerinta era scurta: interoperabilitate. Avand in vedere ca nu am folosit niciodata Adobe AIR am zis ca este o oportunitate buna sa incerc.

Rezultatul este o mica aplicatie de project management. Pentru server am folosit PHP + SOAP + Zend Framework, pentru client am folosit Adobe AIR cu JavaScript.

Serverul l-am rezolvat in cateva linii:

 1<?php
 2// clasa de autoload pentru Zend Framework
 3include 'Zend/Loader/Autoloader.php';
 4
 5// clasa care va rezolva cererile SOAP
 6include 'SOAP.class.php';
 7
 8// initializez autoloader
 9Zend_Loader_Autoloader::getInstance();
10
11// daca se cere fisierul WSDL pentru descriere
12if(isset($_GET['wsdl'])) {
13 $autodiscover = new Zend_Soap_AutoDiscover();
14 $autodiscover->setClass('test');
15 $autodiscover->handle();
16// daca se face un request SOAP
17} else {
18 $soap = new Zend_Soap_Server("http://localhost/soap/index.php?wsdl");
19 $soap->setClass('test');
20 $soap->handle();
21}
22
23?>

Descriptorul se construieste automat folosind comentarile de tip PHP Documenter din clasa care se ocupa de apelurile SOAP, in acest caz clasa se numeste “test”.

Acum ca am trecut de partea usoara m-am apucat de clientul Adobe AIR urmand acesti pasi simpli:

  • Descarcat si instalat Aptana Studio
  • Instalat plug-in Adobe AIR
  • New project -> Adobe AIR
  • and voila! Codarea poate incepe!

Adobe AIR foloseste ca motor pentru JavaScript Webkit. Suna cunoscut? Webkit este folosit de Safari si Google Chrome. Deci codul JavaScript nu trebuie sa fie compatibil decat cu Webkit!

Evident exista un “dar” si un plus. “Dar”-ul este ca exista niste restrictii, de exemplu “eval” nu se poate folosi decat pentru decodare de JSON, iar textul introdus intr-un element direct (ca text) nu poate fi rulat:

1div.innerHTML = "<a onclick=\"alert('ceva')\" href=\"#\">click</a>";

Link-ul va ajunge in element dar nu va rula nimic la onclick pentru ca paramentul a fost trimis ca text.

Asta a fost un dezavantaj destul de mare pentru mine, dar am reusit sa gasesc o alternativa construind elementele html folosind DOM si adaugand actiuni cu addEventListener.

Pe scurt Adobe AIR are formula:

1Adobe AIR = (Webkit)Web Development - security + air framework.

Mi se pare foarte usor de dezvoltat in Adobe AIR pentru un Web Developer care vrea sa realizeze o aplicatie desktop.

Evident nu este foarte rapid si nu mi se pare o solutie buna pentru programe foarte complexe. Dar daca vine vorba aplicatii medii si mici, daca ar trebui sa aleg intre Adobe AIR si PHP GTK de exemplu, prima varianta mi se pare mult mai viabila si usor de folosit!

Pana la urma proiectul a fost gata in mai putin de 3 zile iar grafica a iesit genial! Nici nu pare o aplicati facut folosind doar HTML si JavaScript!