mardi 15 décembre 2009

Spring AOP

Le développement orienté aspect, ou comment évitez de coder deux fois la même chose.
Je l'utilise peu, même pas, mais je m'y intéresse.


Dans le monde Java, lorsque vous souhaitez ajouter des logs à votre application, combien de fois avez-vous à taper quelque chose du genre :
logger.log(...)

Et bien, la programmation orientée aspect peut vous permettre par exemple, de logguer l'entrée et la sortie d'une méthode.
Je ne m'y connais pas et ne m'étendrai donc pas sur le sujet.
J'ai trouvé un article simple qui présente l'intérêt de l'AOP avec le framework Spring AOP.
Vous pouvez avoir plus de théorie dans l'article de dotnetguru.

Vous préférez lire un livre ?
Je vous propose de regarder Aspect J in action, dont la deuxième édition est sortie en septembre 2009.

lundi 7 décembre 2009

Spring par l'exemple

Je viens de découvrir un site pour apprendre Spring par l'exemple.
Il semble bien fait et très fournit, vous pouvez l'enrichir en y apportant vos exemples.
Une version PDF est téléchargeable, attention elle fait un peu plus de 300 pages. Si vous vous demandiez ce que vous pourriez faire de vos longues soirées d'hiver, je crois que j'ai une partie de la réponse.

vendredi 4 décembre 2009

Des extensions Google wave

Ce qui marche bien avec Google wave, c'est le fait de pouvoir y ajouter des extensions.
Google maps, le sudoku sont des gadgets qu'on retrouve très vite.
Mais il existe plein d'autres :
- le "robot" par exemple est un gadget qui "scrute" la wave et qui lance les actions qu'on lui a demandé. Une de ces implémentations permet notamment d'envoyer un mail à chacun des participants lorsque la wave est mise à jour.
- un gadget permettant de faire des sondages est disponibles par défaut.
- celui pour laquelle je vois le plus d'intérêt pour l'instant c'est le gadget de brainstorming.
Ce n'est qu'un début, mais quand cette application évolura, elle pourrait être intéressante.

Une liste des extensions est disponibles ici, une autre , quelques unes ici et encore .
Bon d'accord, il y a des doublons mais au moins la liste est assez complexe.
Ce que j'aime dans le dernier lien, c'est le bonus, je n'avais pas regardé du coté de firefox, mais il existe un plugin firefox permettant de savoir quand la wave est mise à jour.

lundi 30 novembre 2009

Le plugin maven Build Number

Aaaahhhh!
Bon bin on apprend tous les jours.
Il y a un truc que je n'aime dans le plugin release, c'est d'avoir a remplir le numéro de version de la version suivante. Bien sur, le remplir ca se comprend.
Mais quand meme, je me disais bien qu'un plugin me permettant de pouvoir changer de version en lui indiquant quelle nomenclature j'utilise ca pourrait être pas mal.
Et bien visiblement, c'est possible avec le plugin Build Number.
Par exemple, on peut définir la forme que doit avoir un numéro de version :

 {0,number}.{1,number}.{2,number}
 
   buildNumber0
   buildNumber1
   buildNumber2
 
Je trouve ca plutôt pas mal, je viens de découvrir, il ne reste plus qu'à voir comment s'en servir!

Google wave, c'est bien ou c'est pas bien

Une semaine que je suis sur la wave.
Bilan... mais a quoi ca peut servir aujourd'hui ?
Ca pourra surement devenir un outil de travail collaboratif.
Ca pourra éviter de faire des comptes-rendus de discussion s'étant tenu sur msn.
Mais à part ca, force est de constater que pour l'instant l'intérêt de cet outil est plus que limité.

A une wave, comprenez une file de messages, un espace de dialogue, on peut ajouter des plugins.
Ce ne sont que les prémices de ce produit, et par conséquent, les extensions ne sont pas toujours au top.

Concretement, aujourd'hui, c'est de la découverte, il manque quelques fonctionnalités de bases, c'est plus ou moins buggués donc on attend de voir ce que sera la suite!

Pour avoir un autre avis, je vous recommande cet article intitulé : Pourquoi Google wave c'est de la merde, et pourquoi vous l'utiliserez quand meme.

lundi 9 novembre 2009

Le plugin release de maven

Vous souhaitez automatiser la génération de tags dans vos applications Java EE, et vous utilisez maven2 ?
Génial, le plugin release de maven est fait pour vous!
Rien de compliqué, deux phases principales
release:prepare
- vérifie qu'il n'y a aucune différence entre le poste qui build et la gestion de configuration
- vérifie qu'il n'y a pas de dépendances en SNAPSHOT
- change la version des poms en supprimant le 'snapshot'
- pose un tag
- change de nouveau les poms en y mettant la nouvelle version
- commite ce changement

release:perform
- fais un checkout du tag qui est posé par release:prepare
- joue les goals associés au perform (par défaut deploy et site-deploy)


Bon jusque là rien d'extraordinaire... Ok, mais des fois dans un projet multi-modules, vous passez des paramètres.
Or, le plugin release ne répercute pas ces paramètres dans les sous-modules!
Pour pallier à ce problème il faut ajouter -Darguments="vos arguments"

Un exemple :
vous buildez votre projet avec mvn clean install -DmonParametre=uneValeur
et la vous remarquez que lors de la release vous ne retrouvez pas 'monParametre'. La solution sera donc :
mvn release:prepare release:perform -Darguments="-DmonParametre=uneValeur"

C'était tellement évident!

jeudi 22 octobre 2009

Tester la sécurité du web 2.0

Le Web 2.0, ses espaces collaboratifs, sa réactivité... AJAX...
Il existe bon nombre de problèmes de sécurité auxquelles nous ne faisons pas attention surtout avec le web 2.0.
Dans cet article sont recensé quelques types d'attaques et les outils nous permettant de tester la sécurité de nos applications.
Il ne reste plus qu'à les essayer.

Glassfish ou JBoss

Si vous souhaitez comparer GlassFish et JBoss, une partie des réponses pourra vous être fourni dans les liens pointés par l'article suivant.

lundi 19 octobre 2009

La version finale des spécifications Java EE 6

Disponibles depuis quelques heures, la version finale des spécifications Java EE 6 est arrivée.
Vous faites quoi de vos longues soirées d'hiver ?

Il va vous falloir une bonne dose de courage si vous voulez tout lire, au programme :
- les modifications apportées aux EJB
- des évolutions sur la partie Web (servlets, JSF)

mardi 13 octobre 2009

W3AF - un framework pour tester les attaques

Tout est dans le titre, W3AF est un framework permettant d'auditer la sécurité de son site. Il vous permettra de découvrir quelques exploits réalisables sur votre plateforme.
Il semble très peu maintenu mais restera néanmoins utilisable pour quelqu'un qui cherche à se mettre à la sécurité.
L'utilisation semble peu complexe, vous pouvez en avoir un apercu sur une page qui date de 2007.

APIDEO - du chat video dans un site web

