Mobl: Un DSL pour sites web mobiles

Un article intéressant sorti cette semaine sur InfoQ présente un DSL (Domain Specific Language) spécialement adapté pour le développement de sites mobiles.

Mobl est un langage compilé et typé statiquement, il est prévu pour être utilisé travers un plugin Eclipse. Le plugin propose la coloration syntaxique, l’affichage d’erreurs, la résolution de références et la complétion de code. Le compilateur mobl (intégré à l’IDE) compile les modules mobl en une combinaison de fichiers HTML, JavaScript et CSS à chaque sauvegarde.

Les application mobl ne reposent pas sur une technologie serveur particulière, elle repose uniquement sur une gestion cliente de l’application. Le langage supporte les appels de services web JSON asynchrones.

Le langage mobl propose différentes fonctionnalités permettant d’améliorer la productivité des développeurs mobiles:

– Interfaces utilisateur spécifiées de façon déclarative.
– Gestion de la persistance de données transparantes via la déclaration d’entités. Les objets sont automatiquement sauvés en base de données, et peuvent être lues sans besoin de requêtage SQL.
– Statique en principe, le typage peut être dynamiquement typé. Le typage statique permet à l’IDe la détection rapides d’erreurs, la résolution de références, et la complétion de code. Grâce à l’inférence de type, dans la plupart des cas, il n’y a pas de besoin de déclaration explicite de types. Le type Dynamic permet l’utilisation de notions d’accès à des propriétés et méthodes de façon dynamique.
- Un scripting rédigé dans un style d’appel synchrone automatiquement transformé en appels asynchrones.

Tout ça donne l’eau à la bouche, et invite à aller creuser un peu plus ce DSL. Pour cela, je vous invite à aller jeter un coup d’oeil à l’article InfoQ qui en propose une bonne présentation/introduction: http://www.infoq.com/articles/Mobl

A quand un DSL facile et rapide à utiliser pour générer un site web mobile en Java? Bien oui, il faut bien satisfaire les java dependants ;)

Mobl propose entre autre des exemples permettant de générer des sites mobiles basés sur jQueryMobile et Sensha Touch

* Le site internet du langage: http://www.mobl-lang.org/

jQuery Mobile Gallery

jQuery Mobile Gallery est une galerie de sites web mobiles développés, vous l’aurez deviné, avec la librairie jQueryMobile. Je vous conseille d’aller y faire un tour si vous être intéressé par cette librairie prometteuse.

On peut déjà y trouver une bonne trentaine d’exemples de site mobiles qui pourront sûrement vous aider à vous donner un bon aperçu de ce vous pouvez faire avec jQueryMobile. Un coup d’oeil au code source vous aidera à mettre rapidement le pied à l’étrier si vous souhaitez créer votre propre site mobile.

Vous pouvez visiter la galerie à l’adresse suivante: http://www.jqmgallery.com

Sortie de jQueryMobile en version 1.0alpha3 et son grand frère jQuery en version 1.5

Ces derniers jours ont été prolifiques en news au sujet de l’écosystème jQuery. Le 31 janvier est sortie la version 1.5.0 de la librairie qui nous propose différentes améliorations intéressantes et sûrement attendues depuis longtemps par bon nombre de développeurs.

Les changements principaux de cette version concernent une réécriture complète du support Ajax fournissant une API encore plus efficace et consistante, et l’intégration d’un mécanisme qui permet de chaîner différents callbacks sur des appels de fonctions qu’ils soient asynchrones ou non.

L’API Ajax fournit maintenant un object jqXHR retourné par l’appel de la méthode jQuery.ajax() qui permet de gérer de façon consistante l’objet XMLHttpRequest quelque soit la plateforme utilisée. Par exemple, il est maintenant possible d’annuler facilement une requête JSONP ce qui n’était pas le cas auparavant.

