Revue de Presse Xebia

Revue de Presse Xebia
La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.

Actualité éditeurs / SSII

RIA

Le coin de la technique

Actualité éditeurs / SSII

Java EE 6, Glassfish v3 et NetBeans 6.8 dans les bacs

C’est la fin de longs mois d’attente, Sun nous livre finalement sa version 6 de la plateforme Java EE dont nous parlons depuis déjà longtemps sur le blog. Comme promis, c’est GlassFish v3 qui sert d’implémentation de référence à JavaEE 6. Le tout est fourni prêt à l’emploi : le SDK, l’implémentation serveur et l’IDE compatible. Vous pouvez donc d’ores et déjà essayer les EJB lite, les Servlet 3.0, la validation de Bean, l’injection de dépendance et bien sûr, la toute nouvelle JSF 2 « tant attendue ».
Voilà un beau cadeau de Noël que Sun nous offre, d’autant que la sortie de GlassFish v3 s’accompagne des plugins adéquats pour Eclipse et IntelliJ. Nous souhaitons longue vie et grand succès à cette nouvelle plateforme JavaEE.
Pour plus d’information sur le sujet:

Terracota et Quartz : un premier produit disponible.

Un peu moins d’un mois après le rachat de Quartz par Terracota, l’éditeur met en application son acquisition, en proposant Terracotta Quartz EX, un Job Store pour Quartz. Cette nouveauté permet de développer une plate forme de gestion de charge et de distribution des traitements basée sur une gestion des jobs en mémoire.
Pour ceux qui utilisaient Quartz de manière non clusterisée, une nouvelle version de Quartz permet d’utiliser une instance de serveur Terracota comme JobStore. Cela procure, automatiquement, à la fois une solution de persistance et de haute disponibilité pour la programmation des jobs. Cette implémentation repose sur le lock manager et la plate forme haute-dispo de Terracotta (et ne nécessite donc pas de base de données).
Pour ceux qui utilisaient déjà Quartz de manière clusterisée, à l’aide d’une base de données centrale, le nouveau Terracotta Job Store permet de continuer à utiliser le mode clusterisé, sans l’overhead dû à la base de données.

A n’en pas douter, comme pour EHCache, aquis il y a quelques temps déjà, Terracotta va rapidement proposer de nouvelles applications permettant de profiter au mieux des interactions possibles entre un scheduler et une plate-forme clusterisée.

Au passage, Quartz a subi un lifting afin que le framework respecte au mieux les normes Maven et s’intègre plus facile à Hudson.

Via infoQ

RIA

GWT 2.0 est (enfin) là !

L’une des sensations de la semaine dernière n’est autre que la sortie en release finale de GWT en version 2.0, quelques mois seulement après la mise à jour 1.7 qui ne faisait que corriger GWT pour les navigateurs récents.

Nous avons déjà bien couvert le sujet dans nos précédentes revues de presse, que ce soit pour la Milestone 1 ou la Release Candidate 1. Rien de nouveau donc si vous nous suivez régulièrement. On retrouve ainsi le development mode, le code splitting, l’intégration HTMLUnit, l’UIBinder, le RunAsync et bien d’autres. Le détail complet des différentes nouveautés se trouve sur cette page.

A noter aussi l’arrivée avec GWT 2.0 de Speed Tracer, un outil vous permettant d’analyser votre application et ainsi de repérer d’éventuels problèmes de performances.
Le plugin Eclipse a lui aussi été mis à jour et possède désormais de nouvelles fonctionnalités spécifiques à GWT 2.0, comme le support d’UiBinder et de ClientBundle.

Concernant la migration, les retours (comme celui-ci) sont plutôt encourageants et laissent présager une migration sans trop de difficultés. Les gains en performance se situent, comme on pouvait s’y attendre, au niveau du development mode et de son plugin pour débuguer directement dans le navigateur (ce bon vieux Hosted Mode ne va décidément pas me manquer). Même au niveau des librairies tierces, il n’y a pas de grosses incompatibilités remontées par l’auteur.

La section téléchargement se trouve ici.

Sortie de la release de FlexPMD 1.0

Une bonne nouvelle cette semaine pour les développeurs Flex : la sortie de FlexPMD, FlexCPD et FlexMetrics en release pour contrôler votre code. Voyons un peu plus en détail ces différents outils :

  • FlexPMD

Nous vous en parlions en septembre, FlexPMD fournit maintenant des fonctionnalités supplémentaires :

