Il y a 11 ans -

Temps de lecture 4 minutes

Revue de Presse Xebia

Revue de Presse Xebia
La revue de presse hebdomadaire des écosystèmes Java/JEE proposée par Xebia.

Actualité éditeurs / SSII

Le coin de la technique

Evénements de notre communauté en France et à l’étranger

Actualité éditeurs / SSII

Sortie de JMeter en version 2.6

Pour sa première version en tant que projet Top Level de Apache, JMeter 2.6 apporte de nombreuses nouveautés, dont la liste exhaustive est disponible directement sur la page du projet.

Le célèbre logiciel de test de charge écrit en Java se voit doter, entre autres, d’une toolbar, d’un nouveau système de recherche par mots-clés, ou encore d’un sampler HTTP Raw facilitant le test d’applications GWT ou SOAP. Cette nouvelle version corrige par ailleurs une vingtaine de bugs et ajoute une intégration plus prononcée avec l’OS en gérant les copier/coller et les glisser/déposer de fichiers.

Eclipse 3.8 M5

La Milestone M5 de Eclipse 3.8 (Juno) a été livrée la semaine dernière, l’occasion pour nous de faire un point sur les principales fonctionnalités promises par la future version d’Eclipse :

  • conversion facile des boucles « for each » vers un autre type de boucle (avec index ou avec iterateur, selon l’objet sur lequel on itère) via l’assistant contextuel ;
  • la détection de fuites mémoire potentielles ou avérées dans le code ;
  • la détection de violations des annotations @Nullable et @NonNull ;
  • l’inclusion des champs de classe dans l’analyse des variables potentiellement nulles lors de leur utilisation ;
  • une barre d’outils simplifiée pour le mode debug et une amélioration des performances des vues associées ;
  • l’ajout des annotations de paramètres dans l’explorateur de Javadoc ;
  • des évolutions et options cosmétiques ;
  • de nombreuses évolutions à l’attention des développeurs de plugins.

Cette version intégrera bien évidemment le support de Java 7. Pour rappel, ce support a déjà été intégré dans la version 3.7.1 (voir la liste de ce qui est supporté).

A noter aussi que depuis quelques années se prépare la nouvelle architecture d’Eclipse, qui aura beaucoup d’impact pour les développeurs travaillant sur la plateforme, et qui devrait se traduire notamment par des évolutions de l’interface pour les utilisateurs. Cette nouvelle version majeure contiendra également les nouveautés listées précédemment dans sa version 4.2.

Le coin de la technique

mutability-detector

Ce week-end s’est déroulé à Bruxelles le Free and Open source Software Developers’ European Meeting (FOSDEM). Bien que n’y étant pas nous-mêmes, certains tweets (@Piwai pour l’exemple) ont porté à notre attention l’outil mutability-detector qui y était présenté.

Cette librairie Java se propose de détecter si nos classes sont immuables ou non, avec un certain indice de confiance : IMMUTABLE (totalement immuable), EFFECTIVELY_IMMUTABLE (immuable à condition de rester maître de l’utilisation de la classe, par exemple si elle peut être étendue), NOT_IMMUTABLE (absolument pas immuable). Pour ce faire, elle applique les règles formalisées par Josh Bloch dans Effective Java.

L’outil propose deux modes de fonctionnement :

  • analyse statique :
    java -jar MutabilityDetector.jar -classpath path/to/MyCodebase
    
  • ou utilisation au runtime, dans un test unitaire par exemple :
    import static org.mutabilitydetector.unittesting.AllowedReason.*;
    import static org.mutabilitydetector.unittesting.MutabilityAssert.*;
    import static org.mutabilitydetector.unittesting.MutabilityMatchers.*;
    
    @Test public void checkMyClassIsImmutable() {
      assertImmutable(MyClass.class);
    }
    
    // on précise ici que l'on veut pouvoir sous-classer la classe en en comprenant les implications
    @Test public void checkMyClassIsImmutable() {
      assertInstancesOf(AbstractIntHolder.class, areImmutable(), allowingForSubclassing());
    }
    

Un exemple de sortie :

org.mutabilitydetector.unittesting.MutabilityAssertionError:
Expected: MyClass to be IMMUTABLE
  but: MyClass is actually NOT_IMMUTABLE
  Reasons:
    Can be subclassed, therefore parameters declared to be this type could be mutable subclasses at runtime. [Class: MyClass]
    Field is not final, if shared across threads the Java Memory Model will not guarantee it is initialised before it is read. [Field: name, Class: MyClass]
    Field [name] can be reassigned within method [setName] [Class: MyClass]
    Field can have a mutable type (java.lang.String) assigned to it. [Field: name, Class: MyClass]

mutability-detector se présente donc comme un outil intéressant pour se prémunir de mauvaises surprises dans une base de code pas très bien maîtrisée qui reposerait sur de la programmation concurrente. Il s’agit aussi d’un moyen comme un autre d’apprendre les règles de l’immutabilité.

On notera tout de même que l’outil n’est – des dires de son auteur – pas encore prêt pour un usage intensif. A surveiller donc !

Evénements de notre communauté en France et à l’étranger

Podcasts Java et… Clojure

Les podcasts sont un médium unique pour rester en contact avec la communauté. Les javaïstes connaîtront bien sûr les Cast Codeurs (en français) ou encore Java Posse (en anglais). Mais la JVM ne se limite pas à Java. Et les clojuriens commencent également à avoir leurs podcasts : Mostly lazy ou encore Think relevance. On y parle entre autres d’avout, permettant d’utiliser le modèle d’état de Clojure dans un environnement distribué mais aussi de clojureScript, un GWT à la Clojure et encore d’Overtone, permettant de réutiliser vos compétences en programmation pour créer de la musique.

Commentaire

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nous recrutons

Être un Sapient, c'est faire partie d'un groupe de passionnés ; C'est l'opportunité de travailler et de partager avec des pairs parmi les plus talentueux.