En la primera entrega de esta serie aprendimos los fundamentos necesarios para formar una base solida sobre la cual apoyar nuestro desarrollo de aplicaciones. Hoy aprenderemos a comenzar el desarrollo de aplicaciones reales, (aun que por ahora poco funcionales en el mundo real) y a probarlas en vivo.

Preparando los ingredientes

Para comenzar aseguremos que todo esté listo: como ya he dicho anteriormente, para seguir la serie de AIR necesitas tener instalados en tu computadora tanto el runtime de AIR como el SDK. Creo que eso quedó claro, sin embargo ¿qué son y para qué sirven estos dos ingredientes?

El runtime de AIR:

Esta es la parte que hace la magia creando un layer de comunicación entre el sistema operativo y nuestros documentos (en nuestro caso HTML y Javascript). Nosotros no lo usaremos durante las primeras entregas de esta serie, pero nos será necesario cuando instalemos nuestras aplicaciones y las corramos directamente desde el escritorio.

El SDK:

Las siglas SDK significan Software Development Kit o Kit de desarrollo de software (en español). El SDK contiene, entre otras cosas, 2 herramientas para la línea de comandos que son extremadamente útiles para el desarrollo de aplicaciones. Estas herramientas son ADL y ADT, y nos permiten probar, firmar y empaquetar nuestras aplicaciones. Por ahora estaremos usando solo ADL, que es la que nos permite probar las aplicaciones sin necesidad de instalarlas.

Es recomendable que instales las herramientas para la línea de comandos dentro de la ruta del sistema de modo que las puedas usar desde cualquier parte de tu máquina. Nuevamente, como a mi nunca me sale tal y como lo dicen las instrucciones, prefiero no dar detalles sobre este proceso y en lugar dejarles un enlace a instrucciones claras sobre como hacerlo tanto en windows como en mac.

Una vez tenemos esto ingredientes listos, pasemos desarrollar nuestra primer aplicación AIR.

Nuestro primer respiro de AIR (aire en inglés)

Empecemos con algo sencillo cuyo propósito es demostrar lo fácil que es usar adl. Como es costumbre llamaremos esta aplicación hello world.

1. En algún lugar que hayas destinado para guardar tus aplicaciones crea una nueva carpeta y llámala: AIRHelloWorld

2. Abre tu editor de textos favorito, entre más sencillo es mucho mejor (personalmente uso BBEdit) y crea un archivo con el siguiente contenido:

<?xml version="1.0" encoding="utf-8" ?>
<application xmlns="http://ns.adobe.com/air/application/1.0">
<id>com.ejemplo.AIRHelloWorld</id>
<filename>AIRHelloWorld</filename>
<name>AIR Hello World</name>
<description>Mi primer AIR.</description>
<version>1.0</version>
<initialWindow>
<content>AIRHelloWorld.html</content>
<title>Hello World</title>
<systemChrome>standard</systemChrome>
<transparent>false</transparent>
<visible>true</visible>
<minimizable>true</minimizable>
<maximizable>true</maximizable>
<resizable>true</resizable>
</initialWindow>
</application>

Guárdalo con el nombre AIRHelloWorld.xml en la carpeta que creamos hace un momento.

3. Crea otro archivo que contenga lo siguiente:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>AIRHelloWorld</title>
</head>
<body>
<div id="pantalla">
<h1>Hola!</h1>
<p>Soy una app desarrollada en AIR. Por el momento no hago nada, pero soy cool no?</p>
</div>
</body>
</html>

y guárdalo con el nombre AIRHelloWorld.html en la misma carpeta. Si eres usuario de Mac, abre el Terminal (Applications ->Utilities ->Terminal) Si eres usuario de Windows abre la Consola (Start ->Accessories ->Command prompt)

Cámbiate a la carpeta en donde has guardado tus archivos (la misma carpeta que creaste al inicio). En Mac basta con ir navegando por las carpetas usando el comando cd. Por ejemplo, mi ventana se ve así al iniciar el Terminal:

