jeudi 22 mai 2008

A la découverte de Grails

Quelle surprise de découvrir enfin ce qui se cache derrière Grails. Depuis quelques temps, j'entends parler de Ruby, de Ruby On Rails (RoR), de Groovy et de Grails ... C'est vrai qu'en tant que développeur Java je reste très attaché à mon langage de prédilection et il est assez difficile de me dire qu'il peut exister quelque chose de mieux ailleurs, et pire, que je doive réapprendre une autre syntaxe!


Mais bon, il faut bien se laisser aller à découvrir de nouvelles choses et parfois on tombe sur des pépites. C'est ce qui m'est arrivé ce soir. En effectuant ma veille technologique (voir le billet précédent), je suis tombé sur une présentation postée sur InfoQ. Je lance la vidéo et j'essaie de suivre la présentation ultra-rapide d'un jeune homme expliquant pourquoi Grails est tellement "Awesome!". Il parle très vite, trop vite pour moi, il faut que je stoppe la vidéo (j'en suis à 8 min sur 60mn) et que je me renseigne un peu sur ce qu'est Grails pour au moins acquérir le vocabulaire nécessaire! Et c'est là que je tombe sur les screencasts du site officiel de Grails, à cet instant précis, j'ignore absolument tout.

Prenez quelques minutes ( 26mn30 exactement) et venez découvrir à travers différents screencasts les fonctionnalités suivantes :

  • Video 1 (MOV,AVI,WMV) : Comment créer une application web avec Grails. Remarquez avec quelle rapidité on peut générer tous les fichiers nécessaires à la configuration et à l'exécution d'un projet Web. Tout est quasi généré, des objets métiers jusqu'aux pages web en passant par la création des DAO !
  • Video 2 (MOV,WMV) : Présentation de l'arborescence d'un projet Grails et modification du code à chaud.
  • Video 3 (MOV,WMV) : Les tests unitaires peuvent être générés et exécutés automatiquement. Quand je dis "générés", ce n'est pas seulement le squelette de classes ... ce sont de véritables tests qui sont générés pour tester les opérations telles que l'ajout, la suppression d'entités! Cerise sur le gâteau : un rapport de type success/failure est généré en html.
  • Video 4 (MOV,WMV) : La dernière vidéo est assez impressionnante, elle démontre comment en quelques minutes on peut créer une application qui manipule un flux XML (en l'occurrence le flux RSS d'un podcast) et comment en Groovy on peut parcourir les items d'une manière simplissime!

Donc au final Grails qu'est-ce que c'est? Un framework web qui associe la puissance de Groovy et de Java pour accélerer les développements d'applications Web! Il génère énormément de code fastidieux (classes d'objets métier, DAO, JSP, fichiers de configuration, ...) ce qui fait gagner énormément de temps. Et dire que je me satisfaisais de "generate Getters/Setters" d'Eclipse! Grails va beaucoup, beaucoup plus loin.

Reste à savoir si comme tout générateur de code, il ne va pas trop loin et s'il ne faut pas repasser derrière et tailler dans le vif ... Je pense continuer mes investigations et étudier les performances des sites qui ont pu exploiter Grails.

Je termine l'article par la citation du site officiel qui me servira de description :
Grails - Broken into bite-sized pieces
Grails aims to bring the "coding by convention" paradigm to Groovy. It's an open-source web application framework that leverages the Groovy language and complements Java Web development. You can use Grails as a standalone development environment that hides all configuration details or integrate your Java business logic. Grails aims to make development as simple as possible and hence should appeal to a wide range of developers not just those from the Java community.

mercredi 21 mai 2008

Comment organiser sa veille technologique?

Dans notre métier, il est important de se tenir un peu au courant de ce qui se passe. Dans mon cas, j'essaie de gratter des informations concernant Java, J2EE/JEE5 et tout ce qui peut graviter autour de la programmation et du développement en général.

Alors pour y arriver, il fallait forcément que j'utilise un outil, vous verrez au fil de mes billets que j'utilise un certain nombre d'outils dans ma vie de tous les jours pour me faciliter le quotidien.


  1. L'outil : Netvibes

  2. J'utilise Netvibes comme agrégateur de contenu, il me permet d'avoir en un clin d'oeil une vision des nouveautés publiées sur les sites et les blogs qui m'intéressent.

  3. Le contenu : le plus difficile

  4. Un outil c'est bien, mais il faut l'alimenter. Souvent on me demande comment je fais ... En fait, c'est plutôt simple. En partant d'un lien, on peut au fur et à mesure se constituer un petit carnet d'adresses intéressant. Ce carnet d'adresses doit constamment évoluer (ajout/suppression/changement de catégorie).

  5. Partager ses connaissances : Faire profiter les autres

  6. Il est vraiment important de pouvoir discuter avec d'autres personnes des pépites que l'ont peut trouver à gauche à droite. Pour appliquer ce concept au billet courant, voici ce que j'ai appelé mon Mur Technologique. C'est en fait un univers Netvibes, ce sont une partie des mes contenus agrégés dans mon compte Netvibes que je vous fais profiter. De grands onglets représentent les catégories :