Cette fois c'est un exemple en Adobe AIR qui vous est proposé.
Via le framework APIDEO, il est tout à fait pensable d'établir une "conférence vidéo" via un client léger.
Illustrer de schémas et d'exemples de codes, vous trouverez une très bonne première approche de ce framework ici.

Terracotta

J'en ai déjà parlé, Terracotta permet de gérer des caches distribués.
Il y a quelques temps, il y a eu une sorte de fusion, de rachat, d'ehcache par Terracotta.
En rapprochant ces solutions, leur intégration s'en trouve simplifier.

Je vous laisserai lire cet article qui est surtout un présentation, dans laquelle on expose des arguments qui peut être dans le futur, laissent penser que Terracotta pourra rivaliser avec des gestions de cache fournies par Oracle ou JBos.

Le second article est un peu plus précis et introduit la notion de cache de second niveau (second level caching) et présente une configuration dans un cas simple.

mardi 6 octobre 2009

Audit de performance d'une application J2EE

Sur developpez.com est paru aujourd'hui un article très bien fait sur l'audit de performances d'une application Java EE.
Quoi mesurer, avec quels outils, comment ils fonctionnent, tout ceci vous est présenté dans l'article.
En partant de la consommation mémoire, puis en passant par l'optimisation de la base de données, il se termine par quelques bonnes pratiques.
Un article complet et plaisant à lire.

lundi 5 octobre 2009

Sonar 1.11 est sorti

La nouvelle version de sonar est sortie, voici une partie du contenu :
  • nouvelle page de composants
  • Amélioration des métriques de couverture de code
  • meilleure purge de la base. Cela améliore le support de projets multi-modules
A tester!

mercredi 30 septembre 2009

Un simple serveur proxy en Java

Le rôle d'un serveur proxy est d'avoir un seul point d'entrée qui se chargera de relayer les demandes à d'autres serveurs. Il peut aussi se charger de centraliser l'accès à des ressources dont la localisation ne sera connu que par lui.
Il est possible de coder un tel serveur en Java, et ce de manière assez simple.
C'est ce que propose l'article suivant.

vendredi 18 septembre 2009

Passage par valeur ou par référence en Java

Parfois, on ne se pose même plus la question.
Mais parfois, c'est aussi bon de se rappeler les bases.
Alors en Java, passage par référence, passage par valeur, les deux ?

La réponse est ici, simple, claire, précise.

Oracle coherence

Hier soir, j'ai assisté à la présentation d'Oracle Coherence lors de la réunion de mon JUG préféré ;)
Oracle Coherence est un cache distribué en mémoire. On peut y placer des données issues de sources diverses (fichiers, webservices, base) et permettre ainsi un accès à ces données dans des temps réduits.

Via une API propriétaire, l'accès à la base n'est plus direct. Le chargement des données se fait par l'intermédiaire d'une grille de noeuds qui contient un ensemble de données issu de la base. C'est cette grille qui se charge de la synchronisation avec la base.
La création et la suppression de noeuds peut être dynamique et paramétrable.
C'est un peu comme un système de cache très évolué.

Après la présentation, j'ai eu quelques questions, du type :
Est ce que mon application devient dépendante de ce framework ?
Peut-on se détacher de Coherence à tout moment ?
Comment intégrer Coherence à mon existant ?

