Titanium studio 2 : les développements natifs nomades multiplateformes

Il y a deux manières d’être présent sur les appareils nomades (smartphones et tablettes). En développant une web application adaptée aux dimensions des terminaux cibles et fonctionnant sur n’importe quel navigateur Internet, ou en développant des applications natives.

Pour la première solution, un seul développement est nécessaire. Il est compatible avec tous les terminaux. Pour la seconde solution, il est nécessaire de réaliser autant de développements que de systèmes d’exploitation existants : iOs, Android, Bada, BlackBerry, Windows Phone…

La seconde solution a pourtant beaucoup d’avantages : meilleure réputation, présence sur le store, possibilités étendues, manipulation du matériel du terminal…

Comment faire du développement natif tout en ne réalisant qu’une seule et unique application muti-OS ? C’est ce que propose Titanium Studio 2 qui est un environnement de développement permettant la réalisation d’application multi-OS. Eldorado ou vraie mauvaise idée ? Analyse.

Qu’est-ce que Titanium ? D’où vient-il ?

Titanium est un produit de la société Appcelerator. Cette société a été créée en 2006 avec comme objectif de créer des solutions de développement RIA (Rich Internet Application). Le produit Titanium a été annoncé pour la première fois en 2009 à la WWDC d’Apple, la grande conférence annuelle des développeurs autour de l’écosystème d’Apple. En 2011, Appcelerator acquiert Aptana, un autre poids lourd du développement basé sur Eclipse. Titanium, qui n’était alors qu’un environnement de compilation en ligne de commande, devient Titanium Studio, un framework complet de développement intégré à Eclipse. En 2012, Appcelerator avale Cocoafish afin de proposer une offre Cloud, et compte aujourd’hui 135 employés.

Les versions majeures de Titanium

Certains d’entre vous se sont peut-être intéressés à la première version de Titanium. C’était une catastrophe. Fonctionnellement limité et très lent à l’exécution, l’apport de Titanium était difficile à valoriser. L’ergonomie laissait également à désirer puisque tout se passait en ligne de commandes. C’est à partir de la version 1.8 que Titanium a commencé à redresser la barre en intégrant le moteur JavaScript v8 de Google et en réglant ses problèmes de fuite mémoire qui faisait que les applications plantaient souvent.

Mais c’est surtout la version 2 qui renouvelle le genre, puisque dorénavant elle s’intègre directement dans Eclipse, subit une refonte complète de son API, notamment sa gestion du layout, et supporte beaucoup plus de choses. De plus, l’applicatif est validé à la compilation alors qu’avant, les problèmes étaient signalés à l’exécution au moment où ils se produisaient. Une réelle avancée.

La mauvaise nouvelle

Voici maintenant la mauvaise nouvelle : Titanium n’est pas compatible avec tous les OS nomades. Il ne supporte aujourd’hui qu’iOS et Android. La compatibilité Blackberry est en cours de développement, et celle de Windows Phone est en projet. Titanium n’est donc pas la solution pour être compatible avec TOUS les OS nomades, mais seulement les deux principaux pour l’instant.

Le principe de fonctionnement

Le principe de fonctionnement de Titanium est assez original, puisque l’ensemble des développements sont réalisés en JavaScript. L’application s’exécute au travers d’un moteur JavaScript, en l’occurrence v8. Ce n’est donc pas à proprement parler du code natif qui s’exécute.

Titanium étend Javascript et offre une API pour permettre d’accéder à une grande partie des composants fournis nativement. Lorsque cette API est sollicitée, c’est bien le composant natif qui est créé et animé. L’effort de Titanium est donc d’exposer cette API. À chaque nouvelle mise à jour de l’OS, une nouvelle version de Titanium est donc susceptible de sortir.

L’autre effort de Titanium est de permettre, avec une seule API, d’accéder aux composants natifs du système cible et donc de gommer les différences entre les composants équivalents, mais différents, des différents systèmes. Ainsi, sur Android, le bouton physique « Retour » est géré alors que sur iOs, un bouton virtuel « Retour » sera affiché en haut à gauche de l’écran, toujours en respectant la charte graphique de l’OS cible. Parfois, Titanium enrichit le composant d’un des OS pour se rapprocher du fonctionnel de l’autre OS.

