Programmation mobile: Native vs HTML 5 vs Titanium

Quel plateforme choisir? Les avantages et inconvénients en considérant tous les aspects de la programmation.

Mais quels sont les aspects à considérer? Ce sont la facilité de développement, la réusabilité du code, les possibilitités et limitations de la plateforme, et en conséquence la qualité de l'application, sa fluidité, son apparence.
Mais il faut aussi considérer les avantages pour l'application finie: la compatibilité avec les OS, l'accès aux boutiques, l'évolution future des mobiles.

En fonction de tous ces facteurs, on pourra déterminer dans quel domaine d'application chaque plateforme offrira le meilleur support. Si on connaît un peu ces technologies, on peut deviner en fait un peu déjà la tendance, mais il est bon de savoir précisement ce que l'on peut attendre de chacune.

HTML 5

Fonctionne sur tous les appareils et systèmes pourvu que JavaScript ne soit pas désactivé.

Description

HTML 5 est le langage de description d'interface utilisateur. L'association avec les données se fait en JavaScript avec un serveur de données, de préférence Node.js. Il cela permet de l'interfacer avec des API natives qui gèrent les fonctions de l'appareil. Une des plus utilisées est PhoneGap. La conception est aussi facilitée avec des frameworks comme Backbone et Sencha.

Facilité

Coder en HTML 5 peut être très difficile. Il faut travailler avec un langage dynamique, gérer le mode offline, faire fonctionner le son si besoin et surtout tester l'application sur de multiple navigateurs. Pour une application de type business ce peut être plus facile grâce aux nombreux frameworks qui gèrent l'association des données avec l'interface.

Durabilité

