mardi 15 décembre 2009
Spring AOP
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
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
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 là, quelques unes ici et encore là.
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
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 :
Je trouve ca plutôt pas mal, je viens de découvrir, il ne reste plus qu'à voir comment s'en servir!{0,number}.{1,number}.{2,number} - buildNumber0
- buildNumber1
- buildNumber2
Google wave, c'est bien ou c'est pas bien
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
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
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
lundi 19 octobre 2009
La version finale des spécifications Java EE 6
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
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
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
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
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
- 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
mercredi 30 septembre 2009
Un simple serveur proxy en Java
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
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
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
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
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
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
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
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 là.
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
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!
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
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
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
Cet article en liste quelques unes.
mercredi 5 août 2009
Les applications 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
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
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
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
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)
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
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
Plus d'infos sur developpez.com.
mercredi 1 juillet 2009
Sonar, PMD et Checkstyle
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
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
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
Vous voulez en savoir plus, en voici une description succinte, avec un diagramme UML.Mais vous trouverez ici, un article plus détaillé avec le code d'un parser expliqué de bout en bout.
Les bugs dans Java
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
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 là.
Développement IPhone
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
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é
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
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
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
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 :
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 là.
Spring Security 3.0.0M1
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 ?
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
Et bien sur cette page, on vous explique la marche à suivre.
Amoureux de l'assembleur et du debug, bon courage!
Sortie Sonar 1.9
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
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
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.
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
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
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
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!
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
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!
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
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
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
Voici une étude comparative qui vous permettra de choisir entre plusieurs solutions.
SOA et JavaEE 6
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
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
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
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
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
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
- la programmation sous linux
jeudi 2 avril 2009
OSGi et Spring
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 ?
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é
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
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
jeudi 19 mars 2009
Introduction au load balancing
Si vous voulez en savoir plus, lisez cet article et les liens qu'il contient.
JSR 203 : les entrées/sorties en Java 7
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
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'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
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
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
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é
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
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
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 ?
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
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
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
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!
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
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
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
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
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
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
- http://www.bredemeyer.com/links.htm
- http://softarc.blogspot.com/
Trouver un jar
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
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
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)