Last login: Thu Aug 13 16:31:45 on console
Welcome to Darwin!
You have new mail.
panza-indigestaditas-ibook-g4:~ panzaindigestadita$

lo único que hago es darle la instrucción cd Applications y presionar enter. Ahora veo algo como:

panza-indigestaditas-ibook-g4:~/Applications panzaindigestadita$

Le doy la instrucción cd AIRHelloWorld presiono enter y listo. Eso me lleva exactamente donde quiero. Aclarar que mi carpeta la tengo en la carpeta Aplicaciones dentro de la carpeta correspondiente con mi usuario. En windows se sigue la misma lógica.

Una vez estoy en esta carpeta simplemente le doy la instrucción:

adl AIRHelloWorld.xml

y eso me abre mi aplicación que por ahora se ve así:

Picture 2

Cool no? En realidad puede ser que no mucho. Pero hey!, ya estás corriendo una aplicación, aun que claro por el momento no hace nada. Pero hemos demostrado lo sencillo que es desarrollarla y probarla usando adl.

Hablemos sobre seguridad

Como todo lo relacionado con computadoras, el desarrollo de aplicaciones AIR está ligado a temas de seguridad. Hablemos un poco sobre el modelo de seguridad de AIR. Quizá muchos de ustedes preferirían seguir probando aplicaciones, pero si quieres tomar esto en serio, es necesario que aprendas temas no tan atractivos como lo es la seguridad.

Las aplicaciones de escritorio, por su naturaleza, tiene permisos más aya de los que una aplicación basada en internet tiene. Una de las razones de esto es que se supone que una aplicación de escritorio ha sido instalada y por lo tanto el usuario tiene cierto nivel de confianza en la aplicación.

AIR usa dos diferentes sandboxes como modelo de seguridad y asigna permisos a los archivos dependiendo el sandbox en el que son cargados. Estos dos diferentes sandboxes se conocen como application sandbox y non-application sandbox. Si bien los términos pueden ser traducidos al castellano, en este caso en particular considero que es mejor dejarlos en Inglés ya que es la forma en la que se usan comúnmente.

Application sandbox:

Provee acceso a todas la APIs de AIR, incluyendo las que proveen acceso al sistema. En este sandbox se cargan todos los archivos nativos de la aplicación, es decir, todos los archivos que son copiados dentro de la carpeta de la aplicación al momento de ser instalada. Como es de esperarse, este sandbox presenta algunas restricciones.

En otras palabras, algunos patterns que por naturaleza son soportados por los navegadores son desactivados (por decirlo de alguna manera) en este sandbox. A lo largo de esta serie iremos aprendiendo sobre dichas restricciones de forma natural por lo que por el momento no pondremos mucha atención a cuales son específicamente estos patterns. Por ahora basta con mantener en mente que existen ciertas restricciones.

Non-application sandbox:

En este se cargan todos los archivos que no califican para ser cargados dentro del application sandbox. Esto puede incluir archivos locales y remotos que se cargan en tiempo de ejecución. Estos archivos no tiene acceso a las APIs de AIR y se comportan como lo harían en un navegador.

Por tal motivo, creo que será más sencillo comprender el funcionamiento de non-application sandbox que el de application sandbox, pero una vez comprendes ambos, te das cuenta que realmente no es algo complicado. El modelos de seguridad de AIR puede parecer un poco confuso al principio, pero verás que cuando comencemos a trabajar e interactuar con los dos sandboxes todo se vuelve más claro.

Por ahora esto es todo. Tal vez parezca que vamos muy lento, pero aguanta un rato. Una vez que los conceptos básicos hayan sido explicados todo se irá poniendo más interesante. Recuerda que el comienzo es siempre la parte más difícil y tediosa.

Next time

En el próximo episodio empezaremos a usar estilos y Javascript para darle más vida a nuestras aplicaciones. También veremos un ejemplo más avanzado de lo que se puede hacer con AIR y empezaremos a planear una de nuestras aplicaciones reales. Pueden seguir el tutorial en el blog de Imbuzu.