mardi 17 mars 2009

Pour ou contre les annotations

Apres avoir écrit, modifié, supprimé de nombreux fichiers de configurations XML, le principe des annotations arrive avec Java 5.
J'ai pu l'utiliser pour les webservices (avec CXF), rapidement avec les EJB 3, et je trouve que certains codages sont simplifiés grace a se principe.
Bien sûr, il y a des mauvais côtés, et je serai trop peu expert pour vous les lister.
De ce fait, je vous laisse aller regarder cet article qui donne 3 avantages et 3 inconvénients, en espérant qu'il s'enrichisse.

mercredi 11 mars 2009

Introduction au pair programming

Après un bon repas en compagnie de son directeur de projet et d'autres collègues, on ressort toujours avec plein d'idées. C'est intéressant de confronter le point de vue de personnes qui ont peu d'expériences avec celles qui en ont plus.
D'un côté, il y a l'envie forte de respecter toutes les théories, de l'autre il y a le pragmatisme. Confronté quotidiennement aux problèmes d'implémentations, de temps, de coût, entre les bonnes pratiques et les vraies pratiques, il faut faire la part des choses.
En ce moment, le sujet des tests unitaires revient souvent. Qu'est ce qu'un bon test, comment va-t-on faire pour le maintenir, ne faut-il pas écrire les tests avant, et j'en passe.
C'est un vrai sujet, qui demande réflexion, et un point qui est ressorti, c'est le pair programming.
Quelle chance, je rentre et que vois-je sur infoQ, "adopter le pair programming"! Génial!
Les avantages, les inconvénients, un avis sur la manière débuter... "y a plus qu'a" comme on dit

Programmation web à un niveau plus élevé

La majorité des sites utilises Ajax, CSS, toutes les briques de bases du Web 2.0, permettant d'augmenter l'interaction avec l'utilisateur.
Le souci avec Ajax, c'est qu'il faut choisir une librairie, ou un framework. En utilisant JQuery par exemple, même si je le trouve extrêmement puissant et rapide à prendre en main, c'est qu'on reste très proche du Javascript.
L'article suivant propose de s'orienter vers des "outils" de plus haut niveau comme Cappuccino. Honnêtement je ne sais pas si j'aurais un jour l'occasion de le tester et plutôt que de dire des bêtises, je vous laisse lire l'article et pourquoi pas vous diriger sur le site de Cappuccino.

Les fuites mémoires

Avec Java, l'habitude n'est pas forcément de regarder sa consommation mémoire.
On peut même le voir sur des projets très connus comme Eclipse. Malgré le fait que cet outil est tout de même
très pratique, qu'il est plutôt bien fait, il a une forte tendance a demander de plus en plus de ressources.
Vous imaginerez très vite le temps qu'on peut perdre avec un projet multi-module utilisant maven, déployé sur Weblogic 10, sur un poste de dev.Bref, entre les temps de compilation, de démarrage, de téléchargement de librairies, je crois que si j'allais prendre un café à chaque fois que j'en ai l'occasion, je deviendrais hyperactif.

Bien entendu, ce n'est qu'un exemple, et le choix de ce mode de fonctionnement est peut être discutable, toutefois, et j'en viens au sujet de ce billet, il est bon de jeter un oeil à la consommation de mémoire de son projet.
J'ai lu quelque part que face à une fuite mémoire, il y a deux types de réactions. La première est d'augmenter la taille allouer à la jvm pour contourner le problème, la seconde est de la réduire pour reproduire le bug plus facilement.
Il est bien évident que tout le monde choisit à chaque fois la deuxième solution :p
Et pour cela les bon outils font le bon ouvrier, pour cette raison je vous invite à vous informer en lisant cet article.

Tutoriaux Struts 2

Struts 1.2 et consort ont longtemps vécu, et dans le monde de l'entreprise, Struts 2 prend sa place petit à petit.
Voici deux tutoriaux pour prendre en main ce framework :
- HelloWorld,
- Les validators.

mardi 10 mars 2009

A partir de quel jar ma classe est chargée ?

Voici une astuce tout bête qui peut aider à comprendre un dysfonctionnement,
comment connaître le jar depuis lequel une classe est chargée.
La réponse en quelques lignes sur cette page, ou
    Class cls = Example.class;
ProtectionDomain protectedDomain = cls.getProtectionDomain();
CodeSource codeSource = protectedDomain.getCodeSource();
URL jarLocation = codeSource.getLocation();
System.out.println(jarLocation);

Il y a un site très pratique aussi : http://www.jarfinder.com, il permet à partir du nom d'une classe de retrouver le ou les jars qui la contiennent.

Comment faire une revue de code

Il est parfois important de faire une revue, par exemple lorsque de programmeurs avec peu d'expérience arrivent sur un projet, ou travaillent sur une partie sensible.
Ce n'est pas toujours constructif, et certains pourraient mal le prendre. En effet, le but de cet exercice est de déterminer les défauts, et la manière de les corriger.
Voici un point de vue sur la revue de code et sur la facon dont elle doit s'organiser.