Et bien après les questions qui ont suivi je suis un peu dans le flou, ne prenez donc pas ce que j'écris comme une source sure.
Toutefois, ce que j'ai cru comprendre me permet de dire que :
- via l'AOP la dépendance à Cohérence peut être limitée,
- mais l'accès aux données doit forcément passé par cette API. Meme dans le cas ou la grille de noeuds n'est pas accessible, et que mon application accède directement à la base, elle passera forcément par le framework,
- Coherence pourra utiliser votre existant (via l'AOP) pour l'accès (en lecture et en écriture) à votre source de données.

La communication entre les noeuds est optimisée mais reste dépendante de la vitesse du réseau. La performance d'une technologie de ce type dépend la vitesse du réseau et la taille des objects que l'on pose dans le cache distribué. La grille Coherence est donc constituée d'un ensemble de noeuds (un noeud = une JVM) qui se voient sur un réseau de type LAN (>= 100 Mbs) et communiquent grâce à un protocole propriétaire appelé Tangosol Cluster Management Protocol (TCMP). Dans le cas ou un client de la grille (ex : un serveur JEE) ne peut communiquer avec celle-ci que sur un réseau de type WAN alors la communication entre le client et la grille ne se fera pas en TCMP mais sous TCP/IP, ceci avec une légère baisse de performance.


Après une bonne nuit de sommeil, j'aurais encore des questions.
La sécurité à rapidement été évoquée, et j'aimerais tout de même trouver la réponse à :
- il semblerait que la manière de communiquer entre les noeuds ne soient pas cryptée,
- est ce que la communication entre les noeuds et ma source de données est cryptable (pour les webservices ou une base) ?
- si le cryptage se fait avant l'envoi, à la grille, est ce qu'à un moment donné mes données sont décryptées par cohérence ?

Ainsi, l'intégration de Coherence ne se justifie pas tout le temps et doit être longuement étudiée. Il est possible que ca ne soit utile que sur certaines parties d'une application.
On remarquera donc que cette solution semble beaucoup plus évoluée que les solutions actuelles mais ne pourrait convenir qu'à de grosses applications dont le temps d'accès est une problématique.

Voici un lien vers la page officielle pour découvrir d'avantage cette offre d'Oracle.

mercredi 16 septembre 2009

Lombok et Naked Object

Il me semblait avoir déjà parlé du projet lombok. Il permet d'écrire encore moins de code grâce aux annotations. Par exemple, en y faisant référence, il n'y a plus besoin d'écrire les getters et setters d'une classe métier.
Bien sur, son utilisation ne va pas révolutionner votre manière de travailler, mais il pourra peut être vous faire gagner quelques minutes.
Si vous voulez plus de détails sur ces possibilités (encore limitées) rendez vous ici, ou encore ici.
Je ne connaissais pas non plus Naked Object qui est un pattern et un framework.
Je vous laisse le découvrir en détails sur infoQ, sur wikipedia, ainsi que sur le site officiel. En dernier lieu, vous pourrez découvrir son intégration avec Maven 2 ici.

Et quand on utilise Naked Objects, lombok peut, une fois de plus, simplifier le code des classes métier. C'est à découvrir ici.

Déclarer un virtual host avec Apache

Il est parfois profitable de pouvoir utiliser deux URLs différentes, pointant pourtant sur la même machine, comme sur un poste de développement par exemple.
Cet article décrit la manière de configurer apache pour y déclarer des virtual hosts. La méthode est décrite sous Windows mais est parfaitement applicable au monde Unix/Linux.
C'était la petite astuce du jour

Terracotta pour Hibernate

Avec la nouvelle version de Terracotta, il existe un plugin gérant le cache des transactions faites via Hibernate.
Très simple à mettre en place, seule une annotation semble suffir.
Je vous laisse découvrir le détail ici.

vendredi 4 septembre 2009

Test de charge

On en apprend tout les jours, et heureusement!
Je viens de découvrir le framework "The Grinder", permettant de faire des charges.

Certains se diront, mais il vient de se réveiller ou quoi ?
Pas forcément, c'est juste un outil que je n'avais jusqu'à présent pas eu besoin d'utiliser, je connaissais tout de même JMeter (de nom... hum hum touss touss).
Bref, le framework The Grinder semble avoir bonne réputation, on pourra lire sur sourceforce "mieux que JMeter, moins cher que LoadRunner".
Visiblement, les autres avis sont plus nuancés, même si The Grinder semble être un produit formidable, il aura des déficiences dans certains cas que n'auront pas ces concurrents. Mais l'inverse est également vrai.

Il ne reste plus qu'à étudier les propositions selon vos besoins, toujours est-il que le retour d'expérience sur ce framework semble bon.
Les liens :
- le télécharger sur sourceforge
- la page projet
- une comparaison avec LoadRunner et JMeter
- une comparaison avec JMeter seulement, mais beaucoup plus récente

Tout savoir sur la gestion de la mémoire en Java

Le garbage collector comment ca marche ?
Ca veut dire quoi si je rajout -Xms au lancement de ma JVM ?
C'est quoi le heap ?
Si vous vous posez ces questions, et bien les réponses sont .
Même si vous ne vous les posez pas, cet article est très intérressant, bien évidemment le titre est un peu pompeux, et vous n'apprendrez pas tout sur la gestion de la mémoire en Java.
Mais il y a certainement quelques informations que vous aviez oublié, ou des petits trucs qui seront nouveaux.

Création de composants évolutifs

A la création de gros systèmes, ou futur gros systèmes, on se dit que la structure originelle ne devrait pas bouger, que l'architecture est suffisamment bien définie pour pallier aux futures évolutions.
Il y a tout de même des règles et des outils qui permettent de vérifier que le développement de l'application va bien dans le même sens.
Vous trouverez un article qui détaille tout ca sur infoq.

mercredi 2 septembre 2009

La revue de code est une étape importante!

Vos développeurs confirmés ont produit une superbe doc de conception, tout y est claire précis, et les développeurs plus jeunes sont passé à l'étape de codage.
Malgré la meilleure volonté du monde, tout le monde fait des erreurs. De ma courte expérience, j'estime pouvoir dire que personne n'est à l'abri de la duplication de code, de boucle dont les conditions pourraient être optimisées, ou tout simplement de méthodes, fonctions, procédures selon vos termes, pas toujours codées dans les règles de l'art.

Le résultat ne va pas forcément se voir tout de suite, mais avec les mois les années, à force d'ajouter des verrues parce qu'on est pressé ou pour toutes les excuses du monde, il faut suivre la qualité du code produit.

Aujourd'hui grâce à des méthodes comme l'intégration continue, il est tout à fait possible d'obtenir un état des lieux à un instant donné.

Malgré les outils, il ne faut toutefois pas, négliger la revue de code "manuelle". Je vous laisse découvrir quelques informations de plus ici.

Comprendre le contenu d'un WSDL

Pour les néophytes en webservices, le wsdl généré peut être difficile à comprendre.
Avec des schémas à main levée et de bonnes explications, cet article vous permettra de comprendre ce fichier qui peut vite devenir inbuvable.

Solution aux attaques de sessions

L'article pointé ici présente certaines facons d'usuper une session.
Les exemples de solution sont basés sur PHP mais le reste est suffisamment théorique pour que les développeurs web utilisant d'autres langages puissent s'en inspirer.

Le billet pointe aussi vers des explications sur les attaques par injection SQL et les failles XSS.

lundi 17 août 2009

D'ou peuvent venir les problèmes de mémoire en Java

On peste parfois contre la JVM, on lui trouve même des bugs. Pourtant, ce n'est pas toujours la seule cause de fuites mémoires.
Cet article en liste quelques unes.

mercredi 5 août 2009

Les applications N-tiers

C'est devenu un standard pour une application web. Nous utilisons des architectures N-tiers.
Cet article vous présente ce que c'est et comment optimiser le développement et la configuration d'une telle application.
Seul point noir, il faudra plutot aller regarder les références pour avoir des détails sur la mise en place.

mardi 4 août 2009

Livres gratuits sur la programmation

Pour tout savoir, du Python à Linux, en passant par Objective C et Lisp.
Voici une liste de livres téléchargeables sur 18 thèmes\langages.
De quoi passer de bonnes après midi sur la plage ;)

jeudi 23 juillet 2009

Chargement des classes dans tomcat

Parfois, on ne comprend pas pourquoi on a des ClassNotFoundException, NoClassDefFoundException. Ou tout simplement, on aime aller au bout des choses et comprendre "comment ca marche".
Sur developpez.com, Régis POUILLER a écrit un article sur le chargement des classes dans tomcat, le partage des librairies... En somme les couches basses du serveur.
Vous pouvez voir le sommaire ici.

jeudi 16 juillet 2009

Le Web asynchrone

Il vaudrait mieux commencer par définir ce qu'est le web asynchrone avant de vouloir en faire une implémentation. Une fois que vous aurez lu cet article, et si vous voulez en apprendre plus sur ICEFaces, JSF et bien ca se passe ici.
Ce sont des articles intéressants mais assez compliqués, qu'il vaut mieux lire à tête reposée.

Détection de collision en Java

Vous êtes en vacances, et vous voulez coder un jeu...
Pour plein de raisons, pour voir comment ca marche, pour voir le temps que ca prend, etc.

Bref, si l'affichage de sprites est à la portée de tous, une des parties complexes dans la création de jeu vidéos, c'est l'interaction avec les éléments du jeu.
Par exemple, si votre personnage peut traverser les murs, les tables ou tout autre objet, ca risque de paraitre un peu bizarre. Pour cela, il est possible d'utiliser des moteurs 3D.
C'est ce que vous propose de découvrir l'article suivant.

JavaFx mobile, Java ME, Messaging API (JSR 205)

JavaFX s'interface très bien avec Java Mobile Edition.
Après une introduction sur l'API Wireless Messaging, cet article vous propose de créer une application pour téléphone mobile en JavaFx et avec Netbeans, étant capable d'envoyer et de recevoir des sms/mms.
C'est pas génial ca, c'est quand même mieux que l'iPhone SDK non ?

mercredi 15 juillet 2009

Programmer c'est comme le code

Programmer, on arrive plus ou moins bien suivant plusieurs facteurs, mais les bases, le développeur est censé les avoir.
On a passé N années à étudier l'informatique, un langage en particulier, et il y a des choses simples qu'on oublie facilement. C'est peut être un peu comme le code de la route, il y a des évidences qu'on oublie vite.
Pour vous remémorez certains de vos cours de Java, voici un description des différentes sous-classes de Collection.
Allé on a qu'a dire que c'est un devoir de vacances ;)

vendredi 3 juillet 2009

Canonical propose du cloud computing

Tout est dans le titre, l'entreprise qui produit Ubuntu se lance dans le cloud computing.
Plus d'infos sur developpez.com.

mercredi 1 juillet 2009

