· Tech watch

Application mobile native avec Titanium

Titanium est un logiciel open-source qui permet de construire des applications mobile, avec les éléments d’interface natifs, le stockage de données, la géolocalisation etc. fonctionnant simultanément sur iPhone et Android, et avec des technologies web !

Les développeurs web peuvent ainsi s’éviter la peine d’apprendre Objective-C ou Java et utiliser à la place leurs compétences en Javascript, HTML et CSS pour construire des applications qui, cerise sur le gâteau, fonctionneront à la fois sur iPhone et sur Android (et bientôt Blackberry et iPad).

Le logiciel est édité par Appcelerator, une société basée à Mountain View et créée en 2006. En plus de maintenir le projet et d’en faire la promotion, Appcelerator commercialise une offre de support technique, des formations, des audits… Les formules sont disponibles ici.

Pourquoi c’est bien

Ce genre d’outil permet de créer des applications mobiles à moindre coût (et pourquoi pas de les vendre). Avec toute la richesse du contenu de type web (HTML5 et CSS3 sont de la partie) et les performances et possibilités offertes par les smartphones d’aujourd’hui. On a ainsi accès à l’appareil photo, à l’accéléromètre, au GPS… des éléments inaccessibles depuis un site web mobile.

Le temps de développement d’une application est aussi divisé par le nombre de smartphones visés (pas de développement spécifique, une seule base de code, donc si on compile pour Android et iPhone, on ne développe qu’une fois), et du point de vue de l’entreprise, c’est d’autant plus vrai : aucun effort de recrutement ou de formation à Objective-C/Java à faire !

_ Il faut ajouter à cela que la productivité du développeur web n’est pas entravée par l’apprentissage d’un nouvel IDE. En effet, Titanium n’est pas un IDE, mais uniquement un outil de compilation sur plusieurs cibles, et il est donc possible pour le développeur d’utiliser son environnement de développement favori !

D’un point de vue qualité, il faut savoir qu’il ne s’agit pas là d’applications dites « en WebView » (utilisant le moteur de rendu du smartphone pour exécuter des pages web stockées éventuellement sur le terminal mobile, et faisant un pont entre javascript et l’API du téléphone) mais bien d’applications s’exécutant en code natif, compilé (le Javascript est ainsi transformé dans le langage natif de l’OS). Cela se ressent sur les performances, ce qui est plutôt positif, et cela permet de profiter de l’ensemble des widgets natifs du téléphone.

En plus du compilateur, toute les applications Titanium envoient des statistiques d’utilisation / de debug sur les serveur de Titanium, qui sont consultables depuis l’interface web mise à disposition par Appcelerator.

On sait ainsi, sans avoir à développer quoi que ce soit, qui utilise l’application (âge, localisation), quelles sont les fonctionnalités les plus utilisées, comment les utilisateurs naviguent dans l’application, comment les usages évoluent dans le temps… etc. Ces données sont aussi utilisées directement par Appcelerator lors d’une demande de support technique. Il est possible de désactiver cette option (activé par défaut) avec le bout de code suivant (dans tiapp.xml) :

<analytics>false</analytics>

Pour finir, l’API est très complète et propose toute sorte d’outils, de Facebook Connect à Yahoo ! Query Language.

La contrepartie

Le support est une des lacunes de la solution, et pour l’utilisateur classique il est insuffisant. La documentation manque d’exemples, et la FAQ est maintenue par la communauté (et il est plutôt rare d’obtenir une réponse complète). Les entreprises se tourneront donc vers le support payant.

De plus, le développement peut s’avérer complexe : il n’est pas possible de « voir » le code source généré, et en cas d’erreur il faudra donc jouer avec l’API de Titanium, jusqu’à ce que ça marche… Ou remonter le problème au support commercialisé par Appcelerator. D’ailleurs, cette obfuscation du code généré conduit à certaines limites, comme par exemple l’impossibilité d’auditer les performances et la consommation de la batterie.

La polémique avec Apple

Début avril, Apple a sorti son nouveau SDK iPhone OS 4, et a amendé son contrat en laissant entendre qu’elle ne tolèrerait pas des applications générées à partir d’autres environnements de développement que le sien :

3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).

Voilà ce que répond Titanium :

It’s our belief that we are fully in compliance with iPhone OS 4.0 ToS as we interpret them.

Depuis la mise à jour de ces conditions d’utilisation, une cinquantaine d’applications basées sur Titanium on été acceptés dans l’AppStore, dont une officiellement développée par Appcelerator. Il est permis de s’inquiéter, mais visiblement Apple a décidé de ne pas bloquer la situation (pour combien de temps ?).

Plus récemment, les propos de Steve Jobs, bannissant Flash de son OS, ont renforcé la position de Titanium, il serait en effet permis de penser que la clause 3.3.1 était surtout destinée à bloquer l’arrivée d’Adobe sur l’AppStore (la suite CS5 devait en effet proposer un compilateur iPhone).

Les concurrents

Plusieurs autres SDK « multi-cibles » existent sur le marché :

PhoneGap : orienté WebApps sous forme d’application (pas de compilation en code natif, utilisation de WebView), PhoneGap supporte les API des iPhone/iTouch, iPad, Google Android, Palm, Symbian et Blackberry.
Rhodes : moins connu, et payant pour les entreprises, Rhodes supporte les iPhone, Windows Mobile, RIM, Symbian et Android. Il s’agit ici d’applications natives, écrites en Ruby.
Corona : un logiciel payant (avec une évaluation de 30 jours) qui permet de déployer des jeux et applications sur iPhone, iPod Touch, iPad, et Android. Corona fonctionne uniquement sur Mac, et utilise le langage Lua.

Aller plus loin

La gratuité de la solution permet à n’importe quel développeur de s’y essayer, le compilateur fonctionne aussi bien sous Windows que sous Mac et Linux (il faudra quand même posséder un Mac pour utiliser le SDK de l’iPhone). Il est possible de produire une première application en quelques heures seulement, ce qui est évidemment très intéressant.

Essayer Titanium
Des applications réalisées avec Titanium
Découvrir le code d’un jeu complet

2 commentaires

  1. Merci pour cet éclairage. Ça donne envie de tester la solution, surtout si on peut obtenir rapidement des résultats !

  2. J’utilise Titanium depuis 2 mois et j’en suis enchanté.
    J’ai développé 2 applications
    – Arbres en Europe du Nord en 1 semaine + 1 semaine pour savoir comment l’envoyer sur l’appstore
    – dTime (horloge décimale) en 1 jour pour tester la compatibilité avec iOS4

    A propos des codes exemples. Il FAUT charger KitchenSink.

    Depuis par crainte des problèmes de licence je me suis re-interressé à l’Obective-C et cela me parait beaucoup moins compliqué après avoir travaillé avec Titanium.

    A propos d’autres outils similaires il y a Nimblekit

Les commentaires sont désormais fermés.