Vous aimez ce que vous lisez sur ce blog ?
Envie d'aller plus loin avec véritable formation d'expertise en Java ?
Venez suivre ma formation Masterclasse Expertise Java !

"Même un développeur experimenté a besoin de continuer à apprendre. Et dans cette formation... j'ai appris beaucoup !" - A.G., Java Champion

Sessions intra-entreprises sur demande : contact[at]mokatech.net.
Inscrivez-vous vite !

The Coder's Breakfast à Devoxx-fr 2012 : les slides !

Comme indiqué dans le précédent billet, j'ai eu l'honneur de présenter deux sessions à Devoxx-fr :

  • Un "quickie" (15mn) pour présenter Seren, ma librairie d'optimisation de sérialisation;
  • Une "conférence" (1h) avec Heinz Kabutz, sur le thème "Deadlock Victim".

Pour nos lecteurs qui n'auraient pas eu l'opportunité d'y assister, voici les slides correspondants.
De plus, la conférence a été intégralement filmée, vous pourrez donc la retrouver très bientôt sur la plateforme Parleys.

Bonne lecture !

Lire la suite...

Dernières nouvelles du front...

En raison d'une actualité personnelle un peu chargée, je n'ai rien posté depuis un mois, et je m'en excuse.
Voici donc quelques nouvelles du front.

Java Concurrency Specialist