Sonar, PMD et Checkstyle

Je suis un fervent partisant d'Hudson et Sonar, pour l'integration continue.
La combinaison de ces deux outils permet d'obtenir un build, les métriques associés à ce build, et de pouvoir suivre l'évolution dans le temps.

Il n'y a pas si longtemps, un collègue voulait pouvoir utiliser les règles PMD et Checkstyle définit dans son pom. Après lui avoir expliqué, plus ou moins bien, comment Sonar fonctionnait, il dû se résigner.
Mais voilà, il n'est pas le seul à se poser la question, puisqu'une telle demande sera résolu dans Sonar 1.11. Pour plus d'infos, le bug tracker est ici.

développement Android sous Ubuntu

Les développements d'applications iPhone vous tente, mais le système n'est pas libre, c'est même impossible de l'installer sur Linux, argh!
Allons donc voir du côté du concurrent, Android, et là oh miracle, ca peut marcher facilement.
Suivez le guide pour savoir comment ca se passe.

JavaFx - du Code et un benchmark

JavaFX fait son petit bonhomme de chemin, même si beaucoup n'y croit pas, on ne va pas s'empecher de coder pour autant.
Il y en a même qui prenne le temps de comparer les perfs avec Flex.

Plus ca avance, plus je trouve la programmation assez simple, mais il y a un truc que je n'aime pas c'est le temps de chargement de l'application. Il n'y a qu'a voir le code de la gallerie photo, ce n'est surement pas comparable, mais la même chose avec un framework Ajax va beaucoup plus vite.
Plus d'infos en cliquant ici.

lundi 29 juin 2009

Le design pattern Interpreter

Le design pattern Interpreter offre une représentation objet de la grammaire d'un langage.
Vous voulez en savoir plus, en voici une description succinte, avec un diagramme UML.LienMais vous trouverez ici, un article plus détaillé avec le code d'un parser expliqué de bout en bout.

Les bugs dans Java

L'erreur est humaine, on peut donc penser que notre JDK préféré n'est pas exempt de bugs.
Vous pouvez trouver la liste des bugs qui ont recu le plus de vote sur le site de Sun.
Pour n'en citer que quelqu'uns :
- Semantics of external process is not defined in JLS
Ce bug regroupe de nombreux problèmes entre processus.
- ClassLoader.loadClass() throws java.lang.ClassNotFoundException: [Ljava.lang.String; in JDK 6.0
- Control-C ne termine pas les processus Java "forké"(w2k, wnt)

Ce ne sont pas forcément les 3 premiers de la liste, ce sont ceux qui m'interpellent le plus.

jeudi 25 juin 2009

Stresse ton appli

JConsole permet d'obtenir pas mal de stats, mais Apache JMeter, permet de configurer des groupes de Thread pour jouer plusieurs fois des requêtes HTTP.
Une petite étape de configuration de JMeter, et du browser, et on devrait pouvoir s'en sortir.

C'est un peu confus, car je découvre JMeter et je n'ai pour l'instant jamais eu à l'utiliser.
Vous voudrez donc sans doute avoir plus d'infos, ca se passe .

Développement IPhone

Vous venez d'acquérir votre nouvel iPhone, vous en êtes plutôt fier, et vous vous dites, tiens si je développais une petite application pour voir comment ca marche.
Après vous être enregistrer sur apple dev center, vous avez télécharger l'ide et le SDK(une image qui fait plus de 2.5Go), vous vous dites et maintenant ?
Et bien lancez vous dans l'apprentissage d'objective C, et suivez l'article qui vous donnera quelques pistes.
Bon courage!

P.S : celui qui c'est exécuter le SDK sous Linux m'intéresse ;)

mardi 23 juin 2009

lambdaj - gérer vos collections d'une manière différente

Ils vous arrivent souvent d'avoir à traiter des collections.
Meme avec les évolutions du jdk, et le foreach, vous trouvez cette tâche répétitive.
Et bien pensez à lambdaj.

Juste un exemple pour vous donner envie d'aller voir ce que c'est, comment faites vous pour affecter une valeur à tous les objets d'une liste ?
Voici une nouvelle manière de le réécrire avec lambdaj :

List<Person> personInFamily = asList(new Person("Domenico"), new Person("Mario"), new Person("Irma"));
forEach
(personInFamily).setLastName("Fusco");

Ca marche avec le tri, la récupération d'un des membres des objets de la liste, bref, à découvrir, ce sont peut être des petites choses comme ca qui font gagner du temps.

dimanche 21 juin 2009

Les patterns de securité

Quel framework va bien pouvoir nous aider à sécuriser nos développements ?
3, 2, 1... SPRING Security, yeah!
Trève de plaisanterie, je crois qu'on pourrait passer une vie entière à apprendre tout ce que Spring permet de faire. Cette fois-ci, voici une vidéo de présentation (en anglais) des patterns de sécurité, et les dix dernières minutes présentes quelques-unes des annotations utilisé par Spring security.
Vous ne souhaitez pas regarder cette vidéo, mais vous voulez tout de même vous informez, regardez la description des patterns sur le coresecuritypattern.

Have fun

Faire un jeu en JavaFX

JavaFx 1.2 est sorti il y a quelques semaines déjà, et on peut remarquer une certaine augmentation des performances.
Ainsi, certains choisissent cette technologie pour rapidement créer des jeux simples. Leur choix est détaillé ici.
On remarquera dans cette nouvelle version, la sortie d'un vrai plugin pour eclipse, même si Netbeans reste l'environnement le plus approprié pour le développement.
Cette sortie s'accompagne aussi d'une liste de widgets qui facilite le développement, qui devient aussi simple qu'une appli Swing.
Vous découvrirez ici les 10 fonctionnalités phares et après avoir lu tout ca, puisque vous serez conquis, dirigez vous le site officiel et ses nombreux tutoriels.

mercredi 17 juin 2009

7 étapes pour corriger un bug

Debugger est une étape plus que fréquente en programmation. Corriger des anomalies est une grosse partie du travail.
L'article décrit 7 étapes pour corriger une erreur, et d'après l'auteur, devenir un meilleur programmeur.
Les étapes sont :
- Identifier l'erreur (la reproduire et valider le scénario de reproduction)
- La trouver (grâce aux logs, et au debugger)
- Analyser
- Prouver l'analyse
- Couvrir les effets de bords (par des tests unitaires)
- Corriger
- Valider

Et voila, ne reste plus qu'à appliquer ces méthodes.

mardi 16 juin 2009

Ca y est, on sait! Opera Unite is coming

Opera créait le buzz depuis plusieurs jours. Avec une seule page où il était marqué qu'ils allaient réinventer le web.
Tout le monde se posait nombre de questions, et la réponse est apparue aujourd'hui.
Voici les mots de Lawrence End, product analyst pour Opera Software :

