Pagination : un petit tour d'horizon

Voici un petit tour d'horizon des systèmes de pagination mis en place sur différents sites à forte audience.
On y retrouve du bon et du mauvais, et parfois même des idées assez surprenantes.

Lire la suite...

De la bonne implémentation du pattern producteur-consommateur

Le Touilleur-Express vient de publier un article technique présentant l'interface BlockingDeque. Introduite avec Java6, elle étend et améliore BlockingQueue en permettant d'agir sur les deux extrémités de la file.

Ces composants permettent d'implémenter facilement des architectures de type producteur-consommateur, érpargnant au développeur les affres de la synchronisation manuelle et fournissant un ensemble de fonctionnalités pratiques (blocage, timeout...).

Si ces problématiques vous intéressent, je vous recommande l'excellent livre Java Concurrency in Practice.

Java Quiz #23

Saurez-vous analyser ce code sans le copier/coller dans un IDE ?

  1. /** Gestionnaire de configuration. Immutable. */
  2. public class SettingsManager implements Serializable {
  3.  
  4. /** Ensemble des settings, classés par leur nom */
  5. private final Map<String, ? extends Serializable> settings = Collections.EMPTY_MAP;
  6.  
  7. /** Constructeur */
  8. public SettingsManager(Map<String, ? extends Serializable> settings)
  9. { this.settings = settings;
  10. }
  11.  
  12. /** Permet de récupérer un Setting selon son nom. Peut renvoyer null. */
  13. public Serializable getSetting(String settingName)
  14. { return this.settings.get(settingName);
  15. }
  16. }
Lire la suite...

Paris JUG : Soirée JBoss le 2 décembre

Le Java User Group de Paris organise une soirée de présentation JBoss.
Elle aura lieu le mardi 9 décembre, dans les locaux de l'ISEP.

Au programme :

  • 19h15 à 19h30 : Accueil
  • 19h30 à 20h25 : Présentation de JBoss AS 5, par Sacha Labourey.
  • 20h25 à 21h05 : Buffet
  • 21h05 à 22h00 : Présentation de JBoss SEAM, par Malik Saheb.

Les inscriptions sont ouvertes, venez nombreux !

OpenSource Exchange : compte-rendu sur Hadoop

Hadoop

Présentation réalisée par Oktay Istanbullu, ingénieur chez Yahoo!.

Lire la suite...

OpenSource Exchange : compte-rendu sur Portlets 2.0

Portlets 2.0

Présentation réalisée par Christophe Laprun, développeur chez JBoss.

Lire la suite...

OpenSource Exchange : compte-rendu sur Glassfish V3

Glassfish V3 "Prelude"

Présentation réalisée par Alexis Moussine-Pouchkine.

Lire la suite...

OpenSource Exchange : compte-rendu sur Java EE 6

Java EE 6

Présentation réalisée par Antonio Goncalves.

La spécification Java EE 6, prévue pour mi-2009, est vaste : plus de 27 spécifications !
Afin d'y voir plus clair, Antonio a présenté les principales nouveautés de cette norme.

Lire la suite...

OpenSource Exchange : compte-rendu sur Groovy

Groovy

Présentation réalisée par Guillaume Laforge

Lire la suite...

OpenSource Exchange : compte-rendu sur eXo Platform

Exo Platform

Présentation réalisée par Tugdual Grall, VP of Business and Product Strategy at eXo Platform SAS.

Présentation

Après s'être présenté, Tugdual a expliqué, pour l'anecdote, l'origine du nom "exo". Il s'agissait en fait du projet de fin d'études de Benjamen Mestrallet, alors élèe à l'ENSEIRB. En manque d'inspiration au moment de créer son projet dans l'environnement de développement, il a simplement indiqué "exo"... Quant à la société, elle fut montée en octobre 2003 pour répondre aux exigences de support du Département de la Défense américain (DoD), qui avait adopté cette technologie.

Lire la suite...

OpenSource Exchange : compte-rendu sur SpringSource DM Server

Mercredi 12 novembre avait lieu la conférence OpenSource Exchange, organisée par Xebia et Skills Matter. C'était l'occasion de faire le point sur certaines technologies : et de "sentir" un peu les nouvelles tendances du marché.

La journée était découpée en sept séances d'une heure, animées chacune par un expert reconnu dans son domaine :

Chose surprenante, malgré le programme intéressant et la facilité d'accès du lieu, sur 80 inscrits, seule une grosse quarantaine de personnes étaient présentes le matin, et une trentaine l'après-midi. On mettra ça sur le compte du pont du 11 novembre. L'accueil était quant à lui très correct, avec un petit déjeuner d'accueil, un coupon-repas pour le midi, et le traditionnel package composé d'un bloc-notes et d'un stylo aux armes de Skills Matter.

Ce billet contient le compte-rendu de la première séance sur SpringSource DM Server; les autres feront l'objet de billets ultérieurs.

Lire la suite...

TheCodersBreakfast.net : un nom de domaine pour le blog !

Bonne nouvelle !
Votre blog préféré (j'espère) a désormais son propre nom de domaine : TheCodersBreakfast.net !
Et une magnifique bannière diagonale pour fêter ça :)

Certes, pour le moment, il ne s'agit que d'une simple redirection, et vous vous retrouvez toujours à l'ancienne adresse. Mais le nouveau nom sera plus simple à retenir et à donner à vos amis et collègues; et un éventuel changement d'hébergeur serait transparent pour vous. Je vous recommande donc de mettre à jour vos bookmarks et de pointer désormais sur la nouvelle adresse.

Java Quiz #22

