Les nouveautés de Sencha Touch 2 : Native packaging, Performances, Android Speed & Ext-JS Class system

Hier Sencha a annoncé la sortie destinée aux développeurs, donc non finalisée, de la version 2 de leur framework Sencha Touch. Connaissant très bien le premier, cette sortie m’a particulièrement intéressé. J’ai donc regardé en détail les nouveautés. Les voici.

Augmentation très significative des performances, du Layout manager et du support d’Android

La grosse différence est transparente au développeur, elle concerne les performances. De très gros efforts ont été fait sur cet aspect qui, il faut le dire, faisait partie des points noirs du framework : la rapidité/les performances. Le démarrage de l’application est beaucoup plus rapide, cela vient du fait de l’injection du code HTML plus rapide suite à la mise à jour du Layout manager : rendu plus vite, moins gourmand.

Voici un comparatif établi par les équipes chez Sencha, sur le lancement de leur application « Kitchen Sink » :

Comparatif des performances Sencha Touch

Comparatif des performances Sencha Touch

L’autre aspect non négligeable concerne le support amélioré d’Android, qui avait aussi pas mal de difficulté sur les rendus CSS3, comme les animations, les dégradés etc qui faisait -beaucoup- ramer les applications web développée avec Sencha Touch. Les scrolling par exemple (que Sencha Touch émule avec -webkit-translate) sont plus fluides et plus rapides.

Ajout du système de classes tiré d’Ext-JS 4 : génération automatique des getters/setters, dépendances, héritage…

La grosse modification côté développeur concerne l’ajout du système de classe introduit dans Ext-JS 4. Celui-ci est assez phénoménal il faut bien le dire. Pour étendre une classe, fini Ext.extend. On utilisera désormais Ext.create qui prend en premier paramètre la classe à étendre, et en deuxième un objet de configuration de propriétés.Ces propriétés bénéficieront automatiquement de getter et setter, même et surtout si elles ne sont pas tirées du frameworks (objets customs) : c’est très pratique ! Vous pourrez utiliser getYourProperty et setYourProperty sans devoir les développer. Pareil, si vous souhaitez faire des vérifications avant ces assignations, applyYourPropery sera là pour ça : s’il ne renvoie pas de valeur, le set/get n’est pas fait.

Le native packaging : distribuer son application compactée dans une native, avec accès aux APIs (caméra, contacts..) et sélection des dépendances

Peut-être est-ce du à la montée en puissance de PhoneGap ces derniers mois, très utilisé et très pratique, qui a poussé Sencha à en faire de même. Toujours est-il, qu’avec la mise à disposition du SDK Sencha, il est maintenant possible de déployer dans une application native (iOS pour l’instant) sans même avoir le SDK natif d’installé notre webapp. Encore mieux, il faut maintenant sélectionner très facilement les composants de Sencha que nous utilisons, et ainsi éviter de charger des composants que vous n’utilisez pas ! Encore une fois, très gros travail d’optimisation. A terme, il sera aussi possible d’utiliser les APIs du téléphone, pour l’instant elles ne sont pas disponible dans la béta.

Nouvelle documentation

Autre aspect important, la documentation est totalement revue, et adopte le style d’Ext-JS 4 ou Touch Charts : nombreux guides, recherche plus facile, exemples, vidéos… Elle intègre aussi désormais tous les mixins utilisés avec Compass dont Sencha a besoin. Elle est disponible ici : http://docs.sencha.com/touch/2-0/