La revue de presse hebdomadaire des écosystèmes Java/JEE proposée par Xebia.
Actualité éditeurs / SSII
- Intégration de Slick (Scala Language-Integrated Connection Kit) dans la stack Typesafe (par Benoît Lemoine)
Web
- Sortie de jQuery 1.8 (par Benoît Lemoine)
- Sortie de l’outil PhoneGap Emulation powered by Ripple (par Alexis Kinsella)
Le coin de la technique
Actualité éditeurs / SSII
Intégration de Slick (Scala Language-Integrated Connection Kit) dans la stack Typesafe
Typesafe annonce via son blog l’intégration de Slick dans sa stack.
Slick est une librairie basée sur ScalaQuery destinée à simplifier l’accès aux bases de données SQL et NoSQL.
Slick permet d’accéder aux données stockées en base comme s’il s’agissait de collection Scala « normale ». De cette façon, en plus d’une API de collection très fournie, Slick permet de profiter du typage fort dans les requêtes.
Malheureusement, Slick n’est disponible qu’à partir de la version 2.10 de Scala, l’intégration de Slick dans Play devra donc attendre la version 2.1 du célèbre framework.
Web
Sortie de jQuery 1.8
Jquery 1.8 est sortie, avec son lot de nouveautés :
- une refonte complète de Sizzle, le moteur de sélecteur CSS de jQuery. Cette refonte s’accompagne d’une augmentation sensible des performances ;
- l’ajout de callback de progression dans les « Promises » renvoyées par les animations jQuery. Celles-ci permettront ainsi d’effectuer des actions au fur et à mesure qu’une animation se déroule. Un exemple se trouve ici.
- l’ajout de la gestion automatique des préfixes navigateurs pour les propriétés css le nécessitant. $(‘#monId’).css(‘border-radius’,’5px’) générera donc tout seul les propriétés -moz-border-radius, -webkit-border-radius, -o-border-radius, -ms-border-radius, etc.
- De nombreuses corrections de bugs.
Par ailleurs, une des grandes nouveautés de cette version est la modularisation de la librairie. Nul besoin d’embarquer toutes les fonctionnalités si vous n’en avez pas l’usage. Vous pourrez maintenant construire votre version de jQuery ne contenant que, par exemple, les fonctionnalités ajax et css. Malheureusement, il n’y a pas encore de façon « simple » de réaliser ce build spécifique. Pour cela, il faudra compiler sa version directement depuis les sources. Les instructions sont disponibles sur le dépôt github de jQuery.
Attention cependant quelques fonctionnalités, pour la plupart non documentées, ont été retirées de cette version, donc soyez vigilants et lisez avec attention le changelog avant de migrer vers cette nouvelle version.
Sortie de l’outil PhoneGap Emulation powered by Ripple
Si vous avez déjà expérimenté le développement web mobile avec PhoneGap vous vous êtes sûrement demandé comment débugger les fonctionnalités fournies par l’outil telles que la géolocalisation, l’accéléromètre ou bien encore l’accès aux informations de connectivité. Jusqu’à présent peu de solutions étaient à disposition, et le débuggage en était que plus compliqué.
Nitobi (racheté par Adobe) fournit depuis quelques temps maintenant une solution SaaS de build de vos applications PhoneGap, permettant d’éviter d’avoir à installer les différents environnements de développement, tels que le SDK Android accompagné d’Eclipse ou bien encore l’IDE Xcode d’Apple, pour construire vos applications. Dommage, me direz-vous, si vous devez les installer pour débugger vos applications.
Il y a déjà plus d’un an le plugin Ripple Mission Control pour Chrome proposait de répondre à cette problématique. Malheureusement la société à l’origine de ce plugin fût rachetée par RIM (Research In Motion), et le plugin fut intégré au SDK Blackberry avec la menace de devenir un projet zombie pour les autres plateformes.
TinyHippos, la société à l’origine de l’outil avait même envoyé une communication le 5 janvier dernier pour annoncer la fin de l’outil en tant que tel pour fournir en lieu et place un outil pleinement intégré à la frontière entre navigateur et debugger mobile à l’image de iWebInspector, mais uniquement disponible depuis le SDK de RIM.
Cette communication indiquait même que le plugin serait retiré le 29 février 2012 du Chrome web store. Heureusement, il semble qu’à ce jour il n’en soit rien. Alors que le projet semblait être plongé dans une profonde léthargie, Adobe, à travers l’équipe PhoneGap, a décidé de proposer un outil basé dessus appelé PhoneGap Emulation. Les pré-requis pour utiliser l’outil sont bien entendu Chrome et le plugin Ripple Mission Control. Une fois installé, si vous vous rendez sur la page d’accueil de PhoneGap Emulation, un formulaire vous proposera de lancer Ripple à l’adresse indiquée par vos soins. Il est notamment possible d’indiquer la plateforme à émuler.
Bien que l’outil soit très basique, et que l’essentiel de la valeur ajoutée repose sur l’émulateur Ripple, PhoneGap Emulation a le mérite de faire connaître ce plugin Chrome bien pratique pour le débuggage d’applications mobiles. Il est intéressant de voir qu’Adobe pousse fort sur le web mobile et propose une suite d’outils cohérente : Usine logicielle en ligne, Débugger, plateforme web mobile hybride PhoneGap, ainsi qu’Adobe Shadow.
Adobe pourrait bien finalement réussir dans le domaine de la mobilité en embrassant les technologies web, là où elle a échoué avec Flash, et ce grâce au rachat judicieux de la petite société Nitobi. Adobe souhaite fournir un ensemble de services et d’outils autour du développement web mobile comme le montre les différentes intégrations réalisées entre PhoneGap, jQueryMobile et différents outils Adobe tels que Dreamweaver.
De nombreux outils de débogage à destination des plateformes web mobiles fleurissent actuellement ; la fondation Mozilla, a annoncé le sien pas plus tard que jeudi dernier. Il permet de connecter le nouveau debugger de Firefox Desktop avec Firefox on Android, mais cet outil n’est pas le seul, puisqu’Opéra a été précurseur sur le sujet.
Pour la petite histoire l’outil web PhoneGap Emulation est basé sur Node.js, ainsi que les frameworks Javascript Express et Jade. PhoneGap Emulation est disponible sur GitHub. Preuve s’il en est, encore une fois, que Javascript est aujourd’hui omniprésent et incontournable.
Le coin de la technique
Sortie de Guava 13
La semaine dernière, Guava est sorti en version 13. La liste des changements est présentée dans la release note.
Il est à noter l’apparition de deux nouvelles méthodes sur l’API FluentIterable, toSortedImmutableList et transformAndConcat. Ces deux méthodes viennent enrichir l’approche fonctionnelle en Java de Guava. Un pas de plus donc vers l’immutabilité avec toSortedImmutableList, tandis que transformAndConcat est l’équivalent du flatMap de Scala.
Voici un exemple de son utilisation avec du code :
@Test public void devrait_extraire_les_voyelles() { Collection<String> motsDeTest = asList("Test", "de", "Guava", "13"); assertThat(extraitToutLesCaracters(motsDeTest)) .hasSize(5) .containsOnly('e', 'e', 'u', 'a', 'a'); } public Iterable<Character> extraitToutLesCaracters(Iterable<String> mots) { return FluentIterable .from(mots) .transformAndConcat(extraitCaracteres()) .filter(estUneVoyelle()) .toImmutableList(); } public static Predicate<Character> estUneVoyelle() { return new Predicate<Character>() { private final Set<Character> voyelles = of('a', 'e', 'i', 'o', 'u', 'y'); @Override public boolean apply(Character c) { return voyelles.contains(c); } }; } public static Function<String, Iterable<Character>> extraitCaracteres() { return new Function<String, Iterable<Character>>() { @Override public Iterable<Character> apply(String input) { return charactersOf(input); } }; }