Au programme cette semaine, un peu de synchronisation...

Imaginez que dans une classe, vous avez besoin de faire des initialisations, mais que vous ne voulez faire ces initialisations qu'au premier appel.

Vous écrivez alors ceci :

  1. private static Boolean inited = Boolean.FALSE;
  2. ...
  3. public void doJob() {
  4. // On commence par initialiser ce qui doit l'être
  5. synchronized (inited) {
  6. if (!inited) {
  7. init();
  8. inited = Boolean.TRUE;
  9. }
  10. }
  11.  
  12. // On fait le boulot
  13. ...
  14. }
  15. ...

Or ce code peut poser problème. Pourquoi ?

Lire la suite...

SpringSource : ça bouge, ça bouge !

Je vous ai déjà parlé des "Rencontres Spring", une conférence organisée jeudi par SpringSource. Ce que vous ne saviez pas en revanche, c'est que Julien Dubois (Directeur Régional France de SpringSource) m'a invité à interviewer leur "Vice President of Engineering", Peter Cooper-Ellis, en compagnie de quelques autres blogueur privilégiés.
C'est en me documentant pour trouver des questions intelligentes (contributions bienvenues) que je suis tombé sur ces deux news, toutes fraîches et extrêmement intéressantes...

Lire la suite...

Les Rencontres Spring 2008

La semaine prochaine est décidément bien chargée : SpringSource et SFEIR organisent les Rencontres Spring.

  • Quand : Jeudi 13 Novembre à 08h30
  • Où : La Défense (précisions à venir)
  • Inscription gratuite sur le site, les places sont limitées.

fleur_spring.png Le programme est alléchant :

  • 08:30 : Accueil
  • 09:00 : Keynote par Didier Girard et Julien Dubois, ainsi qu'un invité surprise
  • 09:45 : Roadmap des projets Spring par Peter Cooper-Ellis
  • 10:30 : Pause
  • 10:45 : Tomcat en production, avec Mark Thomas
  • 11:30 : Spring 3.0, par Juergen Hoeller
  • 12:15 : Table ronde avec de grands utilisateurs de Spring (banques, sites de e-commerces...)

Conférence OpenSource Exchange

La semaine prochaine aura lieu la conférence OpenSource Exchange.

Skills Matter & Xebia sont heureux de vous inviter à la première Conférence Open Source Exchange! A l’occasion de l’annonce du partenariat qu’ils ont scellé, Skills Matter & Xebia vous donnent rendez-vous pour ce premier Open Source Exchange à Paris, le 12 novembre 2008. Cet événement gratuit est une occasion unique de partager votre expérience avec des autres experts de l'Open Source. Venez écouter ce qui est nouveau dans le monde de Java EE 6 et GlassFish, eXo Web OS, Hadoop & Groovy. Cet évènement s'adresse à tout public souhaitant mieux connaître le monde de l’open source. L'évènement est gratuit mais compte tenu du nombre limité de places, il est indispensable de s'inscrire auparavant en remplissant le formulaire suivant.

Paris JUG : compte-rendu de la soirée GWT/Restlet

Le mardi 4 novembre s'est tenue une soirée du Paris JUG; organisée comme d'habitude en deux sessions d'une heure :

  • Didier Girard a pu démontrer la puissance et la simplicité de GWT,
  • Jérôme Louvel a présenté les bénéfices de l'intégration avec Restlet.
Lire la suite...

Java BarCamp #2 chez Octo

OCTO organise un nouveau Java Barcamp !

Pour rappel, le principe du BarCamp est d'organiser des groupes de discussion autour de sujets choisis sur place par les participants eux-mêmes (parmi lesquels se trouvent généralement quelques sommités du petit monde Java). Vous pouvez lire le compte-rendu du précédent BarCamp pour vous faire une idée de l'ambiance et des sujets abordés.

(Merci à Luc Bizeul de m'avoir signalé l'événement)

Java Quiz #21

Est-il possible que le programme suivant provoque l'affichage ci-dessous ?

  1. public class TestEq {
  2. public static void main(String... args) {
  3. // Déclaration de i1, i2 et i3
  4.  
  5. i1 = 127; i2 = 127; i3 = 127;
  6. System.out.println(i1 == i2);
  7. System.out.println(i2 == i3);
  8.  
  9. i1 = 128; i2 = 128; i3 = 128;
  10. System.out.println(i1 == i2);
  11. System.out.println(i2 == i3);
  12. }
  13. }
true
true
true
false

Si oui, quelles sont les déclarations possibles de i1, i2 et i3 pour cela ?

Lire la suite...

Java : internationalisation des fichiers "properties"

De nos jours, il est indispensable d'internationaliser correctement les applications, et en particulier les applications web.

La technique habituelle consiste à externaliser les chaînes de caractère affichées par l'application dans des fichiers ".properties" (un par langue). Ces fichiers peuvent ensuite être chargés grâce à la classe Properties, soit manuellement (à la charge du développeur de déterminer le bon fichier), soit via un ResourceBundle (qui sait sélectionner le fichier adéquat en fonction d'une Locale).

Dans les deux cas, on se heurte à une limitation fondamentale du fichier ".properties" : son contenu est systématiquement considéré comme encodé en ISO-8859-1. Si cela convient parfaitement pour la plupart des langues de racine latine ou germanique, il est en revanche très difficile de représenter les symboles de beaucoup d'autres langues (asiatiques, arabes...). Certes, il est toujours possible de les remplacer par leurs équivalents unicodes (ex: 家 = \u5bb6), mais le texte ainsi produit est illisible et se prête mal à la relecture ou à la modification.

Lire la suite...