25 août 2010
Après avoir abordé la gestion des fichiers de logs, nous continuons aujourd’hui la série « Applications Java prêtes pour la Production » avec l’audit.
Par audit, nous entendons l’audit des actions importantes réalisées sur une application.
Pourquoi auditer ?
Est-il vraiment utile de générer des informations d’audit dans nos applications ? Sans explications de juriste, quelques exemples suffiront à nous en convaincre :
- Un site web de partage de photos doit pouvoir dire qui a uploadé quelle image, depuis quelle adresse IP et à quelle date.
- L’application d’administration d’un site de e-commerce doit tracer toutes les modifications de prix pour empêcher un employé astucieux de baisser à 1 euro le prix de son téléphone préféré le temps de passer commande.
Pour revenir à des explications plus théoriques, les logs d’audit nous apportent :
- les informations nécessaires à la justice en cas d’infraction,
- la détection d’intrusions,
- la reconstitution des événements en complément des logs d’exceptions pour aider au diagnostique de problèmes.
Nous nous placerons dans le cas le plus fréquent où nous ne développons pas d’outil pour consulter ces informations d’audit et où un accès direct au média de stockage (grep sur fichier texte, sql sur base de données, etc) suffit.
Lire la suite de cet article »
15 septembre 2009
Servlet 3.0 est une révision importante des spécifications, elle apporte son lot de nouveautés : simplification, pluggabilité, support de l’asynchrone, sécurité et d’autres modifications mineures. Cette JSR, passée en final draft en mai denier, fera partie des nouveautés apportées par Java EE 6 dont la sortie ne devrait pas tarder. Mais que se cache t-il derrière cette nouvelle version ? Simple dépoussiérage après 161 JSR d’écart depuis la dernière version 2.5 ou véritables avancées ? C’est la question à laquelle nous allons essayer de répondre au cours de cet article en nous focalisant sur les 3 points marquants de cette nouvelle version :
Lire la suite de cet article »
19 juin 2009
Dans le cadre d’un article d’introduction à Guice, nous avions vu une injection de dépendance simple, répondant à un besoin relativement basique.
Dans ce second article, nous allons découvrir des outils d’injection plus évolués, qui devraient nous permettre de réaliser par la suite notre premier exemple ‘réel’ d’implémentation Guice.
Lire la suite de cet article »
11 mai 2009

La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.
SOA
Le coin de la technique
Evènements de notre communauté en France et à l’étranger
Lire la suite de cet article »
11 mai 2009
Pas mal de bruit la semaine dernière dans la blogosphère Java avec l’annonce par Google et SpringSource d’une nouvelle proposition de JSR dédiée à l’injection de dépendances : @Inject ( »Annotations for Dependency Injection »).
Comme le souligne ‘Crazy’ Bob Lee, l’auteur principal de Google Guice, la sortie de Spring 1.0, il y a déjà 5 ans, a apporté l’injection de dépendances aux masses, via un fichier de configuration propriétaire. Il y a 3 ans, Google Guice a proposé la même chose via des annotations (et SpringSource propose la même chose depuis Spring 2.5).
Si le succès de Google Guice est assez limité face au raz de marée Spring, le constat est là : il manque un standard. Comme les deux librairies ne sont pas compatibles, si vous exposez à un autre projet/équipe une librairie contenant des dépendances injectées par Google Guice, et que l’autre équipe utilise Spring, elle devra redéfinir tous les beans et leurs dépendances dans un fichier de configuration Spring (ou des annotations Spring).
@Inject propose donc de standardiser les annotations, afin de rendre portables sur différents frameworks (Guice, Spring, Tapestry IOC, etc.) des classes injectables.
Lire la suite de cet article »
24 avril 2009
Quand on parle d’injection de dépendances, on pense tout de suite à Spring qui se tient sous les feux de la rampe. On peut aussi penser au petit dernier Guice abordé dans l’article Google Guice 2 : Les bases de l’injection de dépendances. Mais il ne faudrait pas oublier Tapestry 5 qui, lui aussi, fournit sa solution pour l’injection de dépendances. Tapestry IoC, à ne pas confondre avec le framework de développement Web Tapestry 5, est très fortement inspiré de Guice. Son but affiché est de tirer le meilleur de Guice tout en apportant l’héritage de son grand frère défunt Hivemind. On garde donc l’objectif zéro XML en le remplacant par du code Java. Parmi les avantages de cette technique, on citera :
- Le démarrage d’une application est plus rapide avec une configuration IOC en annotations Java qu’avec une configuration XML à parser
- On peut tester unitairement les modules d’injection puisqu’il s’agit de classe Java simple
- Finie la configuration laborieuse en XML
J’ai même envie de rajouter que l’apprentissage d’une API Java est bien plus rapide que celui d’une syntaxe XML. Tout comme Guice, Tapestry IoC se concentre sur l’injection de dépendances et ne tente pas de fournir une stack complète de développement comme le fait Spring. On ne trouve ni les Aspects, ni le pattern Template cher à Spring. Pour répondre aux besoins de programmation par aspect, Tapestry IoC propose des interceptors qui peuvent décorer les services. D’autre part, dans Tapestry IoC, l’injection est définie dans un ou plusieurs module(s) chacun d’eux pouvant contribuer à la configuration et aux services de l’application.
Dans ce premier article de la série Tapestry 5 qui commence aujourd’hui, nous verrons les bases de l’injection avec Tapestry IoC et les différences par rapport à Spring et Guice.
Lire la suite de cet article »
15 avril 2009
Guice (prononcez Juice) est le framework d’injection de dépendances de Google. La configuration des dépendances se fait par code, à l’aide d’annotations, et nécessite donc l’utilisation de Java 5.
Google travaille actuellement sur la V2 de son framework, qui tarde à sortir. Cependant, une mise à jour régulière du Wiki du projet et la publication de snapshots permettent d’ores et déjà de se faire une bonne idée de cette alternative à l’injection de dépendance ‘à la Spring’.
Nous entamons aujourd’hui une série d’articles qui a pour but de vous faire toucher du doigt la grande liberté qu’offre l’injection de dépendance par code. Nous irons progressivement des concepts de base de Guice 2.0, vers une utilisation avancée du framework.
Lire la suite de cet article »
20 octobre 2008

