Quelques patterns d'implémentation avec les enums java


Bien que les enums soient apparues en java 5, elles restent relativement méconnues. Voyons donc quelques patterns d'implémentation. On commence par quelques points techniques (warning: certains sont plus des curiosités qu'autre chose) puis on aborde le pattern le plus important et le plus sous-utilisés: les enums polymorphiques.

Lire la suite...

A la découverte du Framework Avatar


Le 24 Septembre, Oracle a ouvert les sources de son nouveau Framework Avatar sans faire de bruit. Ce Framework permet de développer des Single Page Applications HTML5. Aujourd'hui, Node.js est le second projet le plus populaire sur GitHub. Les frameworks javascript comme Angularjs deviennent de plus en plus populaire. C'est dans ce contexte que Oracle dévoile son framework pour rentrer dans la course au Javascript. Penchons nous sur celui-ci.

Lire la suite...

Intégrer ElasticSearch dans une application Java


Ca y est, c'est décidé, nous allons utiliser ElasticSearch comme moteur de recherche dans notre application Java. J'ai suivi la formation Zenika, j'ai installé mon premier cluster ElasticSearch et fait quelques gammes avec cURL. Bref tout est prêt, il n'y a plus qu'à l'intégrer dans notre application Java.

Cet article est issu d'un cas réel (aucun noeud ElasticSearch n'a été blessé durant le tournage), il présente les problématiques rencontrées et les solutions apportées.

Lire la suite...

JUG Summer Camp 2012, nous y étions !


Nous étions au JUG Summer Camp à la Rochelle il y a quelques jours. Le JUG Summer Camp a réussi en quelques années à s'imposer dans les grands événements qui comptent dans l'écosystème français, de par la qualité de son panel de présentations, mais aussi par son atmosphère à la fois détendue et professionnelle. Le JUG Summer Camp est organisé par Poitou-Charentes JUG, et sponsorisé par les sociétés Google et SERLI; un grand merci à elles pour ce très bon moment technologique!

Nous avons essayé de détailler quelques-unes des présentations, sans tout retranscrire. Nous espérons que cela vous donnera envie d'y participer l'année prochaine.

Lire la suite...

FindBugs, a static analysis tool (part 2/4)


In the previous article, you have learned some bases in static analysis and how it can be used to improve code quality. Today, I will present FindBugs, one of the most known static analyzers for Java.

FindBugs

Lire la suite...

Java 8 et les Lambda


La prochaine version de Java, prévue pour 2013, apportera le lot de nouveautés le plus important depuis Java 5 : expressions lambda, "public defender methods", références de fonctions...

Aujourd'hui, je vous propose de découvrir la nature, la syntaxe et les cas d'utilisation des expressions lambda (une forme de "closure"), ainsi que leur impact sur notre façon de coder.

Lire la suite...

Zenika à Devoxx-fr 2012 : les slides !


Comme indiqué dans mon 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...

Zenika à la conférence Devoxx-fr 2012 !


La semaine dernière se tenait la conférence Devoxx-fr 2012, la première adaptation française du fameux Devoxx belge, point de ralliement incontournable de tous les développeurs Java européens.

Grâce à Zenika, j'ai pu assister à l'intégralité de la conférence, et présenter moi-même deux sessions, dont je vous reparlerai dans un prochain billet. Trois jours exténuants mais passionnants, dont je vous propose une rétrospective.

Lire la suite...

Introduction à la programmation concurrente en Java (2/2)


Dans un précédent article, nous avons vu comment lancer plusieurs threads pour exécuter des traitements concurrents en Java, manuellement ou via le framework Executor.

Dans cet article, nous étudierons les problèmes qui se posent lorsque plusieurs threads tentent d'accéder simultanément à une ressource, ainsi que quelques techniques simples pour les résoudre.

Lire la suite...

Introduction à la programmation concurrente en Java (1/2)


Aujourd'hui, le moindre équipement électronique - ordinateur, téléphone, tablette... - possède plusieurs coeurs, répartis sur un ou plusieurs processeurs. Si l'on souhaite en tirer le meilleur parti, il est nécessaire de se pencher sur les arcanes de la programmation concurrente. Dans cet article, nous verrons ce que sont les threads, et comment les créer et les manipuler en Java.

Mais tout d'abord, rappelons quelques notions générales.
Un processus représente l'environnement d'exécution d'un programme. Il référence d'une part un espace mémoire permettant de stocker les données propres à l'application, et d'autre part un ensemble de threads permettant l'exécution du code qui manipulera ces données.

En Java, au démarrage de l'application, un thread initial est créé : le thread "main". Son rôle est de localiser le point d'entrée de l'application (la méthode public static void main(String... args)) puis d'exécuter son code.

Ce thread, comme tous les threads, exécute la séquence d'instructions qui lui est confiée de manière purement séquentielle. Si une instruction prend du temps à compléter (par exemple, en attente de connexion à un serveur), toute l'application est paralysée.

Pour éviter cela, il est possible (et même souhaitable) de confier l'exécution de ces portions bloquantes à des threads annexes, laissant ainsi le thread principal libre de continuer l'exécution de l'application.

Voyons comment.

Lire la suite...

- page 1 de 6