"Opera Unite est une technologie unique qui permet a chaque ordinateur ou périphérique sur lequel tourne Opera de devenir un serveur web. En d'autres mots, votre ordinateur (qui fait tourner Opera Unite) est partie intégrante de la toile, plutôt que de simplement interagir avec lui, et c'est quelque chose que tout le monde peut utiliser. Avec Opera Unite, chaque utilisateur , même non-technicien, peut mettre à disposition du contenu directement depuis son pc, grâce a des applications intuitives.
Avec Opera Unite, on donne une chance aux développeurs de produire des applications (connues sous le nom de Opera Unite services) qui lient directement l'ordinateur des gens ensemble, donc vous pouvez être connecté avec un ou plusieurs amis en même temps. Tout se passe via le navigateur, aucun autre logiciel ne doit être téléchargé, et ca marchera partout ou Opera fonctionne (Windows, Mac, Linux, les nouveaux modèles de téléphones portables et autres périphériques). Opera fournit la platforme et vous fournissez les applications, la seule limite de vos créations est votre imagination."

Et bien que de promesses, en gros un serveur web à l'intérieur du navigateur!
Attendons de voir ce que ca va vraiment donner à l'usage.

L'article original et beaucoup plus complet est disponible ici.
Le site officiel d'Opera Unite, c'est par .

Spring Security 3.0.0M1

Une nouvelle release de Spring Security est sortie, et cette page vous montre comment l'utiliser et ce qu'il apporte.
Il est aussi intéressant de remonter sur ses articles précédents, puisque l'auteur à commencer une application qu'il appelle Spring Finance, pour gérer les comptes de la Famille Simpsons, tout en utilisant les nombreuses possibilités du framework Spring.

Vous voulez apprendre linux ?

Ca y est vous avez fait le grand saut. Plus de windows sur votre PC, vous êtes passé à Linux.
Peu importe la distribution, Ubuntu, Debian, Fedora, Mandriva et consort vous ont séduits.
Une fois installé, vous arrivez à faire les choses de la vie courante, aller sur internet, ouvrir un document Word et l'imprimer. Bref, c'est génial!

Tellement génial que vous vous voulez aller plus loin encore dans l'apprentissage de votre nouveau système d'exploitation. Ne cherchez plus, une liste de tutoriaux est mis à votre disposition.

lundi 15 juin 2009

Patcher un programme

Si vous vous demandiez comment patcher un programme dont vous n'avez pas le code source.
Et bien sur cette page, on vous explique la marche à suivre.
Amoureux de l'assembleur et du debug, bon courage!

Sortie Sonar 1.9

On l'apprend sur linuxfr, Sonar 1.9 est sortie.
Cet outil permettant d'obtenir des métriques sur un code source Java. Facile à regarder, un peu moins à comprendre, ils ont décidé de réécrire la partie relative au calcul.
Toutefois, même si cette version apporte beaucoup d'améliorations, le moteur de calcul a été ré-écrit. Ce qui pourrait poser problème si vous souhaitiez faire un simple upgrade.
Il sera donc plus simple de partir d'une nouvelle installation.

jeudi 11 juin 2009

Incompatibilité entre Subversion 1.6 et 1.5

Je pense que Subversion est le système de gestion de versions le plus utilisé dans le monde Open source. Sa dernière release (1.6.2) est tout récente elle date du moi de mai 2009.
Seulement la version 1.6 ne semble pas rétro compatible à 100% et certains rapportent les problèmes qu'ils ont pu rencontrer.
Le problème sera d'autant plus important si votre client SVN, comme Tortoise, n'est pas en adéquation avec la version de votre serveur.

mercredi 10 juin 2009

Une introduction simple à SOA

Cet article est traduit de l'anglais. Vous trouverez l'article original ici.

Les entreprises utilisent des systèmes informatiques afin d’améliorer leurs opérations, en terme de productivité, de justesse, de sécurité, de coût, etc. (bien sûr, certains de ces points ne sont pas interdépendants). Mais le problème est qu’il n’y a rien de prédéfini sur la manière d’utiliser ces systèmes. Et si les logiciels ne sont pas utilisés correctement, vous n’en verrez jamais le bout ou vous rendrez vos opérations plus complexes et inefficaces.
Ce qui arrive fréquemment c’est que ce sont des parties individuelles et isolées du business qui seront automatisées en utilisant un système informatique. Ca peut aussi être des parties étrangères comme la relation client, le management RH, l’inventaire, tout comme des parties plus petites et plus spécifiques. Les entreprises peuvent utiliser des systèmes commerciaux comme les CRM, SCM et les systèmes de contrôle d’inventaire pour automatiser certaines de ces parties. Elles peuvent utiliser des systèmes développés en interne ou externalisés pour des tâches business plus spécifiques. A la fin, on obtient des systèmes indépendants qui fonctionnent isolément pour exécuter des tâches propres à l’entreprise. Cette méthode fonctionne bien et peut très bien introduire des améliorations dans le processus métier. Mais si on y réfléchit bien, il y a un fort potentiel pour plusieurs améliorations, qui ne peuvent être atteinte qu’en allant une étape plus loin. C’est d’intégrer les systèmes existants en les faisant interagir.Comment peut-on en arriver là ? Il existe beaucoup de systèmes développés par différents éditeurs ainsi que des systèmes propres, concus pour un besoin particulier. Eventuellement, ils ont des interfaces différentes et différents formats de donnée. Comment pouvons-nous établir un flux de contrôle/données parmi les systèmes pour les faire fonctionner entre eux. Attendez, c’est la qu’SOA peut vous aider! Alors, comment SOA peut être utilisé dans un environnement particulier qui varie selon la nature du problème, les besoins d’évolutions et bien d’autres facteurs. D’une manière simple, il n’y a aucune règle fixe sur la manière de l’utiliser. Mais, nous allons utiliser un exemple simple pour expliquer comment appliquer SOA. Considérons une librairie en ligne. Elle a un site web pour parcourir et commander des livres, un inventaire, un système d’expédition, de paiement, etc. Une façon simple de concevoir ce système de vente de livres est de créer un programme orienté web (on pensera aux JSP/servlets), qui accèdera aux systèmes externes et exécutera les opérations métiers. L’un des problèmes de cette approche est que le programme orienté web doit accéder à chacun des systèmes en utilisant une interface spécifique, qui requiert des modules client séparés pour chacun de ces systèmes. Et s’il y a besoin d’effectuer un simple changement sur une opération, il faut faire des modifications et redéployer l’application. La pire des parties arrive bientôt. Considérons que nous voulions créer un autre processus qui utilise l’application. Alors, il faut en écrire une nouvelle application. Même si, nous étions parti sur une application de type 3 tiers, en séparant l’interface de la logique métier, il n’y aura aucune différence. Cette Situation est illustrée ci-dessous.