J'ai récemment travaillé avec Heinz Kabutz sur la formation Java Concurrency Specialist. Comme son nom l'indique, elle est entièrement dédiée à la programmation concurrente en Java, et se base sur le livre de référence Java Concurrency In Practice. 4 jours de bonheur ! (prévoyez tout de même l'aspirine :)

La formation est d'ores et déjà disponible chez Zenika. Inscrivez-vous !

Introduction à la programmation concurrente

Toujours dans le domaine de la programmation concurrente, j'ai publié récemment deux articles exposant les bases de la programmation concurrente en Java :

  • Partie 1 : Exécuter des traitements en parallèle avec les Threads et l'ExecutorService
  • Partie 2 : Protéger les données avec les Moniteurs et les Locks

Bon, c'est sans doute un peu long pour une "introduction", mais toutes les bases sont là.
A faire lire à tous les développeurs amenés à approcher un thread de près ou de loin !

Devoxx-fr

Pour terminer, j'anime deux conférences à Devoxx-fr :

  • Un quickie (15mn) pour présenter SEREN, une librairie qui améliore les performances de sérialisation. C'est jeudi à 13h00.
  • Une conférence (1h) sur les deadlocks, co-animée avec Heinz Kabutz. C'est vendredi à 11h30.

Venez nombreux !

Setting final fields like a boss

I've been playing recently with final fields, while working on my serialization library, Seren. And I've found a surprising, funny thing about them. You wouldn't believe. It's astonishing ! (tease, tease)

Lire la suite...

Les specs de Java 7 disponibles

java.gifUn petit billet en forme de pense-bête, pour vous signaler la disponibilité de la Java Language Specification v7 (JLS7 pour les intimes ou les insomniaques). et de la JVM Specification v7.

On notera que ces JLS7 et JVMS7 font suite aux... JLS4 et JVMS3, ce qui ne laisse pas d'étonner, mais après tout, la numérotation de Java itself a gaillardement sauté quelques étapes entre la 1.4 et la 5.0... Les curieux pourront se reporter aux explications d'Alex Buckley sur le sujet.

Sondage : une conférence sur les Generics ?

Chers lecteurs et lectrices,

Je me demandais, comme ça, à tout hasard, voire même à brûle-pourpoint, si vous seriez intéressés par une conférence sur les types paramétrés en Java ("generics") ?

Ce n'est qu'une question hypothétique pour le moment, il faut que je voie si j'ai assez de matériel à présenter, et si j'arrive à le rendre suffisamment intéressant. Mais je suis curieux de savoir ce que vous en pensez.

D'un point de vue plus personnel, j'ai apprécié l'accueil chaleureux qui m'a été réservé aux différents JUGs quand je suis venu parler des Annotations. J'ai bien envie de renouveler l'expérience, alors je cherche un sujet intéressant à présenter.

Dites-moi ce que vous en pensez ? (voir la suite du billet pour voter)

Lire la suite...

Au coeur du JDK : java.io expliqué simplement

Je suis surpris par le nombre de développeurs qui s'avouent intimidés par le package java.io. Il est vrai qu'il contient beaucoup de classes, dont la plupart portent des noms très similaires, mais nous allons voir que son architecture est en réalité très simple.

Il suffit de comprendre deux concepts pour y voir tout de suite plus clair : le schéma en 4 quadrants, et le pattern Decorator. Le premier permet de déterminer à quoi sert une classe ; le second indique son rôle dans la chaîne de lecture ou d'écriture des données.

Suivez le guide !

Lire la suite...

Introducing Seren, the serialization speed enhancer

Seren (SERialization ENhancer) aims to enhance your classes so that they are much quicker to serialize.
It does so by instrumenting the classes at load-time to generate optimized writeObject / readObject methods, based on the best known practices (as seen in the JavaSpecialist Master Course).

The source code available on GitHub.
Feel free to take a look at it, any comment appreciated !


How does it work ?
Which classes should be enhanced is determined by a "filter", which is configured in the "seren.properties" configuration file (see below).
In each selected class, Seren will detect and optimize all non-static, non-transient fields. Also, final fields are not supported, because only the standart serialization system is allowed to re-set the value of final fields ; if you wish to serialize a class with final fields, please hide it from Seren.

How much faster will my objects be serialized ?
It entierely depends on the types of their fields. Numeric wrappers (Integer, Double...) and Strings are much faster (up to 3 times faster according to my – not necessarily accurate – benchmarks). Primitives are only as fast as usual.

Is there any risk / downside ?
There is absolutely no risk in testing Seren. As a Java Agent, it instruments your classes at load-time, and it totally transparent to your application. No need to modify any existing code either. Try it and measure the speed gain ; if it does not convince you, just remove the Java Agent option from the command line and you're done.

As for downsides, Seren provides a boost in serialization speed, but may generate slightly bigger serialized streams, so you sould not use it if you send big amounts of serialized data over a slow network. On the other hand, Seren works wonders for in-memory serialization (ex: EHCache make deep copies of your objects by serializing them to an in-memory byte array).

Lire la suite...

Si vous ou l'une de vos connaissances...

Nous avons tous, un jour ou l'autre, été contactés par un recruteur ou "chasseur de têtes". Personnellement, je reçois un ou deux mails ou appels téléphoniques par semaine, sans compter les messages sur les réseaux professionnels. J'en ai donc vu passer un certain nombre...

Certains sont sympas, ont lu le CV jusqu'au bout avant d'appeler (non, je ne suis pas encore indépendant), et proposent des postes correspondant à mon profil. J'ai ainsi laissé passer certaines opportunités intéressantes, étant déjà satisfait par mon poste actuel chez Zenika. Ce n'est pas toujours facile de faire le bon choix...

D'autres ont simplement besoin de remplir leur quota de spam quotidien pour prouver à leur direction qu'ils ont mis "tous les moyens en oeuvre" pour recruter la perle rare, ou se croient toujours au temps lointain où il suffisait de se rendre au marché aux esclaves pour trouver de la main-d'oeuvre bon marché et emplie de gratitude. Ceux-là détériorent malheureusement l'image de la profession.

Au fil du temps, j'en suis venu à établir une petite classification des annonces et de leurs expéditeurs. Notez bien que les catégories ne sont pas mutuellement exclusives.

Lire la suite...

Petit guide de programmation illustrée

Ce très court billet pour vous signaler l'existence de quelques sites de programmation à la fois très sérieux et fort sympathiquement illustrés.

Haskell

Un sur Haskell d'abord, mon langage du moment. Richement illustré sous Paint, on admirera la précision du tracé et l'harmonie des couleurs.
Learn you a Haskell for great good : http://learnyouahaskell.com/

Lisp

Un sur Lisp ensuite, comme quoi l'obsession parenthésique n'oblitère pas irrémédiablement le sens artistique :
Lisperati : http://lisperati.com/

A la réflexion, oubliez ce que j'ai dit sur Lisp et le sens artistique. Visez un peu, l'auteur du site a réalisé une vidéo pour promouvoir son livre, et quelque chose me dit qu'il l'a fait lui-même après consommation de champignons de contrebande :

Ruby

Pour finir, un site sur Ruby, parce qu'il n'y a pas que des langages utiles dans la vie (troll spotted). Et puis voyez, le temps d'exécution de ses programmes a laissé à l'auteur tout le champ nécessaire pour apprendre à dessiner correctement, comme quoi à quelque chose malheur est bon.
Why's (Poignant) Guide to Ruby : http://mislav.uniqpath.com/poignant-guide/book/


Allez je vous laisse, j'ai de la lecture !

FooBarQix with a twist

A l'occasion de Devoxx FR 2012, David Gageot (@dgageot) et Jean-Laurent de Morlhon (@morlhon) ont proposé un atelier consistant à coder "en live" une application complète sur deux jours - oui, comme Notch au Ludum Dare :)

Pour sélectionner les participants et constituer des binômes cohérents, ils ont organisé un petit concours basé sur le kata "FooBarQix". Toutes les explications sont données sur le site code-story.net.

Evidemment, l'exercice est assez simple. Ce qui le rend intéressant, c'est la créativité des solutions soumises : tout est permis !

Lire la suite...

- page 5 de 35 -