Si elle se base sur les standards, telle d'API développée par Mozilla pour les mobiles, l'application sera là pour durer indéfiniment (à l'horizon informatique).

Possibilités

Grace à la balise Canvas qui offre une surface de dessin ou d'animation, toutes les applications graphiques sont possibles. Le son est aussi disponible mais peu efficace. WebGL offre la 3D mais c'est une technologie naissante. Des API donnent accès aux matériel, avec une réactivité inférieure à celle des applications natives.

Compatibilité

L'application fonctionnera sur tous les systèmes d'exploitation et type d'ordinateurs ou mobile. Elle fonctionnera aussi sur Metro de Windows 8.
Le même code pourra être réutilisé sur un site Web, une application locale, une application mobile.

Diffusion

Les applications HTML 5 ont accès possible à l'AppStore, ainsi que sur Facebook mobile. Elle ont l'avantage d'une audience sur tous les systèmes ce qui se répercute par un echo plus large dans les média.

Applications

L'application doit dépendre peu des fonctions propres aux mobiles, comme senseurs et autres capteurs. C'est le cas des jeux, mais pour autant ce n'est pas la meilleure plateforme pour eux. Le son est pauvre actuellement. Il y a en fait des quantités de jeux sur Canvas.
Les applications pratiques ou liées à Internet ou qui accèdent à une base de donnée sont les plus faciles à réaliser.

Native

Chaque système d'exploitation dispose d'une plateforme de programmation native. Tizen et webOS utilisent HTML 5 et un framework de bas niveau pour accéder aux fonctions de l'appareil.

Description

Langage et outils de programmation dépendent du système. Pour iOS c'est Cocoa et le langage Objective C, pour Android c'est la machine virtuelle Dalvik et le langage Java. On a pu porter Dalvik sur d'autres systèmes, avec une expérience utilisateur plutôt moyenne.

Facilité

La plateforme se place en seconde position en terme de difficulté. On dispose d'interface de développement généralement basées sur Eclipse avec des émulateurs sur le bureau. Il existe un générateur d'application pour Android. Quand on programme régulièrement en natif, cela semble plus simple qu'en HTML, mais c'est le contraire pour une première application.

Durabilité

De nouvelles versions de l'OS ou des appareils différents pourront rendre l'application obsolète. Elle devra donc être mise à jour régulièrement.

Possibilités

Rapidité, fluidité, accès aux composants graphiques natifs et autres composants du système.

Compatibilité

En ce qui concerne Android, la fragmentation est importante. Une application pour Android 4 ne fonctionnera pas sur la 2.3. On tendra à limiter l'application pour trouver le dénominateur commun. Pour chaque OS, il faut réécrire l'application pour la porter sur un autre.

Diffusion

Une application iOS peut accéder à l'AppStore d'Apple. Ce n'est pas garanti. Une fois le droit d'entrée payé, l'application peut être refusée. Et si elle est acceptée, il faudra reverser 30% des revenus à la firme. En contrepartie, l'application disposera d'une large exposition et de ventes plus larges sur cette marque.

Applications

On peut accéder à toutes les possibilités de l'appareil et plus encore à de nombreux périphériques qui ont été inventés pour compléter un mobile. Voir l'article sur les applications des mobiles. En natif, tous les types d'applications peuvent être réalisés.

Titanium

Permet de générer du code natif à chaque sytème à partir d'un même code source. Appcelerator, l'éditeur, offre Titanium Studio gratuitement avec le SDK mais sans les extensions pour entreprise. Selon lui, 300 000 développeurs utilisent la plateforme en 2012.
Il faut savoir que si l'outil est gratuit quand on construit un logiciel lui-même gratuit, il a un coût élevé dès lors qu'on l'utilise pour un produit commercial. Donc, lire attentivement la licence avant de l'employer. Seule la version sur GitHub avec le SDK que l'on compile soi-même est gratuite.

Description

Combine un IDE basé sur Eclipse, Titanium Studio, et un SDK en JavaScript qui peut s'interfacer avec les API natives.

Facilité

Dans la mesure ou le même code est utilisé pour tous les systèmes, c'est le plus facile à porter... Selon l'éditeur, on programme plus rapidemment qu'avec les langages Objective C ou Java. En fait on est surpris de voir qu'il faut moins de lignes de codes pour le même résultat.
La mise en ligne sur les AppStores est automatique.

Durabilité

L'avenir de la plateforme est lié à celui de l'éditeur. S'il se retire du commerce, il n'y aura plus de mise à jour du système. Mais le code est open source, et il pourrait toujours trouver repreneur.

Possibilités

Ajoute des services de cloud avec notifications aux applications et un service de statistiques pour connaître l'usage de l'application.

Compatibilité

Compatible avec tous les mobiles, les tablettes, et les ordinateurs de bureau.

Diffusion

Les applications sont acceptées sur l'AppStore depuis un changement de politique de la part d'Apple.

Applications

Comme les applications natives, elles accèdent aux fonctions de l'appareil, mais la plateforme étant générique, et donc n'étant proche d'aucun système, elle seront moins adaptées. Ce qu'elle supporteront est le dénominateur commun de tous les systèmes supportés. Elle convient donc pour une application spécialement mobile mais non à une marque en particulier.

Conclusion

Il y souvent confusion entre application Web et application HTML 5. La section JavaScript de ce site montre pourtant qu'on peut réaliser des applications locales en HTML 5 avec Node.js. Apparemment sur les mobiles, cette plateforme est liée à Internet et donc impose un délai de chargement de l'application. Cet inconvénient n'existe plus si l'on sait bien gérer le mode offline.

L'autre inconvénient de HTML 5 est la difficulté de programmation, tandis que Titanium qui utilise aussi JavaScript serait plus facile à utiliser que le développement natif. Ce dernier reste le choix à faire si l'on a besoin de toutes les ressources de l'appareil et de meilleures performances. Il impose plus ou moins de se dédier entièrement à un système d'exploitation.

Dans la deuxième partie nous allons voir le choix de plusieurs acteurs et pourquoi ils ont fait ce choix.