Alternatives en la programació per a dispositius mòbils

Un dels àmbits multimèdia amb més creixement els últims anys ha estat el dels dispositius mòbils. L’arribada dels telèfons intel·ligents (smartphones) va fer enfilar la creació d’aplicacions mòbils que aprofiten la capacitat multimèdia d’aquests dispositius. L’aparició i l’enlairament poc després de les tauletes ha convertit el desenvolupament d’aplicacions per a dispositius mòbils en un pilar de la indústria multimèdia.

L’entorn multimèdia sempre ha tingut molta relació amb la programació. Quan un element es mou a la pantalla, quan s’interacciona amb l’usuari, quan es reprodueix un so després d’un determinat esdeveniment, s’executen unes quantes línies de codi per a generar aquesta situació. Si bé amb Flash es poden simular alguns moviments i algunes interaccions sense programació, en els dispositius mòbils costa d’imaginar-se una aplicació multimèdia que no tingui un important component de programació al darrere.

La programació, però, en cada sistema operatiu és un petit món. Hi ha llenguatges o entorns de treball (frameworks) que ens permeten crear programes multidispositiu (es programa una vegada i s’executa en qualsevol dispositiu), però per a aplicacions complexes que requereixen un gran rendiment, la programació se sol fer en els llenguatges natius de cada sistema operatiu, de manera que s’ha de reescriure l’aplicació per a cada sistema operatiu.

Avui dia podem trobar dispositius mòbils sobretot amb els sistemes operatius següents (entre parèntesis, els percentatges sobre el total d’unitats venudes en el tercer quart del 2012 –inclou telèfons, però no tauletes–):

Evolució en les vendes de dispositius mòbils, segons els sistemes operatius. http://en.wikipedia.org/wiki/Mobile_operating_system

Per a cadascun d’aquests sistemes operatius hi ha un o diversos SDK (equip de desenvolupament de programari) amb suport per a un o més llenguatges de programació. Així, Android té un SDK per a Java, iOS en té un per a Objective-C, Bada un per a C++, Symbian un per a dos llenguatges diferents (C++ i Java) i BlackBerry un per a C++ (encara que dóna suport a molts llenguatges i plataformes).

Per a una persona o empresa petita que vulgui programar una aplicació per a la majoria de dispositius que hi ha en el mercat, aquesta diversitat de llenguatges i equips de desenvolupament complica força la creació de multidispositius. La solució passa de vegades per centrar-se en un sol sistema operatiu (sobretot en el cas de desenvolupadors que treballen per compte propi) o bé usar alguna de les alternatives que ofereixen la possibilitat de crear aplicacions multidispositiu com, per exemple, PhoneGap, Appcelerator, Corona SDK i Adobe AIR.

PhoneGap

Phonegap segurament és l’alternativa més coneguda, és de codi obert (llicència Apache 2.0) i permet crear aplicacions per a Android, iOS, RIM, Bada, Windows Phone, Symbian i d’altres. Usa HTML5+CSS+JavaScript per al desenvolupament, de manera que el resultat és com un conjunt de pàgines web empaquetades funcionant sobre un navegador. És una bona opció per a desenvolupadors amb una bona base de JavaScript, encara que per a aconseguir que l’aspecte sigui el d’una aplicació mòbil (en comptes del d’una pàgina web) cal usar entorns de treball com jQuery mobile o jQTouch (connector per a jQuery) que faciliten crear aplicacions web que tinguin aspecte d’aplicacions mòbils.

Les aplicacions creades amb PhoneGap s’executen sobre el motor del navegador dels dispositius mòbils. Depenent del sistema operatiu tenen accés a totes o a gairebé totes les funcions del dispositiu (càmera, GPS, acceleròmetre, etc.) i també al DOM, de manera que permeten l’ús d’entorns de treball com jQuery que facilitin la programació.

PhoneGap permet crear aplicacions multidispositiu sense haver de tenir gaires coneixements dels diferents sistemes operatius. El desenvolupament és senzill per a persones amb coneixements d’HTML i JavaScript i a més té una bona documentació i molts exemples. No obstant això, les aplicacions no tenen un gran rendiment, i si no es cuida l’aspecte semblaran pàgines web més que no pas aplicacions.

PhoneGap és gratuït (encara que pertany a Adobe), si bé el suport és de pagament.

Appcelerator

Appcelerator permet crear aplicacions per a Android i iOS usant JavaScript com a llenguatge de programació. A diferència de PhoneGap, Appcelerator compila el JavaScript i genera un codi que s’executa directament en el dispositiu. Com que no s’executa sobre el navegador, no té disponible el DOM, i els controls són els del dispositiu. Això fa que l’aplicació tingui una aparença més d’acord amb el dispositiu i que alhora guanyi una mica de rendiment. En canvi, les aplicacions depenen del sistema operatiu sobre el qual funcionaran, de manera que si es vol fer una aplicació que funcioni en els dos sistemes caldrà adaptar-la.

Les aplicacions creades amb Appcelerator s’executen sobre un entorn d’execució de JavaScript (V8 –per defecte– o Rhino per a Android i JavaScriptCore per a iOS) que està escrit en codi natiu i en què el codi de l’aplicació s’interpreta.

Appcelerator és gratuït, encara que el suport és de pagament.

Adobe Air per a dispositius mòbils

Adobe Air per a dispositius mòbils és la proposta d’Adobe per a crear aplicacions per a dispositius mòbils usant ActionScript. L’entorn de desenvolupament pot ser tant Flash Builder com Flash mateix o Flex SDK, de codi obert i gratuït, cosa que facilita la creació d’aplicacions. El principal avantatge d’Air és el llenguatge de programació, molt més potent que JavaScript.

L’execució de les aplicacions Air es fa sobre un entorn propi que és el que fa d’intermediari entre l’aplicació i el dispositiu. Això permet que les aplicacions es puguin executar gairebé sense canvis en diferents dispositius (Android, iOS i BlackBerry) encara que no usa controls natius i el rendiment és una mica més reduït que en una aplicació nativa.

Segurament, però, el gran avantatge de Flex/Air en relació amb PhoneGap o Appcelerator és l’entorn de programació, molt més complet i intuïtiu. El preu, en canvi (la versió estàndard costa 250 dòlars), pot ser una limitació.

En resum

En general, la creació d’aplicacions per a dispositius mòbils sempre és més eficient si es crea directament usant les eines que proporciona el desenvolupador del sistema operatiu. Això vol dir que s’ha de reprogramar l’aplicació per als diferents sistemes, tenint-ne en compte les característiques i usant l’SDK adequat. Quan això no pugui ser així, l’ús d’eines que permeten programar una vegada per a tots els dispositius simplifica la programació encara que pot reduir l’eficiència del resultat final. Triar una aplicació o una altra depèn del desenvolupador, de les habilitats que té com a programador o del temps i diners que pugui destinar al projecte.

Publicat per Carlos Casado Martínez

Llicenciat en informàtica per la Universitat Politècnica de Catalunya, és professor del Grau de Multimèdia i del Màster d'Aplicacions Multimèdia de la UOC.