Les erreurs liées à un manque de mémoire sont une des hantise du développeur Java. De deux choses l’une, soit une augmentation du volume de mémoire allouée résout le problème définitivement, soit cela ne fait que retarder l’échéance et c’est là que les choses se corsent!

Le bon vieux débogueur ne peut pas nous aider pour ce genre de diganostic, il ne produit pas d’informations utiles concernant l’utilisation réelle de la mémoire. Il est bien sûr possible de générer un dump mémoire (avec un ‘kill -3’ sous Linux), néanmoins le résultat peut être assez lourd à analyser. Confronté récemment à un tel problème, je me suis rendu compte que Sun fournit avec son JDK un ensemble d’outils permettant de résoudre bon nombre de problème. Ces outils sont disponible depuis la version 1.5 du JDK, ils ne sont pas suportés par Sun et ne fonctionnent que sur certaines plate-formes : Linux, Solaris, Mac OS, mais pas Windows… Voici donc une présentation succincte des possibilités offertes pour diagnostiquer un problème de fuite mémoire.

Introduit avec la version 4.3.1 de Liferay, le plugin SDK de Liferay n’a eu de cesse d’améliorer jusqu’à se placer, avec sa version 5.1, en véritable concurrent de l’environnement d’extension. Pour rappel, Liferay propose 2 méthodes de développement :

  • L’environnement d’extension, la méthode historique qui permet une customisation et une surcharge pousée du portail ainsi que le développement de portlets.
  • Le plugin SDK, introduit avec la version 4.3.1 de Liferay, qui avait pour objectif de proposer un outillage léger pour le développement de portlets et de thèmes Liferay.

Si les cibles étaient bien définies entre les 2 méthodes, les versions 5.0.1 (sortie uniquement en RC) et 5.1 changent la donne. Dorénavant, le SDK de Liferay se voit attribuer de nouvelles fonctionnalités :

  • Disponibilité du ServiceBuilder pour un développement de la couche métier des portlets via une approche MDA.
  • Introduction d’un nouveau type de plugin : les hooks.

Les fonctionnalités jusqu’alors disponible à partir du SDK rentraient tout à fait dans le cadre d’un outillage pour le développement avec Liferay, mais les hooks vont encore plus loin et offrent maintenant des possibilités de surcharge des fonctionnalités du portail, un domaine jusqu’alors réservé à l’environnement d’extension… Grâce aux hooks, il est ainsi possible de  :