Titanium : pourquoi j’y crois pas

Je suis allé à un worshop Titanium il y a quelques mois.
Je pensais que, pour faire au mieux il valait mieux coder natif que coder web.

Titanium propose d’utiliser les technos web-stack standard pour les cross-compiler vers du natif iOS, Android, BlackBerry et WindowsPhone.
En gros Appcelerator essaie de se mettre dans la poche :

  • les développeurs Javascript qui veulent faire du mobile natif sans connaissance des langages natifs.
  • les CEO/CTO effrayés par l’idée d’écrire 1 appli N fois avec N langages pour N devices

Titanium considère qu’il apporter une réponse à ces 2 problématiques. Bref faire du WORA.
Dans l’absolu c’est la réponse parfaite,
Mais ca me parait un peu trop beau pour être vrai, ca sent la Silver Bullet.

Cependant , je suis moi-même développeur web,
et au fur et à mesure de la présentation certaines choses m’ont fait tiquer:

[JS + XML + TSS] Vs [JS + HTML + CSS3]

TSS
Titanium utilise le format TSS pour styler les UI mobiles. TSS transcode la spécification CSS3
au format JSON. Ca signifie qu’en gros TSS réinvente le DHTML.
Quel est  l’intérêt d’exister de TSS alors que CSS3 est déjà standardisé et surpuissant
et que TSS se compile en CSS ?
Sans doute pour respecter le règles Cross-Platform, avec un langage sans parti-pris.
Encore une facon IL S’de réinventer la roue, qui tourne déjà très bien.
Moi je dis : Yet Another Language to Learn

XML
Titanium utilise un formalisme XML pour décrire ses vues, avec son propre namespace, ses propres tags.
Pourquoi utiliser un formalisme XML propriétaire alors que HTML existe ? c’est un standard que tout développeur connait, qui décrit des IHM web, et hérite de la spécification SGML  donc hérite aussi XML.
Tout comme il fait appel au CSS pour styler son visuel.
Tout comme Javascript et ActionsScript3 héritent de la spécification ECMAScript.
Finalement je me retrouve dans une page XML vierge. Je veux dessiner ma vue.
Je fais appel à mes connaissances en HTML, et ben la non faut que j’apprenne le XML à la sauce Titanium.
C’est la même logique que le MXML de Adobe Flex : des composants qu’on peut aussi bien décrire en XML qu’avec le langage.
Par contre l’intéret véritable de ce format XML est d’apporter une abstraction d’UI , toujours sans parti pris.
le moteur Titanium assure un compilation avec un rendering adapté au guidelines de l’OS ciblé.

Javascript
Finalement le seul truc valable qui donne un droit légitime d’exister à Titanium c’est son framework Javascript nommé Alloy.
Mais ca reste un framework Javascript mobile comme il en existe des tas d’autres en opensource.
celu ici n’apporte rien de plus : des Web Components, des triggers natifs.

Pourquoi je crois pas trop à Titanium :

  • Je suis sceptique vis a vis des technos de cross-compilation
  • Titanium est obligé de synchroniser son API pour suivre les évolutions des SDK natives
  • La cross-compilation Java n’est pas éditable en dehors de Titanium Studio (bytecode propriétaire)
  • Pourquoi utiliser une techno web pour faire du natif quand la techno web fait aussi bien que le natif  ?
  • Titanium ne fait pas mieux que Adobe Flex : il le copie

Je crois beaucoup plus à de la techno web basées sur NodeJs car :

  • NodeJS : serveur JS embedded, REST API, single thread, BDD/CRUD locale, websocket
  • tout aussi performante
  • aussi facile à déployer sur les stores (encapsulée en WebView aka VM native)
  • mêmes outils qu’en dev-stack natif
  • naturellement cross-platform et WORA
  • normalisées, browwser-compiant
  • portable en Desktop par le même principe de WebView native mobile
  • taillée pour de la SPA, MVC client, data-binding, offline  (AngularJS)
  • éditable facilement,
  • non compilée
  • API HAL (matérielle) de plus en plus accesible via les API JS web (PhoneGap)
  • Look n feel natif (SteroidJS, Ionic)

A la rigueur la où le natif tire son épingle :

  • Programmation objet à typage statique
  • Performances accrûes (compilé)
  • Composants UI natifs

Quelques ressources

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s