Lorsque les différences entre les composants sont trop grandes, Titanium permet tout de même d’instancier le composant pour un OS spécifique, mais il faudra proposer un code alternatif pour l’autre OS.

En résumé, les composants sont instanciés et exécutés nativement, mais leur interaction se fait avec du code JavaScript.

Titanium et le cloud

En acquérant Cocoafish en 2012, Titanium a ajouté un service cloud appelé « Appcelerator Cloud Services ». Ce service est compatible avec Titanium mais également toutes les autres solutions du marché : Objective-C, Java, HTML5, PhoneGap, Sencha, REST, iOS, Android, JavaScript et ActionScript 3.

Il permet notamment (allons-y pour la liste à la Prévert) : Chats, Checkins (pour un lieu, un événement…), Objets spécifiques (définis par le développeur), Emails (pré-formatés), Gestion d’événements, Stockage de fichiers, Gestion d’amis, Gestion de messages privés, Manipulation et stockage de photos, Gestion des lieux (géolocalisation souple), Gestion de posts (cf. mur de “posts” dans Facebook), Push notifications (y compris si app inactive), Ratings et revues, Intégration avec les réseaux sociaux, Gestion du statut (cf. statut Twitter), Gestion des utilisateurs (inscription, authentification…).

Cette solution a un coût et d’autres services Cloud existent. L’étude comparative des solutions Cloud existantes pourra faire l’objet d’une autre analyse d’expert, mais cela sort du cadre de celle-ci.

Les inconvénients de Titanium

Titanium permet la réalisation d’applications qui utilisent les composants standards des systèmes. Lorsqu’une nouvelle version du système sort avec de nouveaux composants, il faudra attendre que Titanium ait réalisé l’API avant de pouvoir utiliser ce nouveau composant.

Mais dès lors que l’application que l’on souhaite réaliser sort de l’utilisation de composants standards, Titanium va être d’une utilité réduite. Mais pas bloquante, car Titanium permet à tout moment d’ajouter du code natif.

Autre inconvénient de Titanium : c’est une solution payante dont les prix ne sont pas annoncés sur le site. Et pour cause, ils sont à la tête du client. Il est possible de négocier. À vous de faire votre propre expérience.

Les autres acteurs de ce marché

Dans ce marché, il existe quelques autres acteurs, mais ils sont peu nombreux. C’est d’ailleurs pour cela que beaucoup misent sur l’HTML5, considérant que ce n’est qu’avec HTML5 qu’on pourra réaliser de vraies applications interopérables. Le chemin est encore long avant que l’HTML5 soit considéré comme la solution ultime.

Le principal concurrent de Titanium est PhoneGAP. Mais PhoneGAP a pris un retard énorme par rapport à son concurrent. On pourrait comparer PhoneGAP à la première version de Titanium. PhoneGAP n’utilise aucun composant natif. Tout est émulé en HTML et en JavaScript. Si l’on considère que Titanium est une solution low cost, alors PhoneGAP est une solution extra low cost.

En conclusion

Avis mitigé quant à l’utilité de Titanium. Certes, les pros du JavaScript vont trouver cette solution astucieuse et efficace. Les moins férus de JavaScript seront plus dubitatifs.

Si vous souhaitez développer une application de partage d’informations présentés dans des écrans, des listes et autres composants standards et que vous voulez être présent simultanément sur iOS et Android, alors Titanium pourra vous servir.

Si vous voulez être présent sur les autres OS, il faudra chercher ailleurs.

Si vous voulez développer des applications très graphiques, voire des jeux nécessitant une grande réactivité, alors Titanium ne sera pas votre ami. Il faudra dans ce cas vous tourner vers le développement spécifique pour chaque OS.

Pour en savoir plus, je vous propose de lire les deux présentations de la conférence « Paris Titanium » qui a eu lieu le 24 mai 2012 et qui ont pour thème « Titanium 2.0 – Principales nouveautés » et « Cibler plusieurs OS avec Titanium – Best practices ».

Franck Beulé
Chef de projet Agile, expert des technologies de l’Internet et en ergonomie du Web

Ajoutez un commentaire