La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.
Actualité éditeurs / SSII
Agilité
RIA
Le coin de la technique
Lire la suite de cet article »
1 octobre 2008
Voici la liste des billets les plus lus sur ce blog en juillet, août et septembre :
Tout au long du cycle de vie d’une application J2EE, il est nécessaire de posséder des traces de qualité :
- durant le développement, afin de suivre l’exécution pas à pas et de détecter d’éventuelles anomalies.
- durant la recette, afin de corréler anomalies fonctionnelles et exécution du programme.
- durant l’exploitation, afin de surveiller la « bonne santé » de l’application.
Mais obtenir des traces de qualité n’est pas un exercice trivial. C’est pourquoi nous vous proposons nos 10 commandements des logs.
Lire cet article »
Spring 2.5 est sorti depuis le 19 novembre 2007 comme nous l’annoncions, il y a quelques temps, dans notre revue de presse. Vous avez comme moi sagement mis à jour vos poms Maven2 vers la dernière release de Spring (normalement et la plupart du temps compatible avec les versions 2.0.x).
Mais avez-vous vraiment profité des nouveautés de cette version en terme de configuration ?
Lire cet article »
Jouer avec les Threads n’est pas trivial. En informatique de gestion, cette difficulté est heureusement masquée par les serveurs d’application et les API spécifiques. La plupart du temps, ils permettent aux développeurs de s’abstraire de ces contraintes et de se concentrer sur le code métier, moins technique. Il arrive pourtant qu’il faille se relever les manches. Certains besoins vous ont certainement déjà poussé à faire communiquer 2 Threads.
Si le développement n’est pas facile, le debug peut devenir une calamité ! La programmation concurrente ne soulève pourtant que 3 types majeurs de problèmes. Faites le sondage autour de vous, les développeurs associent trop rapidement le mot clé synchronize au multithreading sans en comprendre véritablement le fonctionnement. Demandez-leur ensuite de vous décrire l’utilité du mot clé volatile …
Cet article revient sur les grands principes de la programmation concurrente.
Lire cet article »
8 août 2008
Spring 2.5 est sorti depuis le 19 novembre 2007 comme nous l’annoncions, il y a quelques temps, dans notre revue de presse. Vous avez comme moi sagement mis à jour vos poms Maven2 vers la dernière release de Spring (normalement et la plupart du temps compatible avec les versions 2.0.x). Mais avez-vous vraiment profité des nouveautés de cette version en terme de configuration ?
Lire la suite de cet article »