// Assign handlers immediately after making the request,
// and remember the jxhr object for this request
var jxhr = $.ajax({ url: "example.php" })
.success(function() { alert("success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });

// perform other work here ...

// Set another completion function for the request above
jxhr.complete(function(){ alert("second complete"); });

Une explication complète du mécanisme appelé: ‘Deferred Objects‘ est disponible sur le site de jQuery.

jQuery expose maintenant, par le biais de la méthode jQuery.sub() un moyen simple de créer et modifier un clone de jQuery dans la même page sans pour autant interférer avec la déclaration par défaut. il est ainsi possible d’overrider des méthodes natives jQuery sans craindre d’incompatibilité avec d’autres scripts d’une même page basée sur jQuery. Cela rend aisé l’écriture d’API basées sur jQuery sans risquer une collision de namespaces.

(function(){
var sub$ = jQuery.sub();

sub$.fn.myCustomMethod = function(){
      return 'just for me';
    };

sub$(document).ready(function() {
      sub$('body').myCustomMethod() // 'just for me'
    });
})();

typeof jQuery('body').myCustomMethod // undefined

Cette version inclut également des améliorations de performance puisque la gestion de certaines méthodes de traversée de l’arbre DOM ont largement été optimisées comme les méthodes: .children(), .prev(), and .next(). Ces améliorations sont particulièrement importantes sous webkit (Chrome et Safari), mais elles sont également intéressantes sous Internet Explorer, puisqu’elles permettent de faire décoller un peu les performances de notre cher navigateur.

A ce jour quelques 4500 tests passent avec succès sur un nombre impressionnant de browsers (dont IE6, mais également Firebox 4 beta), ce qui pousse au respect au vue de l’hétérogénéité de ce joyeux petit monde.

Pour finir sur une note intéressante, le système de build de jQuery est maintenant basé sur l’environnement serveur JavaScript: NodeJS, ce qui est plutôt original, mais qui permet au navigateur de réduire sa dépendance envers Java/Rhino, et de se tourner vers de nouvelles solutions JavaScript innovantes.

Une road map de la librairie est disponible à l’adresse suivante: http://docs.jquery.com/Roadmap.

Presque 3 longs mois après la sortie de la version précédente, jQuery Mobile vient de sortir sa troisième version alpha, accompagnant à une semaine d’intervalle la release de son grand frère jQuery en version 1.5.0. L’attente ne fut pas vaine, puisque de nombreuses améliorations sont au rendez-vous:

  • Quelques 150 bugs fixés, environs 250 nouveaux tests unitaires
  • Une amélioration substantielle de la navigation et du core de la librairie
  • Un support de première classe pour de nouveaux browsers mobiles: Firefox Mobile (Fennec), Opera Mobile / Mini. Un support de première classe est également proche pour les plateformes Windows Phone 7 et Nokia.
  • Un support amélioré des browsers des plateformes iOS, Android, BlackBerry 6, Palm WebOS, et de nose browsers de bureau.
  • La prise en charge d’un date picker, non packagé dans la version. La prise en charge de nouveaux composants devrait arriver dans les prochaines versions (Progress Bar, Spinner, Time Picket)
  • La prise en charge du clavier a été améliorée et permet de mieux simuler un comportement natif au sein du navigateur.
  • De très nombreuses autres améliorations ont été intégrées à cette version. Une liste exhaustive peut être trouvée sur le blog de jQuery Mobile.

Ce qu’il faut retenir également, c’est l’annonce d’une bêta dans le mois qui va suivre, puis la sortie de la release 1.0 dans la foulée. Les objectifs fixés sont d’améliorer les performances générales de la librairie,
d’améliorer l’expérience utilisateur et la réactivité, et de fournir un support à un nombre plus important de browsers et plateformes mobiles. Bien que le sujet ne soit pas vraiment abordé dans le billet de l’annonce de cette sortie, on devrait également voir dans un avenir proche, une meilleure prise en charge de nos chères tablettes: iPad, PlayBook, et compagnie (après la sortie de la 1.0 ?).

Bien que l’annonce de cette release soit réjouissante pour le monde des développeurs mobiles, il n’en reste pas moins vrai que le niveau de performance souffre encore fortement la comparaison avec les applications natives (Gestion de liste), et la gestion de la navigation entre les différents écrans présente encore quelques dysfonctionnements. Il n’y a pas de doute que ce type de défauts seront rapidement gommés avec la sortie des prochaines versions.

Vous pouvez retrouvez ces informations sur le site de jQuery Mobile, leur blog et les suivre sur twitter via le compte: @jquerymobile.

ExtJS, une API de RIA sérieuse?

Le framework ExtJS, est une librairie JavaScript destinée à la création d’interfaces utilisateur dont le résultat visuel est assez proche de celui d’Apollo. Ce framework présente l’avantage de ne reposer que sur des technologies standard W3C, donc nul besoin de runtime flash ou java. Cette librairie est sortie récemment en version 2 et semble très bien finie.

Un petit tour sur le site de l’éditeur vaut bien mieux qu’un long discours, je vous invite donc à aller y faire un tour :

Cette librairie est d’autant plus intéressante qu’elle propose une licence LGPL v3, ce qui facilite son inclusion dans de nombreux projets.

Je ne connais pas assez ce type de librairies, mais il se pose à mon avis le problème du référencement du contenu d’applications exploitant ce type de technologies, attention donc à l’utilisation que vous souhaitez en faire.

A mon avis cette librairiea un grand avenir, c’est à mon avis la meilleur librairie de RIA JavaScript à l’heure actuelle.

extjs.JPG

Parmis les autres librairies JavaScript incontournables du momenton notera également JQuery, Prototype ou bien encore Scriptaculous.

Parlons un peu de Ruby

S’il est un buzz word qui excite tous les développeurs web java aujourd’hui, c’est bien le terme « Ruby On Rails » … Tous le monde en a entendu parlé comme LE framework à la mode qui va renvoyer Java au rang de dinausore au même titre que le COBOL. Pour ma part, je ne suis pas du tout en accord avec cette mode (ou vague, comme bon vous semble), et préfère les valeurs sures. Pour moi, les deux Frameworks et langages s’adressetn à des personnes et besoins différents, et personne ne ratera le train en choississant de ne pas se mettre à RoR.

Le blog Cardsharp on Software exprime parfaitement mon point de vue quand à cette mode :D .

Bref, si vous voulez mon avis, Java ne s’est jamais aussi bien porté qu’aujourd’hui et a de beaux jours devant lui. Je me souviens bien de l’arivée de PHP qui devait tout remplacer sur le web… Au final, chacun a trouvé sa place.