Good Ideas

Adobe AIR, ex Apollo: il WEB2.0 che influenza il modo di programmare le normali applicazioni. Come funziona il descriptor file.

Posted by:

|

On:

|

Adobe AIRFinalmente è stata rilasciata la versione beta di AIR della Adobe, una volta chiamata (a dire il vero forse più mnemonicamente ) ‘Apollo’. Ponendosi come valida alternativa a Silverlight della Microsoft, ma anche a Googlegears, con cui però non si dovrebbero certo sottovalutare le particolari affinità, Adobe AIR cerca per così dire di ‘esportare’ le applicazioni scritte per il web2.0 in un ambiente offline che possa essere semplicemente il proprio desktop; dunque i principali linguaggi di programmazione che si possono usare con AIR sono quelli tipici di un ambiente WEB, in particolare:

  • HTML
  • Javascript
  • XML
  • Flash
  • Flex
  • (tecnologia Ajax)

Per girare tali programmi abbiamo ovviamente bisogno del cosiddetto ‘Runtime environment’ dell’AIR, scaricabile dal sito internet dell’adobe labs (unica pecca, non esiste ancora una versione per linux, che renderebbe il tutto più versatile e cross-platform).

In questo articolo impareremo ad usare il descriptor file, e ad eseguire piccole semplici operazioni, integrando in particolare l’ambiente AIR con un  ambiente HTML/Javascript.

Per creare un progetto AIR, è sufficiente creare una cartella e porre dentro il file AIRAliases.js, fornito già con l’AIR SDK, creare sempre nella directory un file ‘descriptor’, qualcosa come nomefile-app.xml, e i file del progetto, che nel caso più semplice è costituito da un solo file HTML (all’interno del quale si possono utilizzare le api fornite da Adobe AIR).

Per quanto riguarda la sintassi del file descriptor, salta subito in evidenza il fatto che esso sia un file xml, e quindi segue le semplici regole xml, ed i tag inoltre sono personalizzati. In particolare un listato abbastanza completo di tutte le caratteristiche, potrebbe avere questo aspetto:

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://ns.adobe.com/air/application/1.0.M4"
appId="prove.programma1" version="1.0">
<name>Questa è una prova!</name>
<title>Titolo</title>
<description>Una semplice applicazione</description>
<installFolder>proveAIR/provaprogramma1</installFolder>
<icon>
<image16x16>icona.png</image16x16>
</icon>
<rootContent systemChrome="standard" visible="true">prova.html</rootContent>
<fileTypes>
<fileType>
<name>adobe.VideoFile</name>
<extension>avf</extension>
<description>Adobe Video File</description>
<contentType>application/vnd.adobe.video-file</contentType>
</fileType>
</fileTypes>
</application>

Al solito la prima linea definisce il tipo di documento, questa volta non con il solito !DOCTYPE, ma con il più specifico ?xml esplicitando la versione ed il tipo di encoding dei caratteri utilizzato. Il tag <application> è il tag principale, padre di tutti, con attributi xmlns, il cosiddetto ‘namespace’ o spazio dei nomi, l’appId, che dovrebbe essere univoco per ogni programma (abbiamo usato la sintassi prove.programma1 per comodità, e la versione.
 Il tag <name> serve ad identificare (e mostrare) il nome del programma nella barra del titolo della finestra. I tag <title> e <description> sono molto simili al primo, solo che sono mostrati durante l’installazione dell’applicazione. <installFolder> esplicita la cartella dove lo si vuole installare. <icon> e il tag figlio <image???x???> (dove al posto di ??? può andarci 16×16, 32×32, 64×64 o 128×128) servono a definire l’icona. <rootContent> serve a definire il file da caricare all’avvio (nel nostro caso prova.html); quest’ultimo può avere vari attributi, tra i quali il più importante è systemChrome (esso può essere standard, per creare una finestra standard, oppure none, ed in tal caso si daranno tutte le caratteristiche e dimensioni della finestra), in particolare:

  • transparent, che se è true specifica che la finestra può supportare le trasparenze in percentuale (le cosiddette alpha-blending)
  • height e width, che specificano l’altezza e la larghezza

<fileTypes> e il tag figlio <fileType> sono importantissimi per far sì che, quando il Sistema Operativo lanci un tipo di file, la nostra applicazione sia richiamata automaticamente. <name> , <extension>, <description> e <contentType> specificano meglio (solo i primi due tuttavia sono obbligatori!, nel caso del listato colleghiamo gli AdobeVideoFile all’applicazione).

Finita la spiegazione della sintassi del file xml, volevo giusto fare due piccole parentesi riguardo al file HTML e il modo di fare trasformare più file del progetto in un unico file .AIR. Per quanto riguarda l’HTML esso deve avere un XMLHttpRequest (in fondo stiamo sempre operando in un qualcosa di estremamente affine al web2) ed inoltre includere lo script AIRAliases.js, prendo il listato di esempio dello stesso sito della adobe:

<html>
<head>
<title>Hello AIR!</title>
<script src="AIRAliases.js" type="text/javascript"></script>
<script type="text/javascript">
function appLoad(){
if(window.runtime){
air.trace("Hello AIR.");
}
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "request.txt",true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4) {
document.getElementById('replace').innerHTML = xmlhttp.responseText;
}
}
xmlhttp.send(null)
}
</script>
</head>
<body onLoad="appLoad();">
<hi>AIR</h1>
<div id="replace">
<p>Placeholder</p>
</div>
</body>
</html>

Come si può facilmente intuire questo banale programma sostituisce il testo che si trova dentro il tag con id=replace (il tag div), con un testo qualsiasi posto nel file request.txt. L’unico utilizzo di una API AIR specifica lo si può vedere al centro del programma con l’istruzione air.trace("helloAIR"); che serve a scrivere il testo specificato nella console.

Seconda parentesi: per unire più file di progetto in un unico file .air, occorre da prompt dei comandi digitare:

adt -package filedesiderato.air fileDescriptor-app.xml fileiniziale.html AIRAliases.js file1.txt file2.txt .........filen.xxx

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *