Java Quiz #40

To please your Project Manager, a former developer (yeaaars ago), you sometimes let him help you develop some "very important" parts of your application.

Today, he's in charge of displaying "Hello World" by iterating on a list containing those words. Alas, distracted by his going on vacation this very afternoon, he forgets to add "World" to the list before starting the iteration. Trying to correct his mistake, he adds it a few lines later, but now his code unexpectedly breaks down at runtime ("this must be a JVM bug !").

A few minutes before leaving, he asks you to find a solution in his absence, with the following instructions :

  • Do not modify his existing code, it's Perfect (of course).
  • The FIXME tag shows where you're allowed to insert your corrective code
  • He must be able to understand your solution when he comes back (so

using Reflection is not an option).

Are you worth the trust of your beloved Manager ?

  1. final List<String> list = new ArrayList<String>() {{ add("Hello"); }};
  2. final Iterator<String> iterator = list.iterator();
  3. System.out.println(iterator.next());
  4. list.add("World");
  5. // FIXME : work here while I'm sunbathing
  6. System.out.println(iterator.next());

Hints - Keep in mind that :

  • the iterator is declared final
  • this is only a code fragment, so you cannot use System.exit(0) or return; you wouldn't like your application to terminate prematurely, would you ?
  • since you cannot modify the existing code, you cannot delete or ignore the last line, which must print "World"

Note : I must thank Romain Revol for helping me to write this quiz. Romain successfully attended the "Heinz Kabutz's Java Specialist Master Course" training session I presented in France in June at Zenika's office.

Lire la suite...

Paris JUG "Java EE 6" par Adam Bien

La séance de juillet du Paris JUG a eu pour thème "Lightweight Killer Apps with Nothing But Vanilla Java EE 6". Elle était présentée par Adam Bien et a occupé les deux créneaux horaires (19h30 à 22h00).
Le buffet était offert par François Ostyn.

Une soirée bien intéressante, qui l'a redonné envie de jouer avec Java EE 6, malgré son passif technologique assez lourd. Je vous laisse lire le compte-rendu intégral :

Lire la suite...

Conférence : Les annotations enfin expliquées simplement

Mardi dernier, j'ai animé chez Zenika une conférence sur les Annotations.

Et le sujet est plus complexe qu'il n'y paraît. Outre les subtilités de leur syntaxe, les annotations disposent d'un outillage puissant à la compilation et au runtime, dont la maîtrise ouvre de nouvelles perspectives en termes de méta-programmation.
En particulier, j'ai démontré l'utilisation des Annotation Processors, qui permettent d'interagir avec le compilateur Javac, et de la Réflexion pour lire et injecter des annotations dynamiquement au runtime.

Apparemment, la conférence a remporté un franc succès :

  • "Très intéressant. Niveau technique avancé" A. F.
  • "Vivement le prochain projet pour qu'on mette cela en place" JP. L.
  • "Excellente présentation avec démo hardcore à la fin ;)" C. M.
  • "Très bon intervenant" S. F.

Je remercie de leur présence tous les participants qui ont pu venir.
Pour les parisiens qui n'ont pas pu avoir de place, rassurez-vous, il est possible qu'une nouvelle session soit programmée. Et pour mes lecteurs de province, mon passage est prévu dans certains JUGs d'ici la fin de l'année. Renseignez-vous et faites pression ! :)

Pour finir, j'ai le plaisir de vous offrir, en annexe de ce billet, les slides et les sources de la conférence.
Tous les commentaires sont les bienvenus !