Un peu moins de 20 ans après sa création, le langage Java s’est imposé comme l’un des langages les plus populaires si ce n’est le plus populaire auprès des développeurs et plus encore en entreprise où il est massivement utilisé. Pour les plus perplexes, un rapide coup d’oeil aux différentes offres d’emploi pour développeurs suffira à les convaincre. Malgré cette utilisation massive, le langage Java continue de proposer pièges et curiosités qui peuvent dérouter les développeurs les plus aguerris. Cet article vient présenter quelques-uns de ces pièges, plus ou moins connus, avec pour but premier de donner les bonnes pratiques pour s’en préserver.
Père de l’API Collections de Java et architecte reconnu du monde Java par ses ouvrages remplis de pragmatisme et de précieux conseils, Joshua Bloch fut le premier à mettre en lumière ces pièges du monde Java avec son comparse Neal Gafter, lui aussi alors employé de Sun. Plus connus sous le nom de puzzlers, ces pièges et curiosités du langage ont été accumulés par ces 2 brillants architectes qui ont commencé à les mettre en lumière lors de différentes conférences au début des années 2000. Chaque nouvelle version de Java étant alors l’occasion pour eux d’en découvrir de nouveaux, toujours plus croustillants. C’est finalement en 2005 qu’ils se décidèrent à en publier près d’une centaine au sein d’un ouvrage qui, plusieurs années après, demeure encore une référence. Depuis lors avec les sorties des moutures 6 et 7 de Java, certains nouveaux puzzlers ont été mis en lumière mais les plus connus d’entre eux sont issus de leur livre référence. Concrètement, un puzzler consiste en une portion de code Java pour laquelle on interroge le développeur sur son comportement, sans que ce dernier ait recours à un compilateur ou à une JVM pour l’exécuter. Différentes possibilités sur le résultat de sa compilation ou de son exécution peuvent être présentées et dans tous les cas, une morale doit en ressortir mettant en exergue un certain nombre de bonnes pratiques qu’il faut garder à l’esprit lors de développements à l’aide du langage Java. Bref, se confronter à des puzzlers reste un exercice intéressant quel que soit son niveau !
Sylvain Saurel