J'espère que ce billet vous sera utile, et j'espère que vous partagerez avec moi vos astuces pour faire une bonne veille technologique.

mardi 20 mai 2008

Sur le blog Chaotic Java on peut trouver une réflexion intéressante sur comment gérer l'accès aux collections d'une classe.

Deux méthodes sont proposées, la première est l'approche "paranoïaque" dans laquelle on ne met pas à disposition les collections utilisées par la classe. On propose juste des méthodes comme add/remove/get avec une gestion des erreurs pour avoir la main sur l'utilisation de la collection.


La deuxième méthode appelée approche "en toute confiance" (Trusting approach) est la méthode classique et naïve qui consiste à utiliser les getters/setters pour accéder aux collections de la classe. En laissant un accès total aux développeurs, on leur permet de faire tout et n'importe quoi.

L'article se termine par un récapitulatif (Pour & Contre) que je vous traduis :



Personnellement, j'utilise généralement la méthode "en toute confiance", on peut ajouter des commentaires Javadoc pour préciser un comportement particulier ou des prérequis d'utilisation.

dimanche 18 mai 2008

A la recherche du singleton parfait

Le sujet qui passionne! Quelle est la version ultime, l'implémentation parfaite du pattern Singleton en Java?

Une page intéressante est disponible ici. Les différents protagonistes discutent des avantages & inconvénients des différents façons de l'implémenter.

Pour le coup, j'aime bien cette implémentation :
public final class Singleton {

private static final class SingletonHolder {
static final Singleton singleton = new Singleton();
}

private Singleton() {}

public static Singleton getInstance() {
return SingletonHolder.singleton;
}
}

Remarquez que jamais je n'avais vu le mot-clé static associé à une classe en Java! On en apprend tous les jours.

vendredi 16 mai 2008

Spring Batch

Spring Batch vient de sortir! Alors honnêtement je ne savais même pas que ça allait sortir mais comme les batchs m'intéressent je vais en parler un minimum.

Etant donné que dans ma précédente mission, l'équipe Architecture était en train de développer son propre framework de batchs, je me suis dit qu'il serait intéressant de regarder de plus près ce que propose Spring Batch.

Le site officiel c'est ici et la documentation que je suis en train de lire c'est .
Les instructions pour se lancer!



Schéma de l'architecture

J'espère en faire un petit résumé ou pourquoi pas un tutoriel pour tester la techno.

dimanche 11 mai 2008

JMX & Tests unitaires

Voici un podcast sur l'utilisation conjointe de JMX et des tests unitaires lors de la mise en place d'une démarche Test-Driven Development (TDD).

Le fichier audio est disponible ici.

La présentation PDF est disponible ici.

Voici la source de l'article.

Dans le cadre de mon travail, je serai peut-être confronté à utiliser JMX et c'est vrai que je ne m'étais pas posé la question de la manière de tester ...

Qui a déjà testé JMX et quelles en sont vos conclusions ?

mercredi 7 mai 2008

Comparaison Whizlabs/Enthuware (Partie 1)

Ayant en ma possession les kits de préparation SCBCD 5.0 de Whizlabs & Enthuware, voici une brève comparaison.

Le test d'Enthuware est beaucoup plus dur que celui de Whizlabs. Les différences notables :

Chez whizlab, le nombre de réponses (choix) maximum pour une réponse est de 4, chez Enthuware c'est 5 (peut être même 6).

Le nombre de bonnes réponses n'excède jamais 2 chez Whizlabs.

Il y a du Drag n Drop chez Enthuware, pas chez Whizlabs.

Les questions sont beaucoup plus pointues chez Enthuware, et on sent moins le copier/coller des spécifications que chez Whizlabs.

Lors de la correction des questions, Enthuware rappelle souvent les concepts abordés et ne se contente pas de citer le chapitre des spécifications.

Chez Whizlabs on trouve des erreurs lors du calcul du score d'un examen, des problèmes d'affichages, des bugs en tout genre ...

A force d'envoyer des mails de bugs à Whizlabs concernant leur logiciel, ils me l'ont remboursé intégralement! 75€ quand même!

Le support technique de Whizlabs est plutôt rapide, ils répondent généralement en moins de 24H, et ils apportent toujours une réponse claire.

Je n'ai pas eu entre les mains le logiciel uCertify, donc pour l'instant, vous n'aurez pas mon avis là dessus.