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...