Comment SOA peut faire évoluer ce scénario ? A la première étape d’SOA, nous avons besoin d’identifier les unités de fonctionnement de notre systèmes afin d’en faire des services. Pour simplifier, on peut dire que chaque système (inventaire, paiement, etc…) est un service simple. Mais dans la vie courante, on pourrait identifier plusieurs services au sein d’un seul ou, exposer des fonctionnalités de plusieurs systèmes comme un seul service. Une fois les services identifiés, on doit les implémenter comme des services standards. Une façon de faire, la plus recommandée, serait de créer des web services. Il existe beaucoup de produits qui vous aideront à créer et déployer des web services et à automatiser ce processus à plusieurs niveaux. WSO2 Web Services Application Server peut être très utile dans cette phase d’implémentation de SOA. Ces web services devraient remplacer l’ancien système (en cachant leur complexité interne) et exposer, les fonctionnalités attendues ainsi que leur définition. Une fois cette étape franchie, nous disposons d’un ensemble de services, dont la définition des fonctionnalités est connue (en utilisant WSDL) et qui communique en utilisant des protocoles connus (comme SOAP).

La prochaine étape est de les faire marcher ensemble pour exécuter des opérations métier. Pour cela on peut utiliser les Business Process Management Systems (BPMS). Un processus métier se définit en spécifiant comment contrôler le flux entre les différents systèmes (et utilisateurs) et les données utilisées en entrée et sortie de chaque système. Une fois que le processus métier est défini, on peut le déployer dans un BPMS qui l’exposera en tant que service. Donc, la seule chose que notre interface web a à faire est d’appeler le web service dans notre BPMS avec les paramètres requis. De plus, il existe plusieurs solutions de BPMS, qui peuvent être utilisés pour mettre en place cette solution. Particulièrement, le WSO2 Business Process Server fournit nombre de fonctionnalités pour simplifier le déploiement et la gestion des processus métier.

Maintenant, examinons comment cette approche basée sur SOA améliore le processus par rapport aux anciennes méthodes. Premièrement, nous avons standardisé les interfaces de chacun des systèmes. Cependant, d’autres systèmes peuvent communiquer avec les notre grâce au même protocole (même modules client). Et leur fonctionnalités sont définies dans un format prédéfini (WSDL), donc n’importe quel système externes peut comprendre ce qu’ils font. Puis, nous avons bougé la logique métier vers un BPMS. Les processus sont définis en utilisant des fichiers plats (fichiers textes) dans le BPMS. Il est donc très facile de changer et redéployer les processus métier selon les demandes de changements. La plupart des BPMS disposent d’interfaces graphiques pour amplifier la simplification de ce processus. L'introduction d'une nouvelle activité économique est également plus simple dans cet environnement. Il faut seulement écrire un nouveau processus et le déployer dans le BPMS. Il sait déjà de quelle manière communiquer avec les systèmes existants (puisque ce sont des webservices) et toute l’infrastructure déjà en place. Ceci est décrit dans le diagramme ci-dessous.




C’est un exemple simple de la manière dont SOA peut vous aider à améliorer vos opérations. Comme il est dit plus haut, l’application d’SOA varie selon des scénarios et des conditions.

mardi 9 juin 2009

N'utilisez plus les archetypes maven

Allé premier billet après le retour de vacances, youh ouh!
Les archetypes maven créent des projets maven dont la structure est assez vieillote.
Toutefois les archetypes disponibles via codehaus respectent des standards plus récents.

Si vous voulez en savoir plus, regarder cette page.

mercredi 6 mai 2009

Connaissez la provenance de vos codes sources

Avec l'utilisation massive de framework open source, êtes vous toujours en règle.
Vous voulez le vérifier ?

Programmez.com vous donne la manière de faire, la réponse est ici.

mardi 5 mai 2009

SpringSource rachète Hyperic

Avec ces nouveaux dmServer and co, on remarquait que Spring voulait grandir et introduire un nouveau serveur d'application.
Aujourd'hui on apprend qu'ils rachètent Hyperic, solution open source de monitoring de gestion et de gestion des performances.

Plus de détails à cet endroit.

Vous serez obligé d'y passer!

Ubuntu on ne la présente plus, ce Linux basé sur Debian , tellement simple à installer et à utiliser.
C'est l'une des distributions les plus utilisées, et elle a fait beaucoup de petits.
Parmi les plus connues, on citera :
- KUbuntu (qui utilise KDE plutot que Gnome)
- XUbuntu (pour XFce)
- EdUbuntu (pour l'éducation)

j'en passe et des meilleurs, voici la liste de 20 dérivés d'Ubuntu.

mercredi 29 avril 2009

Les performances en Java

Voici quelques conseils pour améliorer les performances de votre code en java.

La création d'objet, JDBC, les StringBuilder à la place des StringBuffer.
En effet, depuis Java 5, les StringBuilder sont apparus, ils ne sont pas thread safe, et donc plus performants dans la majorité des applications. Vous trouverez un article plus détaillé sur cette particularité ici.
Pour information, il en va de même pour les HashMap et les HashTables.
A quoi s'ajoute de petites informations sur le tuning de la JVM.

Et si vous voulez mesurer vos performances dirigez vous vers Perf4j.
A bon entendeur

jeudi 23 avril 2009

La 3D ca déchire!

Surtout quand c'est dans un navigateur web, la 3D ca claque!
Google met à dispo une librairie qui demande encore beaucoup d'évolutions, mais est néanmoins prometteuse, O3D.
Plus de détails sur cette page, ou sur le google labs, surtout quand on regarde cette vidéo et que ca marche dans un navigateur.
Seul point noir, l'installation n'est pas aussi facile sous Linux que sous les autres OS... grrr!

Une autre utilisation du String.valueOf

Chaque application se confronte à la fameuse NullPointerException. Un cas de test oublié, une erreur mal gérée et c'est le drame.
Certains cherche donc des moyens pour les éviter, et peut être que la solution viendra de Java 7.
En attendant, il est possible de contourner le problème de diverses manières, notamment en utilisant String.valueOf().
Je vous laisse découvrir l'article.

mardi 21 avril 2009

Oracle rachète Sun

Après des semaines de tentatives de rachat, IBM s'était résigné. Et on apprend hier que c'est Oracle qui rachète Sun pour 7 milliard de dollars!
Alors tout le monde se demande ce qu'il va advenir de :
- MySQL au profit d'Oracle,
- Glassfish, Oracle a racheté BEA (Weblogic) il y a quelque temps,
- Netbeans, Oracle est un membre de la communauté Eclipse.

quelques liens sur cette information :
- le site de sun,
- le monde informatique,
- les réponses d'Oracle,
- le magit

jeudi 16 avril 2009

Solution de gestion de cache

Vous cherchez à gérer un cache pour vos pages web, vos accès aux données et tout ce qui peut être mis en cache...
Voici une étude comparative qui vous permettra de choisir entre plusieurs solutions.

SOA et JavaEE 6

Vous souhaitez vous initier à SOA, voici un très bon article sur javaworld, qui sur 6 pages,
présente une introduction aux SOA avec JavaEE 6, et se termine par un petit point sur l'utilité des DAO.
On pensera donc à l'utilisation des annotations pour faciliter les développements et la compréhension.

Embaucher un vrai technicien

En france, peu d'entreprises demande de passer des tests techniques. Ce qui est dit dans l'article est vrai. Il suffit de placer quelques mots clés, et le recruteur peut etre plus ou moins convaincu.
Maintenant s'il était décidé de faire passer ce genre de tests, quelques questions faudrait-il poser?

mardi 14 avril 2009

Le stress rend les programmeurs plus idiots

D'après une étude, les programmeurs seraient un peu plus nouilles sous l'effet du stress.
Disons que ca c'est le titre, après on comprendra plutôt que cette étude tend à prouver que l'on obtient de meilleur résultat sans stress.
Ce qui m'interpelle, c'est le commentaire de la personne qui disait prendre des anti-dépresseurs!
Ouaouh!
Quand on en arrive là, ca va loin, trop loin... sortez, bougez, détendez-vous...

jeudi 9 avril 2009

Tutoriel OSGi

Et oui encore...
Cette fois-ci l'article présente un tutoriel pour profiter d'OSGi avec un simple WAR.
Il faudra vous munir d'Eclipse Ganymede et Tomcat pour pouvoir le suivre. Bien sur cet article se base sur Equinox qui est l'implémentation du framework OSGi de la fondation eclipse.

Et si vous vous demandez à quoi OSGi sert, voilà la réponse.

Linux Cheat Sheets

Puisqu'avec le post précédent, vous avez été convaincu par Linux et le monde open-source,
vous voulez en apprendre plus, être encore plus autonome, et défier la console!
Et bien pour ca, je vous propose de regarder cet article.
Ce sont des articles un peu techniques, qui vous permettront de vous familiarisr avec la sécurité, les lignes de commandes et l'administration.

enjoy ;)

