Une configuration pas aProxymative

Introduction

La configuration d’une application grâce à des fichiers properties est une technique très souvent rencontrée dans le monde Java. Que ce soit pour configurer des utilisateurs (kermit/thefrog :D), des loggers ou pour des propriétés propres à une application, ils sont partout. Leur format est pratique (“clé=valeur” dans le cas le plus simple), ils se chargent aisément et se prêtent bien à l’internationalisation via les ResourceBundle.

Pourtant, ils ont aussi leurs contraintes :

  • il est facile de se tromper dans un nom de clé
  • en général on ne peut récupérer que des String, qu’il faut ensuite interpréter ou convertir à la main
  • c’est la galère dès qu’on veut renommer une propriété dans le fichier, il faut penser à changer toutes les références dans le code Java

Voyons comment améliorer ça avec une simple interface et un petit framework !
Lire la suite…

Share

iBATIS : l’autre framework de persistance

Introduction

De quoi faire frémir un Angry Bird

Si je vous dis “framework de persistance”, vous allez immédiatement penser Hibernate ou TopLink, car ce sont je pense deux des ORM les plus répandus dans notre cher monde J2EE. Cependant il en existe un autre, moins connu, qui propose des fonctionnalités parfois intéressantes : iBATIS. Par chance, j’ai travaillé sur un projet qui utilise ce framework, je vais donc vous le présenter dans cet article.
Lire la suite…

Share

Applications Java extensibles avec les Service Provider Interfaces

Introduction

Dans la lignée des plugins chargés au runtime, je vous propose cette fois-ci d’explorer une seconde voie d’ajout de fonctionnalités au runtime : les Service Provider Interfaces (SPI) couplées à l’utilisation du ServiceLoader du JDK6.

Lire la suite…

Share

La réponse à la Grande Question sur la Vie, les Annotation Processors et le reste…

Introduction

Ne vous êtes-vous jamais demandé si vous utilisiez correctement une annotation ? Certes, pour certains cas comme @Deprecated, il faut vraiment en vouloir pour se tromper en l’utilisant. Mais quid d’un @Transactional ou d’un @AccessRole ? La plupart du temps, on s’attendra à les trouver sur des classes d’un package particulier (*.service), sur des méthodes ayant des paramètres précis, etc.

L'apocalypse des développeurs

Les annotation processors : l'apocalypse des développeurs ?

A l’inverse, on pourrait vouloir savoir comment sont utilisées certaines annotations, pour faire du reporting : quels sont les services auxquels aura accès un utilisateur disposant du droit "admin" ? Dans quelles classes mon framework doit-il injecter mon instance de FooBarPlopDAOImpl ? Brian va-t-il demander Penelope en mariage dans l’épisode 43 de la saison 28 d’Amour, Gloire et Clean Code ?

Autant de problématiques pouvant être résolues (en partie) grâce aux Annotation Processors, fonctionnalité assez peu connue apparue dans le JDK5. Je vous propose dans cet article de pousser un peu l’utilisation des annotations, dans la continuité des présentations faites par Olivier Croisier et d’un non moins génialissime article paru sur le blog Excilys récemment [1].

Lire la suite…

Share

Plugins annotés et chargés dynamiquement en Java

Attention : cet atricle n’est pas un atricle sur le cyclimse.[?]

Introduction

Je suis un geek. Comme tout bon geek qui se respecte, mes activités extra-professionnelles incluent entre autre des jeux vidéo et de la programmation (tard le soir en buvant un soda quelconque). Alors quand je peux mélanger deux activités favorites entre elles, c’est chouette. Etant fan de Trackmania Nations, il m’arrive de fouiner dans toute source d’information qui s’y rapporte.

C’est ainsi que j’ai appris que le serveur dédié TrackMania peut être contrôlé à distance par des appels XML-RPC. Evidemment, tout ça me donne envie d’ouvrir mon IDE favori pour faire un HelloWorld en Java et voir un peu les possibilités.

Le HelloWorld ayant évolué un peu plus que je ne l’avais initialement prévu, il s’est vu doté d’un système de plugins chargés dynamiquement (parce que j’avais envie d’explorer ce domaine depuis un certain temps déjà).

Assez raconté ma life, je vais maintenant vous faire part de mes réflexions relatives à la mise en place d’un système de plugins sous forme de JARs, pouvant être chargés/déchargés au runtime, et utilisant des annotations personnalisées.

Lire la suite…

Share