Le rapport peut être généré en HTML ou XML. Son rapport au format XML est un standard pouvant être exploité par tout intépréteur PMD comme le plugin d’Hudson.

  • FlexCPD (Copy & and Paste Detector)
    • FlexCPD permet comme son nom l’indique de détecter les duplications de code. Basé sur le moteur de JavaCPD, il peut être appelé en ligne de commande par une tâche Ant ou avec Maven. Les résultats sont exploitables dans Hudson également grâce au plugin DRY.
  • FlexMetrics
    • FlexMetrics permet d’avoir des métriques sur votre code Flex. Comme FlexCPD, il peut être appelé en ligne de commande, avec Ant ou Maven. Pour interpréter les résultats de l’outil, il est possible d’utiliser le plugin JavaNCSS.

Des outils intéressants donc, pour ajouter vos projets Flex dans vos outils d’intégration continue.

Le coin de la technique

Le projet Lambda apparaît au sein d’OpenJDK

Mark Reinhold annonce la création d’un nouveau sous-projet au sein d’OpenJDK : le Projet Lambda. Son but est d’apporter une implémentation des closures pour le JDK 7. Dans la mesure où il est prévu que cette fonctionnalité soit implémentée dans un premier temps pour être spécifiée par la suite, il sera particulièrement intéressant de suivre l’évolution de ce projet dans les prochains mois afin de découvrir à quoi pourraient ressembler les closures dans la prochaine version de Java.

Un premier document de travail a été mis à disposition. Il présente de manière non formelle la proposition pour l’implémentation des closures qui est retenue pour le moment. Cette proposition se base sur les trois principales bases de travail qui s’étaient dégagées lors des débats précédents, à savoir la BGGA, la CICE et la FCM. Elle met en avant principalement :

  • La syntaxe retenue pour la définition de fonctions anonymes qui se base sur le caractère #, ainsi #()(42) définit une fonction retournant toujours 42.
  • La définition d’un type Java pour ces fonctions. Ainsi la fonction #()(42) prise en exemple précédemment a pour type #int().
  • Les fonctions anonymes peuvent être converties automatiquement lorsqu’elle sont passées en argument d’une méthode attendant une instance d’une classe anonyme. En clair, il sera possible de créer une nouvelle thread avec new Thread(#() { ...some code... } ) plutôt que de fournir au constructeur une classe anonyme implémentant Runnable pour définir la méthode run(). Cette possibilité permettra donc aux closures d’être utilisées directement dans les APIs existantes !
  • Dans certaines conditions, les closures sont à même d’utiliser les variables accessibles dans le contexte dans lequel elles sont définies.
  • Le mot clé this peut être utilisé si la closure est déclarée depuis une méthode d’instance, il référence alors l’instance à laquelle est attachée la méthode concernée.

Enfin, pour faciliter les évolutions des APIs existantes que pourraient justifier ces nouvelles possibilités du langage, la notion de méthodes d’extensions est introduite. Il s’agit de permettre la définition de méthodes au sein des interfaces dont l’implémentation par défaut serait une méthode statique indiquée en argument.

Pour plus de détails sur cette proposition, n’hésitez pas à lire le document de travail, volontairement très didactique, du projet Lambda.

Nouvelle version du meilleur IDE Java du monde…

… en tout cas, c’est une des accroches d’IntelliJ IDEA :-)
JetBrains continue donc sur sa lancée d’évolution majeure de ses produits.
Ainsi, après TeamCity 5.0, c’est au tour d’IntelliJ IDEA d’évoluer et de passer en version 9.

Les nouveautés sont très nombreuses. Les points importants retenus par JetBrains sont :

  • la rapidité de l’IDE,
  • l’amélioration de la lecture du code (meilleure coloration syntaxique…),
  • meilleure UI, une structure de projet plus flexible,
  • premier support Java 7 avec JSR308, support de JEE 6,
  • meilleur support de Groovy,
  • plugin de développement Android,
  • support d’autres frameworks (Tapestry, GAE, GWT 1.7 et 2.0, Spring 3.0 et Spring Security 2.0 et 3.0),
  • meilleur support de Maven,
  • plusieurs nouvelles fonctionnalités pour le développement d’applications Flex. (Air, FlexUnit…).

Deux éditions nous sont proposées en téléchargement (avec différentes licences) :

  • l’édition ultimate : complète, gratuite pour les licences Classroom et Open Source Project ;
  • l’édition community : produit sous licence Apache 2.0 proposant en standard l’IDE pour Java et Groovy (et quelques plugins gratuits).