10 livres open source pour débuter

Si vous voulez débuter avec linux, que ce soit pour un pc de bureau ou pour du développement,
ces quelques livres pourraient bien vous aider.
Vous trouverez sur cette page, des références à :
- Ubuntu, l'une des distributions les plus simples à prendre en main
  • création d'utilisateurs
  • installation de logiciels
  • comment faire marcher vos périphériques
- Blender, si la 3D vous intéresse
- la programmation sous linux

jeudi 2 avril 2009

OSGi et Spring

OSGi, c'est une des nouvelles tendances.
Pour l'instant j'en suis au stade de la découverte, je regarde ca d'assez loin.
Et ce blog est surtout là pour ca, conserver un ensemble d'informations que je trouve intéressant.

Voici une introduction à OSGi et Spring, pour l'instant il n'y a que deux parties mais il y aura certainement une suite. En tout cas, c'est bien fait et très bien fait :
- OSGi and Spring, Part 1: Build and deploy OSGi bundles using Apache Felix
- OSGi and Spring: Part 2: Build and deploy OSGi as Spring bundles using Felix

Les constructeurs un point noir ?

En Java, avant de pouvoir utiliser les méthodes d'un objet, il faut l'instancier.
Cet étape passe par un appel au constructeur. Or, il y a bon nombre d'exemples qui font dire que le constructeur n'est pas une solution complète, et laisse parfois l'objet dans un état de "semi-initialisation".
On pense notamment on méthode qui utilise des objets membres, que l'on affecte par des setters.
Pour plus détails, je vous laisse lire cet article, et surtout l'article qui donne plus de détails.

modularisation, reutilisabilité

Voici trois articles très intéressants qui tourne autour d'OSGi.
En premier vous trouverez une introduction, qu'est ce qu'OSGi ?
Le second parle de la modularisation, et le dernier de la réutilisabilité.

Il faut tout de même avoir quelques notions sur ce qu'est OSGi, Spring DM Server,
mais les liens externes vous apprendrons tout ca.

SiteMesh

SiteMesh est un gestionnaire de layout pour pages web et un framework de décoration qui utilise le pattern Decorator.
Le header et le footer, par exemple, sont définis dans des JSP différentes, et il n'est plus nécessaire de les insérer dans chacune de vos JSP.
On l'oppose, mais on peut aussi l'additionner au Tiles de Struts.
Je vous propose de regarder l'archetype d'un projet Struts 2 utilisant SiteMesh.
Vous trouverez à cet endroit des détails sur le plugin Sitemesh pour Struts 2.

Les différences entre Tiles (qui se base sur le pattern Composite View) et SiteMesh, sont décrites sur le site de Tiles.
Et vous pouvez vous tournez vers des tutoriaux, pas forcément récents, mais intéressants pour débuter :

Je n'ai, pour l'heure, pas beaucoup de détails, je débute dans l'utilisation de ce framework.

jeudi 26 mars 2009

Maven 2.1.0

Maven est sortie en version 2.1.0.
La release notes est disponible ici.
Le téléchargement peut se faire à partir de .

Bonne journée ;)

jeudi 19 mars 2009

Introduction au load balancing

Le load balancing est une technique qui permet de répartir la charge entre plusieurs machines, selon certaines règles, un "load balancer" bascule la charge sur l'un des serveurs contenu dans la ferme.
Si vous voulez en savoir plus, lisez cet article et les liens qu'il contient.

JSR 203 : les entrées/sorties en Java 7

La gestion des fichiers et répertoires a évoluée avec Java 7, on trouve des exemples de code sur cette page.
Tout semble vraiment simplifié, l'ouverture/fermeture de fichiers, le déplacement ou la visite dans un système de fichiers.
Il y a même une gestion d'évènements pour scruter les modifications d'un répertoire.

mercredi 18 mars 2009

Les topics de l'artchitecture logiciel en 2009

Voici un point de vue sur les topics dont on devrait entendre parler en 2009.
La majorité des sujets sont connus depuis un long moment, on retiendra :
- le travail collaboratif,
- le cloud computing,
- les mashup,
- les langages dynamiques.

Une petite astuce

J'ai testé le logiciel Fences ce matin. Les postes de développement au travail sont sous Windows.
J'essaie d'organiser mon bureau par répertoire, parfois en créant une nouvelle barre de tâches,
et puis je suis tombé sur un article présentant Fences.

Ca ne révolutionnera pas votre facon de travailler, mais ca a son petit plus.
Tout est organiser par boîte, vite visible, vite trouvable. C'est un petit soft très sympa.
Les avantages :
- l'organisation,
- pouvoir cacher une ou plusieurs fences,
- on peut modifier la couleur, la transparence.

Les inconvénients
- on ne peut pas imbriquer des 'Fences',
- on ne peut pas déplacer les icônes comme on veut a l'intérieur d'une Fence,
- on ne peut pas réduire une Fence, on peut juste la cacher.

mardi 17 mars 2009

Les performances en Java

Comment tester ou mesurer les performances de son applications ?
L'article suivant présente DynaTrace, les interfaces ont l'air claires, les résultats faciles à trouver, dommage c'est payant.
Bon et bien il ne reste plus qu'à coder proprement et comprendre les tenants et aboutissants, ca demande du travail! Alors commencer par lire l'article sur la fonction 'Escape analysis' de la JVM.

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.

mardi 3 mars 2009

Renforcer son serveur Ubuntu

Aujourd'hui, une équipe de développement quelqu'elle soit, se doit d'avoir un gestionnaire de configuration. Voici un article qui présente de manière très simple comment installer et configurer SVN sur Ubuntu.
Serveur auquel Webmin sera ajouté. Webmin est une interface d'administration utilisable dans un navigateur web.

