La revue de presse hebdomadaire des écosystèmes Java/JEE proposée par Xebia.
Actualité éditeurs / SSII
- Intellij 11.1 (Par Jean Helou)
SOA
Le coin de la technique
- Parsing : le problème que l’on croit résolu (Par Jean Helou)
- Sortie de l’OpenJDK 8 avec les lambda expressions pour MacOSX (Par François Sarradin)
Evénements de notre communauté en France et à l’étranger
Actualité éditeurs / SSII
Intellij 11.1
La semaine dernière, jetbrain a annoncé la version 11.1 de son célèbre IDE IntelliJ. Et, très vite, la version 11.1.1 contenant correctif pour un bug critique de SVNKit.
Après ce correctif, les nouveautés apportées par cette version sont :
- Support Subversion (SVN) 1.7.
- Nouvelle UI pour les branches Git et la synchronisation des branche dans les projets multi-racine.
- Intégration de plusieurs nouveaux outils dont Android Lint.
- Amélioratin de l’intégration avec Gradle.
- Support pour EcmaScript 6 – Harmony (Ultimate).
- Mise à jour des dialects SQL Sybase and DB2 (Ultimate).
- Support pour Hibernate 4.0 (Ultimate).
- Amélioration du setup des projets Flex (Ultimate).
- Améliorations de Performance.
- Tuning de l’interface utilisateur.
Cette version 11.1 vous permettra aussi d’utiliser la dernière version du plugin scala qui améliore nombre de détails dans le support des tests, de la scaladoc, dans le fonctionnement de la complétion.
SOA
Swagger, la documentation pour services web REST
Vous publiez des services REST et vous ne trouvez pas un bon formalise pour les exposer visuellement? Swagger vous a entendu et propose une API pour rendre visible l’ensemble de vos URL.
Vous pouvez ainsi avoir sous les yeux la cartographie de votre service, avec l’ensemble des URLs, les verbes HTTP et les arguments utilisés. Il peut même afficher plusieurs versions de votre API. On retrouve notamment la documentation des codes erreurs HTTP gérés par le serveur, ce qui peut être d’une grande aide en phase de développement, et éviter la prolifération des terribles HTTP 500.
On retrouve plusieurs parties dans le framework :
- Swagger UI : ensemble de contenu HTML statique pour l’aspect visuel.
- Swagger Core : librairie serveur pour la génération du document modèle de vos API (fonctionne avec Java, Scala et node.js).
- Swagger CodeGen : permet de générer le code client d’utilisation de votre service.
Pour la génération du modèle depuis votre code Java, l’outil se base principalement sur les annotations JAX-RS pour les méthodes et les paths. Des annotations personnalisées comme @Api, @ApiErrors, @ApiParam permettent de documenter ces métadonnées des services.
Les services REST sont toujours en plein essor. On remarque qu’entre un usage XML pour une utilisation « serveur » et JSON pour un client AJAX, les besoins de spécifications ne sont pas les mêmes. Swagger préconise d’ailleurs l’utilisation de suffixes d’URL pour chaque représentation (.json ou .xml) plutôt que l’entete HTTP Accept.
On choisit souvent JSON pour sa lisibilité simplifiée et son intégration avec les clients Javascript. On utilisera plus une représentation XML pour un usage « serveur » avec des langages compilés, notamment pour valider les données en entrée.
Sans arriver à faire un document comme le WSDL, peut on trouver une représentation commune pour les services REST?
Swagger tente d’apporter une réponse pour le moins intéressante, utile, et esthétiquement réussie.
Le coin de la technique
Parsing : le problème que l’on croit résolu
Lambda the ultimate, un blog spécialisé sur la conception des langages de programmation, reprend un article de Laurence Tratt sur les problèmes de parsing. L’analyse grammaticale des langages de programmation est un sujet très connu qui semble être résolu. Les théories ont été poussées très loin, les implémentations existent et servent au jour le jour. Cependant avec l’émergence et la mise en oeuvre de plus en plus fréquente de DSLs, de nouveaux champs d’étude émergent dans ce domaine, en particulier celui abordé par l’article : La combinaison de langages.
L’article commence par faire un rapide tour d’horizon des théories actuelles et de leur histoire avant de présenter les principaux problèmes rencontrés en composition de grammaire: la composition elle-même, la séparation des jetons syntaxiques et enfin la résolution de l’ambiguité. Pour chaque problème il explique quelle famille de grammaire est la moins impactée. Autre fait intéressant, c’est le nombre de références décrites dans cet article. En effet, il met en évidence les différentes familles de grammaire et les discussions qui existent actuellement autour du problème qu’il soulève. L’auteur ne se considère pas comme un expert et l’article reste abordable par le plus grand nombre.
Au delà de l’article qui date de 2011, la discussion sur lambda the ultimate contient de nouveaux pointeurs et des références mises à jour. Si vous envisagez de créer un DSL d’ici peu, vous trouverez dans cet article et sa discussion des liens utiles à tout concepteur de langage.
Sortie de l’OpenJDK 8 avec les lambda expressions pour MacOSX
OpenJDK 8 avec les lambda expressions est disponible depuis l’année dernière pour les plateformes Linux, Windows, SunOS et Solaris à cette adresse : http://jdk8.java.net/lambda/. Il est disponible aussi depuis quelques temps pour MacOSX à cette adresse : http://code.google.com/p/openjdk-osx-build/wiki/OpenJDK8JDK8. Malheureusement, cette version pour Mac ne permet pas de bénéficier de l’évolution développée dans le cadre de la JSR 335: Lambda Expressions for the JavaTM Programming Language. C’est désormais corrigé : il est possible maintenant de jouer des lambda expressions en Java, pour le plus grand plaisir des amateurs de sensations fonctionnelles. Pour en bénéficier, tout est décrit ici : http://code.google.com/p/openjdk-osx-build/wiki/OPENJDK8LAMBDA.
Evénements de notre communauté en France et à l’étranger
Petit tour des Poissons d’Avril
- JEP 154: Remove Serialization de Alan Bateman.
- Gmail Tap : le morse revient à la mode.
- Google Map Quest : une version Civilization 8-bits.
- Gods as Topological Invariants de Daniel Schoch.