Et même quelques Friends of Eclipse vous encouragent à le télécharger :D Comme on dit : l’essayer, c’est l’adopter !

10 ans d’attente et ECMAScript 5

ECMAScript, langage de programmation de type script implémenté entre autres par Javascript et ActionScript, passe en version 5 (via InfoQ).
La version 4 ayant été abandonnée, il faut remonter à 1999 pour voir la dernière version d’ECMAScript et sa version 3… Ce fût long, mais au moins il est là !

Comme nous le rappelle Alex Blewitt, celle-ci essayera de s’imposer là où la version 4 (qui a d’ailleurs été abandonnée) a échoué, à savoir être pleinement supportée par les navigateurs actuels. En effet, nos sites web et nos outils évoluent mais pas la spécification ECMA. Côté application, c’est une nouvelle fois Google Wave (en GWT donc Javascript) qui est cité en exemple pour son côté collaboratif live. Et pour les outils, l’auteur cite Speed Tracer (inclus dans la release GWT 2.0) qui va nous permettre de détecter et de fixer certains problèmes de performances sur nos applications.

On notera la rétrocompatibilité avec les anciennes applications ECMAScript grâce au code suivant :

"use strict;"

Ce code indique au runtime ECMAScript qu’il faut être compatible avec la version 5 d’ECMAScript et ses différentes nouveautés. Il sera possible d’être compatible sur tout le document ou seulement sur une partie de code. Concernant les anciens runtimes, le strict sera compris mais ne changera pas leur comportement.

Concernant les nouveautés de la spécification, on retiendra :

  • déclaration de variable obligatoire : terminé les i=3, il faudra obligatoirement passer par var i=3 ;
  • eval devient un mot clé réservé ;
  • l’opérateur with disparaît ;
  • les fonctions et objets ne peuvent plus avoir des arguments/propriétés doubles avec le même nom ;
  • nouvel objet JSON et mécanisme de parsing désormais standard ;
  • méthode trim pour l’objet String ;
  • méthodes indexOf, map, filter and reduce pour l’objet Array;
  • nombreuses nouvelles méthodes sur Object dont seal (empêche l’ajout/la suppression de propriétés), freeze (propriétés read-only), keys (liste les propriétés de l’objet) ou getPrototypeof (prototype de l’objet).

Beaucoup de bonnes nouvelles pour les développeurs donc. La rétrocompatibilité permettra une mise en place progressive sur notre code, soit par bloc soit directement sur toute la page. Côté API, on avait déjà l’habitude d’utiliser ces fonctions par l’intermédiaire de librairies comme jQuery mais cette standardisation est la bienvenue.

Nouvelle Milestone d’Eclipse Helios

Eclipse 3.6, nom de code Helios, vient de sortir en version Milestone 4. De nouvelles fonctionnalités sont apparues avec ce build, comme :

  • la possibilité d’éditer plusieurs quick fix en même temps
  • les « virtual folders » qui permettent de créer des regroupements de fichiers au niveau du projet pour une navigation plus facile
  • amélioration du plugin JUnit

Pour plus de détails, voici la liste des améliorations et l’annonce officielle d’EclipseSource.

Spring Surf – le studio de composition de pages pour Spring MVC

Spring s’intéresse à présent à la gestion documentaire, grâce à une collaboration avec Alfresco, le système de GED Open Source Java, qui a démarré le projet Surf. A l’origine, l’objectif était de proposer aux utilisateurs d’Alfresco une plateforme pour développer leurs propres applications connectées à la GED.

Pour profiter des facilités de développement d’applications que propose Spring avec Spring Roo et Spring Tool Suite, Alfresco commence à migrer son projet Surf dans l’incubator Spring Extension.

Pour le moment, les principales informations se trouvent sur le wiki d’Alfresco, la page d’accueil de Spring Surf étant encore très succincte.

Pour démarrer, seuls l’addon Spring Roo et un QuickStart sont disponibles chez Spring (pas encore de tutorial). Et pour mieux connaitre ce que deviendra cette extension, l’application Alfresco Share, basée sur la plateforme Surf donne un bon nombre de pistes comme :

  • Création d’applications uniquement par scripting (Freemarker, Groovy, PHP, JavaScript)
  • Ajout de pages à une application basée sur le framework Spring MVC
  • Développement avec un modèle extensible de templates, composants, styles, etc.

Un commentaire

Laisser un commentaire