vendredi 27 février 2009

Sortie de Spring 3.0M2

Il y a deux jours la release 3.0 milestone de Spring est sortie.
Je vous laisse découvrir les nouveautés qu'elle apporte à cette adresse.

jeudi 26 février 2009

Javascript c'est quand meme super puissant!

Alors là, je suis impressionné!
Ajax et le web 2.0 sont/ont été des révolutions dans le monde du web.
L'interaction avec l'utilisateur s'en trouve grandit. On fait de plus en plus de choses en se soustrayant au système d'exploitation sur lequel tourne notre ordinateur.

Mais alors là, pousser l'utilisation du javascript afin d'obtenir les résultats disponibles dans cet article, je n'aurais jamais cru. Ce qui m'impressionne c'est la fluidité, maintenant à vous de juger.

certification Java 6

Un jour peut être passerais-je une certification Sun, Java developer, Java Enterprise Architect, il y en a pléthore.
Si vous êtes intéressé , pour voir les questions qu'on y pose, pour vous tester, voici quelques références :
- un guide détaillant les différents types de certifications (qui date de 2005)
- un pense-bête sur ce qu'un développeur doit savoir
- des exercices (rangé par ordre de numéro de certifications, toutes ne sont pas présentes)
- d'autres exercices (il faut s'enregistrer et une partie est payante)

mercredi 25 février 2009

Spring security

Comment se passé de Spring. Ce framework fait de plus en plus de choses, AOP, DAO, Security, MVC, OSGi, et j'en passe.
Aujourd'hui c'est une introduction au module security que j'ai trouvé.
En deux étapes, il présente l'utilisation pour une procédure de connexion/déconnexion.
Voici les liens :
Spring security login and logout form
Configuring Spring security

Le futur des outils de build

On fait beaucoup de reproches à Maven, tout autant qu'à Ant d'ailleurs.
J'attends de voir ce que proposera Maven 3, mais d'autres alternatives émergent.
Elles sont décrites succinctement ici, page dans laquelle on reparle de Gradle, outil pour lequel j'avais déjà pointé un article en juin 2008.

Il semblerait que Gradle prend l'ascendant sur ses "concurrents", mais son utilisation en production, donc sur des gros projets multi-modules, semble pour l'instant osée.

mercredi 11 février 2009

Les patterns J2EE

En plus des design patterns associés à la conception objet,
un ensemble de patterns se dégage des principes J2EE, en voici la cartographie :



et une courte description de l'ensemble de ces patterns (en anglais pour l'instant, désolé) :

Presentation Tiers Patterns
Intercepting Filter : Facilitates preprocessing and postprocessing of a request
Front Controller : Provides a centralized controller for a request handling
Context Object : Encapsulates state in a protocol independent way to be shared throughout your application
Application Controller : Centralizes and modularizes action and view management
View Helper : Separates processing logic from view
Composite View : Creates a composite view from subviews by separating content and layout management
Service to Worker : Invokes business processing prior to view processing
Dispatch View : Invokes View Processing Prior to business processing

Business Tier Patterns
Business Delegate : Encapsulates access to a businness service
Service Locator : Centralizes lookup logic for business services anc components
Session Facade : Expose coarse-grained services to remote clients
Application Service : Aggregates behavior to provide a uniform service layer
Business Object : Encapsulates business data and logic
Composite Entity : Implements persistent business objects using entity beans
Transfer Object : Carries data accross a tier
Transfer Object Assembler : Assembles a transfer object from multiple data sources
Value List Handler : Manages search and iteration of large set of results

Integration Tier Patterns
Data Access Object : Abstracts and encapsulates access to persistent store
Service Activator : Provides asynchronous access to one or more services
Domain Store : Provides transparent persistence for business objects
Web Service Broker : Exposes one or more services using XML and web protocols

Tout ceci est extrait du site corej2eepatterns et si vous souhaitez appréhender le monde J2EE, des tutoriaux sont disponibles sur le site de sun.

mercredi 14 janvier 2009

Tutoriel CXF

CXF est un framework qui facilite le développement de webservices qui se base sur XFire.
Il utilise les annotations, ce qui simplifie grandement le codage.

Je n'ai trouvé rien de mieux que le user guide comme tutoriel :
- coté serveur en Java (le haut de la page, vous permettra de partir d'un wsdl existant),
- comment utiliser Spring pour les webservices avec CXF,
- développer un client.

Si vous voulez enfoncer le clou sur l'intégration de Spring dans le développement de webservices avec CXF, voici comment développer le côté serveur et le côté client. C'est détaillé, lisible et très compréhensible.

On pourra aussi noté un tutoriel résumant l'essentiel, disponible ici. Et du même auteur, cet article présente les aspects sécurités des webservices avec Spring.

Bien sûr ce ne sont que des exemples simples, néanmoins ils sont complets et permettent de prendre rapidement en main le framework.

Etant parti d'une version standard d'eclipse, je regrette cependant :
- ne pas pouvoir générer le fichier Spring,
- la génération du wsdl incorrecte.

J'avais juste besoin d'un point de vue rapide sur ce framework, j'ai juste voulu développer un client et un serveur.
Il faudra tester la version STP(SOA Tools Platform) d'eclipse, que je ne connaissais pas jusqu'alors, afin de voir une meilleur integration de CXF dans eclipse et corriger les deux
points noirs cités précédemment.
On pourra aller voir cette page pour partir d'un nouvel eclipse, ou de celle-ci pour faire un update d'europa.

lundi 12 janvier 2009

Liens vers l'architecture logiciel

Un tout petit billet pour pointer vers deux sites dont le sujet principal est l'architecture logiciel :
- http://www.bredemeyer.com/links.htm
- http://softarc.blogspot.com/

Trouver un jar

Il arrive parfois de tomber sur une classe, et d'avoir besoin d'isoler le jar d'où elle provient.
Avec eclipse, c'est plus ou moins facile.
Il y a encore plus simple avec le site jarfinder!

Juste une petite astuce, qui peut parfois, faire gagner quelques précieuses minutes.

L'injection de dépendances rend le code illisible

Ah! Ah! alors... hein?
J'utilise beaucoup Spring, comme dans certains des précédents articles,
je vois surtout une multiplication de fichiers XML qui sont trop peu amener à bouger.
Où est donc l'intérêt d'utiliser un tel framework lorsque le contenu du fichier XML ne changera pas dans les 2, 3, peut être 4 prochaines années voir plus.

Voici des arguments de plus pour minimiser l'intérêt de l'injection de dépendances.

5 frameworks a connaitre

Sans en citer un seul, l'article donne 5 points pour lesquels il existe un framework
qu'il est bon de connaitre pour simplifier notre travail.
Voici les 5 points :
- ORM, mapping objet relationnel,
- Tiered, permet de diviser les couches (présentation, business...),
- Cache, permet de gérer les caches (afin d'éviter les multiples accès aux bases ou autres ressources),
- Erreur et trace, pour logguer, tracer (pour moi, cela permet surtout de faciliter la correction d'anomalies)