All Posts

Sqoop Et Parquet : Mode D’emploi

left-small Dans le monde du BigData (en l’occurence avec Hadoop), il est parfois utile de pouvoir importer le contenu d’une base de données dans son Datalake.

Pour ce faire, Apache Sqoop est une des alternatives pour le faire (peut être pas la meilleure mais bon…).

En effet, Sqoop permet d’importer (et exporter également) les données d’une base de données dans :

  • hdfs au format plain text, sequencefile, avro ou parquet
  • hive
  • hbase

En outre, il permet d’avoir un mode incrémental afin de gérer le mode delta.

Cependant, comme on le verra dans cet article, Sqoop n’est pas aussi trivial qu’il peut le paraitre.

C’est ce qui sera détaillé dans cet article : à savoir une sorte de mini retour d’expérience… et heureux en plus ;)

in Hadoop, Parquet, Sqoop Read on →

Hadoop Unit 1.3

left-small Si vous êtes un lecteur assidu (ou pas ;)), vous avez pu vous rendre compte que j’avais posté précédemment sur un composant au doux nom d’Hadoop-Unit.

J’ai le plaisir de vous annoncer qu’il a été releasé en version 1.3 et qu’il est également disponible sur maven central.

Il intègre dans sa nouvelle version :

  • support d’ElasticSearch 5.0.0-alpha2
  • correction de bugs : la variable d’environnement HADOOP_UNIT n’est plus nécessaire que pour les utilisateurs de Windows (merci Florent ;))
  • passage en version 0.1.6 de Hadoop Mini Cluster

A noter que pour utiliser Hadoop Unit en mode standalone, il est maintenant nécessaire de choisir entre Hadoop-Unit version SolR et Hadoop-Unit version ElasticSearch.

Cela est dû à un conflit de jars (Lucene pour ne pas le citer…) qui oblige à gérer ces composants indépendamment…

Pour les téléchargements, ça se passe ici :

Enjoy ;)

in Hadoop

Hadoop Unit

left-small Dans mon dernier post, j’avais parlé d’une surcouche que j’avais développé afin de faciliter l’utilisation de quelques-uns des composants de l’écosystème Hadoop, à savoir :

  • Hdfs,
  • Zookeeper,
  • HiveMetastore,
  • Hiveserver2,
  • SolR,
  • SolRCloud,
  • Oozie,
  • Kafka,
  • HBase,
  • MongoDB [New \o/ ],
  • et Cassandra [New \o/ ].

Il s’appelait alors Hadoop-Bootstrap mais il s’agissait aussi d’une première version qui a, bien sûr, évolué.

Cet article présentera donc quels ont été les améliorations qui ont été apportées.

Disclaimer : je tiens à repréciser que Hadoop-unit n’est qu’une solution de contournement permettant de simuler une partie de l’écosystème Hadoop afin de permettre de disposer en local d’un ersatz de distribution afin de fluidifier le développement mais proposant aussi d’effectuer des tests d’intégration dans un environnement dégradé. Cela peut également permettre d’éviter de monter un cluster Hadoop dédié aux tests d’intégration.

in Hadoop Read on →

Hadoop Ecosysteme Bootstrap

left-small Comme je l’ai déjà dit dans un article précédent, la force d’Hadoop n’est plus dans Hadoop en lui-même mais plutôt dans son écosystème.

Du coup, même lorsqu’on développe avec Spark, il est courant de vouloir s’interfacer avec le métastore de Hive ou encore avec SolR si l’objectif est de vouloir indexer dans ce dernier.

Parfois encore, l’objectif est de lire ou d’écrire de Kafka via Spark (ou en Spark Streaming).

Ainsi, lorsqu’on fait du développement avec des composants “BigData”, on a souvent besoin d’un écosystème complet.

Alors, bien sûr, dans un monde idéal, il est possible de disposer de tout l’écosystème via Docker ou via une machine virtuelle. Pourtant, parfois, il n’est pas possible de disposer de la pleine puissance de son poste parce qu’on est, parfois (sic…), dans un contexte où disposer des droits administrateurs de son poste (et pire quand il s’agit d’un poste sous Windows…) est impossible.

Pour ce faire, il existe quelques solutions comme Hadoop-mini-clusters. Cependant, chaque composant doit alors être démarré dans le bon ordre et il faut avouer que c’est un peu verbeux…

En outre, les couches clientes fonctionnent principalement dans la même JVM.

L’objectif de ce post est de proposer une alternative beaucoup moins verbeuse et plus pratique.

Il ne s’agit que d’une simple surcouche à Hadoop-mini-clusters mais la solution proposée offre également d’autres possibilités qui ne sont pas offertes par la solution :

  • possibilité de disposer d’un SolR qu’il soit en mode embedded ou en mode cloud
  • possibilité d’avoir un oozie accessible par un client externe à la JVM

De plus, la solution proposée dans cet article (enfin plutôt sur mon github…) propose :

  • de démarrer l’écosystème nécessaire dans un contexte de Test d’intégration
  • de démarrer l’écosystème nécessaire en mode standalone avec une simple commande

in Hadoop Read on →

Loggons Beaucoup Mais Loggons Bien…

left-small Cela fait un moment que je n’ai rien écrit… Cependant, un sujet me taraude depuis un moment… et il s’agit de la gestion des logs dans les applications.

J’ai déjà pesté dans des articles précédents sur le fait qu’une application devait toujours être monitorée et supervisée mais, en plus de cela, le comportement d’une application doit également être traçable.

Le sujet n’est pas ce qu’on peut dire le plus sexy du monde mais j’ai souvent constaté que ce dernier était souvent assez mal maitrisé. Donc désolé si j’enfonce des portes ouvertes mais bref…

Dans une mouvance où on parle de plus en plus de BigData, l’un de ses enjeux est la récupération du maximum d’informations afin de pouvoir en retirer de la valeur. Parmi ces informations, le log en fait parti. En effet, il peut être très riche en indicateur et peut apporter une valeur inespérée pour le métier (actions utilisateurs, …) ou pour connaitre la santé du système (KPI, …).

Bien sûr, la notion de gestion et de traitement de logs n’est pas venu avec le BigData mais existe depuis le début de l’informatique. Cependant, l’arrivé d’architecture distribuée (ou cloud) a entrainé d’autres problématiques comme l’aggrégation des logs (avec les problématiques classiques d’ordonnancement et de NTP par exemple).

Aussi, dans cet article, je reviendrai sur certains points qui me semblent primordiaux (et qui sont souvent oubliés) et pour cela, j’aborderai différents notions :

  • Définition des différents type de log
  • Limitation des approches naîve
  • Préconisation

A noter que je ne parlerai pas ou peu technique et que je n’aborderai pas comment il est possible de transmettre les logs ou de les agréger.

in log Read on →

Hadoop Et Son écosystème

left-small Avec l’arrivé de Apache Spark, Hadoop est souvent vu comme désuet et legacy. Il est vrai que le monde BigData est en perpétuelle évolution et qu’un produit peut être déprécié en quelques mois.

Cependant, restreindre le terme Hadoop aux seuls technologies MapReduce, HDFS et YARN est, pour moi, une erreur.

Déjà parce que ces technologies peuvent être décorrélées et ensuite car, souvent, la très grande majorité des nouvelles technologies issues du monde BigData s’appuient sur les couches existantes et s’intègrent avec ces dernières.

Par exemple, plutôt que dire que Hadoop est mort et que Spark est son remplaçant, il serait plus juste de dire que l’écosystème Hadoop se voit rajouter le nouveau moteur d’exécution Spark (n’oublions pas que Spark s’intègre très bien avec HDFS en l’occurence pour la partie colocalisation des données/traitements ou même pour répondre aux besoins de checkpointing).

Dans la présentation ci-dessous, j’ai tenté, de manière non exhaustive, de lister et regrouper par usage quelques unes des technologies que je considère faire partie de l’écosystème Hadoop et qui, de mon point de vue, constitue l’environnement Hadoop que certains nomment également Data Platform.

in hadoop

Template De Projets REST

left-small Il y a déjà un long moment, j’avais posté une série d’article expliquant comment il était possible de faire des web service de type REST de manière simple via RestEasy-Netty ou via Undertow.

Dans la continuité de cette course au plus léger, je me suis dit que cela pouvait être intéressant de faire une petite étude un peu plus exhaustive des solutions légères qui existaient.

L’objectif étant extraire une sorte de bench un peu naïf et un peu out of the box. Parmi les solutions retenues, il y a :

  • Resteasy-Netty
  • Resteasy-Undertow
  • Restlet
  • SpringBoot
  • Resteasy sur Tomcat en utilisant ses connecteurs NIO
  • Resteasy sur Jetty

Cette article est là pour restituer mes résultats…

in java, microservice, rest Read on →

Breizhcamp 2014 - Présentations en Ligne

left-small Pour ceux qui auraient manqué l’information, le BreizhCamp s’est déroulé en mai dernier et j’y avais la chance d’y présenter un talk sur un retour d’expérience concernant le passage à l’échelle d’un SI afin de lui permettre de supporter 4 millions d’utilisateurs.

Le synopsis était le suivant :

De 20 000 à 4 millions d’utilisateurs

Pour ce faire, il a été nécessaire de revoir certaines parties du SI afin de pouvoir stocker en masse les données des utilisateurs mais également afin d’être capable de les traiter.

Ce retour d’expérience montrera comment, avec une approche et des technologies simples, il a été possible de revoir la façon de faire et comment il a été proposé de traiter le sujet.

Il montrera également les pistes qui ont été étudiées et les solutions qui ont été retenues.

Les différents points qui seront abordés seront : Cassandra, REST, Netty, Spring Integration, Jolokia, Metrics saupoudré d’un peu de “Big Data”.

Encore une fois, je remercie la team pour :

  • l’organisation au top,
  • pour l’ambiance qu’ils ont su apporter à cette conférence,
  • mais également pour leur réactivité quant à mettre en ligne les vidéo des différents talk (sur YouTube mais également sur Parleys)

Du coup, vu que la vidéo de mon talk a été processée, j’en profite pour mettre le lien (désolé si je n’arrête pas de danser et désolé pour l’absence de démo dûe à mon ordinateur capricieux…) :

Et je vous invite à aller voir égalemnent les autres talk : http://parleys.com/channel/5148921d0364bc17fc56adbe/presentations?sort=date&state=public

A noter également que les conf de Devoxx France ont aussi été publiée depuis un petit moment pour ceux qui seraient à la traine ;–) : http://parleys.com/channel/5355419ce4b0524a2f28bca0/presentations?sort=date&state=public

in breizhcamp, java, présentation

Breizhcamp 2014

left-small Encore un an de plus pour le breizhCamp qui vient de fêter sa quatrième année.

Pour ceux qui ne seraient pas encore au courant de ce qu’est le breizhCamp, il s’agit d’une conférence technique qui se veut être un mix de technologies (même s’il faut bien reconnaitre que Java y est majoritairement représentée…) qui a eu lieu du 21 au 23 mai 2014 à Rennes dans les locaux de l’ISTIC.

Pour cette édition 2014, cela s’est déroulé sur 2 jours et demi et son programme a été réparti de la manière suivante :

  • Une demi journée de démonstrations (enfin je ne sais comment définir précisément cette demi journée qui était un peu spéciale puisqu’elle hébergeait le LabFab, un atelier agile, un hands on NodeJS, une présentation démystifiant les objets connectés, un atelier Devoxx4kids ainsi que diverses démos du NAO ou des ORA Smart Glasses)
  • 2 jours de conférences plus classiques avec des conférences, des hands on, des tools in action ainsi que des quickies

in breizhcamp, présentation Read on →

RDD : Qu’est Ce Que C’est

left-small

Spark est un framework qui a de plus en plus le vent en poupe et le fait qu’il ait été promu en top-level project par la fondation Apache qu’il a rejoint récemment (en juin 2013) montre bien de l’intérêt qu’il succite (cela est d’aileurs confirmé par son intégration avec des solutions comme celles de DataStax (cf. ici) ou mapR (cf. ici).

Un des points central de Spark est son utilisation des RDDs (Resilient Distributed Datasets).

Cet article tentera d’expliquer un peu plus précisément ce que sont ces fameux RDDs (enfin, pour être plus précis, il ne s’agit (comme à mon habitude) que d’une pseudo-traduction du papier de recherche expliquant ses tenants et aboutissants).

in big data, rdd, spark Read on →

Lecture Et Traitement De Fichiers : Comment Faire Simple?

left-small

De nombreuses applications ou systèmes d’informations nécessitent le chargement de données issues de fichiers.

Bien souvent, cet import est exécuté par batch, mais il peut aussi être intéressant de faire cet import au fil de l’eau.

En outre, bien souvent, les fichiers à importer sont, soient nombreux, soient volumineux. Du coup, écrire un code simple et fiable peut devenir plus ardu que ce qu’il n’y parait. Si, de plus, on veut ajouter des logs parlant (c’est à dire avec, au minimum, le temps de traitement d’un fichier et son nom), cela a tendance a rajouter du bruit au code. Sans oublier que lire un fichier est bien mais que, souvent, un traitement est effectué dessus…

Enfin, lors d’une forte volumétrie, une scalabilité horizontale peut être intéressante surtout dans le contexte actuel où la quantité d’information vient à exploser.

Cet article parlera donc de la problématique d’import de fichiers dans une application en s’appuyant sur des framework comme Spring Batch ou Spring Integration. Le mot d’ordre sera de le faire le plus simplement possible en s’appuyant au maximum sur ces framework.

in avis, batch, eip, java, spring integration Read on →

Logstash : Tour D’horizon Sur Les Stratégies De Déploiement

left-small Cet article fera un rapide tour d’horizon sur les différentes stratégies qui peuvent être utilisées pour Logstash.

Pour ce faire, je m’appuierai sur le très bon livre officiel que je me suis procuré (moyennant environ 10€) et qui fournit une très bonne vision sur ce qui est possible de faire ainsi que sur les différents concepts mais également sur les différentes stratégies de déploiement.

Même si je résumerai succinctement quelques-uns des concepts afin que cet article soit un minimum compréhensible, cet article traitera surtout sur la façon dont il est possible de déployer les agents Logstash.

[ndlr : par contre, je ne ferai, comme à mon habitude, que retranscrire ce qui est présent dans le livre…]

in java, logstash, supervision Read on →

Changement Du Flux RSS

left-small

Comme certain ont pu le constater, le look & feel du blog a évolué et j’espère qu’il vous plait.

Normalement, en plus d’un meilleur confort pour moi lorsque j’écris, une amélioration devrait être visible sur le temps de chargement des pages en raison d’un allègement de ces dernières.

Cependant, en raison d’une limitation de feedburner sur la taille du fichier atom.xml, j’ai été obligé de ne faire pointer que la catégorie Java (je n’ai pas trouver comment il était possible de générer ce fichier avec seulement une partie de l’article ou juste le titre…).

Du coup, je vous invite à modifier vos lecteurs RSS si vous en utilisez un pour pointer directement sur le nouveau flux :

in divers, java Read on →

Changement De Look Et D’hébergeur

left-small

Cet article n’a rien à voir avec Java et il est plus à titre informatif.

En effet, j’ai décidé de passer de Blogger pour l’hébergement de mon blog à une solution basée sur Octopress et un hébergement sur github.io.

Pourquoi ce choix?

Et ben, en fait, pour plusieurs raisons :

  • J’ai toujours aimé la philosophie de LaTeX qui permettait d’écrire au kilomètre sans avoir à se soucier de la mise en forme.
  • Mon blog était long à charger et la partie tuning de trucs front (et je ne le dis de manière non péjorative) n’étant pas mon fort, je n’ai pas réussi à l’alléger.
  • La partie syntaxhighlight était vraiment chiante à gérer et alourdissait vraiment (mais alors vraiment!) le chargement des pages.
  • J’avais envie d’une solution plus simple pour me permettre d’écrire mes articles (d’où mon post sur livereload) et pas à avoir à faire de copier/coller + retouche dans Blogger :
    • Ca correspond à la philo jrebel (ndlr : que j’aime beaucoup) (cf. ici) pour le code Java mais appliqué, ici, à la partie front.
    • C’est toujours plus marrant de pouvoir écrire un truc et de le voir se recharger automatiquement dans son navigateur – ça c’est pour la partie_geek ;–).
    • C’est nouveau (enfin pour moi…).
  • Blogger ne me convenait plus car il faisait trop de choses dont je ne me servais pas et, de plus, la façon dont il le faisait ne me convenait plus (son mécanisme de templating est assez lourd).
  • De nombreux blogs ont migrés et je trouve leur look & feel plus proche de ce qu’on attend d’un blog actuellement sans le coté bling bling de ce qui se faisait il y a quelques années.

in divers, java Read on →

JAXRS, Netty4 Et Spring Integration : Ils Reviennent Et Ils Ne Sont Pas Content!

left-small

Pour faire suite à mes articles resteasy-netty et resteasy-netty4, nous allons voir, dans cet article, comment il est possible de créer un service activator avec Spring Integration qui exposera via resteasy-netty4 un service REST.

Ce service REST esposera simplement une opération en POST qui, via Spring Integration, écrira dans un fichier et qui, pour le fun, écrira également sur la console.

Pour ce faire, rien de plus simple, un Service Activator de type gateway a été utilisé.

Cet article montrera donc comment il est possible d’intégrer Spring Integration à notre petite stack basé sur Resteasy-Netty4, Jackson, Metrics, Swagger et Jolokia.

Le code se trouve sur Github ici.

in java, jmx, jolokia, metrics, netty, performance, rest, spring integration Read on →

Livereload Et Linux Ou Comment Rédiger Du Html Simplement

left-small

Cet article n’a rien à voir avec le monde Java.

Il s’agit plus d’un petit tutoriel surtout destiné… à moi-même… ;–)

En effet, mon blog étant hébergé sur blogger, lorsque je rédige un article, je le fais le plus souvent directement en HTML. Afin d’avoir une idée de l’aperçu, je le charge directement dans mon navigateur mais passer son temps à faire du Alt-Tab/F5 a rapidement commencé à m’énerver.

Aussi, ayant entendu parlé depuis un moment de livereload, je me suis dis que cela pouvait être pas mal de l’utiliser.

Cependant, j’avoue avoir subi un échec cuisant (je suis sous un environnement linux et je tiens à préciser que je ne suis pas des plus à l’aise avec le monde nodejs ou ruby – ceci explique aussi cela… ;–) ) et cela malgré avoir mes multiples tentatives (à coup de gem install) et recherche sur mon ami Google (enfin, quand on n’est pas doué, on n’est pas doué… :‘( )

Du coup, j’ai pris l’option :

“J’appelle un ami”

Dans mon cas, je remercie Harold pour son aide.

Il m’a conseillé de me jeter un oeil sur Grunt qui gérait nativement livereload (bon, pour ma défense, je n’avais pas prévu de partir sur Grunt… ;–) ).

Cet article présentera donc comment j’ai réussi à faire fonctionner le bouzin avec, en prime, la possibilité d’utiliser Markdown.

Concernant l’environnement, il s’agit d’Ubuntu 13.10 (sur Mac, je ne doute pas que cela aurait été plus simple mais bon…)

[NDLR : encore une fois, je précise que je ne suis pas du tout expert dans ce domaine, il est donc inutile de me poser des questions. Par contre, toutes propositions d’amélioration est la bienvenue ;–)]

A titre informatifs, les fichiers se trouvent sur Github.

in divers, html Read on →

JAXRS, Netty 4, Jackon 2… Les Mêmes Mais en Mieux…

left-small

Pour faire suite à mon article précédent qui montrait comment il était possible de construire une stack légère basée sur Resteasy-Netty3, Jackson, Jolokia et Swagger, cet article montrera comment il est possible de faire la même chose avec Resteasy-Netty4 et Jackson 2.

Même si les changements ne sont pas énormes, il y a quand même quelques variantes, et, histoire d’être exhaustif, cela permet de faire le tour complet… ;–)

En fait, les seuls points qui diffèrent, par rapport au code précédent, touchent :

  • les dépendances,
  • l’intégration de Resteasy-netty4,
  • l’intégration du JacksonConfig (changement d’API coté Jackson),
  • le support de JodaTime dans Jackson 2,
  • et le support du CORS dans Resteasy-Netty4.

C’est donc ces différents points qui seront abordés dans cet article.

Le code se trouve sur github sur la branche netty4.

in java, jmx, jolokia, netty, performance, rest Read on →

JAXRS, Netty Et Bien Plus Encore… Mode D’emploi…

left-small

L’informatique évolue constamment et c’est également le cas des architectures qui ont tendance à s’orienter de plus en plus vers l’utilisation de services REST. Ces services REST doivent, en outre, être de plus en plus véloces afin de pouvoir répondre à une charge de plus en plus forte (que ce soit d’un point de vue temps de réponse mais également d’un point de vue charge suportée). C’est dans ce contexte que des solutions comme Restlet ou RestX (pour n’en citer que quelques-unes) ont vu le jour.

En effet, en plus d’offrir la possibilité de servir des services REST, elles s’appuient sur des framework dont la particularité est d’offrir des traitements non bloquant sur les entrées/sorties (NIO).

C’est dans ce contexte que cet article parlera principalement de Resteasy-Netty 3 (la version 3 a été utilisé en raison de contraintes techniques (connexion à Apache Cassandra dont le driver utilise Netty 3)).

Cependant, ce ne sera pas le seul protagoniste car, comme on verra par la suite, il est très simple à utiliser…

Le vrai sujet de cet article est, en fait, comment il a été possible d’ajouter d’autres framework comme Swagger ou Jolokia à Resteasy-Netty 3.

Cet article sera découpé en deux parties :

  • Besoin et conception
  • Mise en oeuvre

Le code se trouve sur Github ici.

in java, jmx, jolokia, maven, metrics, netty, performance, rest Read on →

Jolokia : Le Piment Qui Vous Veut Du Bien

left-small

Dans des articles précédents, je m’étais déjà exprimé sur le fait que je trouvais qu’il était important de monitorer son application (qu’il s’agisse d’une application web, d’un batch ou d’une application standalone) (cf. ici). J’avais même creusé un peu la spécification JMX (cf. ).

Pour faire suite à ce besoin, je vais, dans cet article, faire un focus sur un outils que j’ai découvert récemment (merci Romain ;–) ) mais qui existe depuis un moment (la version 1.0.0 est apparue en octobre 2011 sur le repo Maven central et le premier commit apparaissant sur Github date de Juillet 2010) : cet outils est Jolokia.

Comme à mon habitude, pour présenter cet outils, je m’appuierai sur la document officielle dans sa version courante, à savoir la 1.2.0.

Cependant, je ne ferai pas un plagiat exhaustif de la documentation qui est très complète (et surtout, je n’ai pas envie de me traduire les 92 pages de cette dernière… ;–) ) mais j’essaierai de faire un focus sur les points que je trouve les plus intéressants (à savoir les principes ainsi que le mode agent JVM (cf. plus tard) ).

in java, jmx, jolokia Read on →

BreizhCamp 2013

left-small

Pour ceux qui l’aurait loupé, le BreizhCamp dans sa version 2013 a actuellement lieu.

Etant un grand amoureux de la Bretagne, je ne pouvais manquer le cru de cette année…

En outre, j’ai eu la chance d’y présenter un Tools In Action d’½ heure sur le sujet des tests d’acceptance et plus précisément sur la façon dont il est possible d’intégrer Cucumber JVM, Selenium et FluentLenium.

Les slides sont dès à présent disponibles :

Et un projet d’exemple est accessible ici.

A noter que cette présentation concorde parfaitement avec la version de FluentLenium dans sa version 9.0 (comme par hasard! ;–) ).

Enjoy! ;–)

PS : en plus, pour une fois, il ne pleut pas… ;–)

in breizhcamp, fluentlenium, intégration continue, présentation, selenium

Industrialiser La Récolte De Métriques Web

left-small

A l’origine, une des principales raisons à la mise en place d’un serveur d’intégration continue était l’automatisation des processus qui, fait manuellement, étaient souvent consommateur de temps et générateur d’erreurs humaines. Petit à petit, ce dernier s’est imposé comme l’orchestrateur de tous les processus et est devenu un des points central de l’usine de développement. En effet, en plus de ses capacités à compiler, packager, faire passer les tests unitaires, d’intégration et d’acceptance, il est souvent utilisé pour livrer mais également pour effectuer des tests de non régression.

Parmi ces tests de non regression, il est possible d’y inclure (en plus des classiques tests unitaires, d’intégration et d’acceptances) les tests de performances (JMeter, Gatling, Clif) et la remontée de métriques de qualité de code (PMD/CPD, Findbugs, Checkstyle, ou plus simplement Sonar).

Bien évidemment, récupérer des métriques sans les consolider ni les comparer avec l’historique est totalement inutile car cela n’offrirait aucune visibilité sur l’amélioration ou la dégradation du produit.

Ce petit laïus semble trivial pour ceux qui font du Java (enfin je l’espère… ;–) ). Cependant il l’est un peu moins dans le monde pur web (ie. lorsque l’on veut tester une couche pur front). Bien sûr, il y a Selenium & co mais cela ne permet de ne tester que le fonctionnel. En outre, en cherchant dans la littérature (pour rappel, je ne suis pas développeur front), on peut constater que, souvent, les outils utilisés pour obtenir des métriques sur la qualité de rendu d’une page ou le temps de chargement de ses différents composants sont souvent intégrés au navigateur du développeur et que, souvent, il est nécessaire de se faire des nœuds au cerveau pour les intégrer aux usines logicielles telles que celles dont l’écosystème Java a l’habitude.

Vous l’aurez compris, cet article a donc pour objectif de montrer comment il est possible d’intégrer tout ce beau monde…

Il se limitera cependant à la récupération de métriques sur la qualité de rendu d’une page ainsi qu’à son temps de chargement.

Dans un premier temps, cet article présentera donc comment il est possible de récupérer des métriques type YSlow ou Pagespeed (ie. une note globale sur la page) puis, dans un second temps, comment il est possible de récupérer des métriques sur le temps de chargement des pages. Enfin, pour faire le liant avec mes articles précédent, on verra comment il est possible de remonter et historiser ces métriques au travers un test d’acceptance.

Evidemment, l’objectif n’étant pas d’obtenir ces métriques de manière “one shot”, une attention particulière sera portée sur l’intégration de ces outils à une usine logicielle et à leurs capacités à fournir une évolution dans le temps.

in fluentlenium, intégration continue, java, selenium Read on →

FluentLenium Et Cucumber JVM… Complément Et Precision

left-small

Dans mon article précédent, j’avais tenté d’expliquer comment il était possible d’intégrer les frameworks Cucumber JVM et Selenium au travers de FluentLenium.

En effet, pour rappel, FluentLenium permettait d’abstraire Selenium en lui offrant une API plus fluent mais également en lui apportant nativement ce qu’il préconise, à savoir le Page Object Design Pattern.

Pour ce faire, j’avais proposé d’utiliser la délégation de l’initialisation de FluentLenium à une classe tierce injectée via le mécanisme d’injection de Cucumber JVM.

Cependant, suite à discussion avec la créatrice de FluentLenium (à savoir Mathilde), on s’est rendu compte que l’axe utilisé était légèrement biaisé (même s’il fonctionnait…).

Cet article revient donc sur ce point en proposant une solution plus simple mais présentera également comment il est possible de tester le scénario Cucumber avec différents navigateurs et il y aura un petit mot sur l’utilisation de navigateurs déportés (via les RemoteWebDriver de Selenium 2).

Pour ce faire, il sera découpé en 3 parties qui couvriront des usecases différents se traduisant donc par des implémentations différentes :

  • cas de tests pour un site simple,
  • cas de tests pour un site complet,
  • cas de tests multi-navigateurs pour un site complet.

A noter que je ne reviendrai pas sur les principes des différents frameworks/concepts mais juste sur comment il est possible d’implémenter ces différents usecases.

A noter également que l’article précédent aurait pu être modifié mais qu’en raison du nombre important de changements, il était plus simple d’en initier un autre…

in fluentlenium, intégration continue, java, maven, selenium Read on →

FluentLenium Et Cucumber JVM Sont Sur Un Bateau…

left-small

Dans un article précédent, j’avais abordé comment il était possible de démarrer une application web dans un conteneur de Servlet de manière embedded au sein de la phase integration de Maven. Bien sûr, cela n’a pas été fait que pour l’exercice de style et il y avait une petite idée derrière : pouvoir exécuter des tests d’acceptance en mode boite noire sur l’application.

Pour faire les tests d’acceptance, le choix de Cucumber JVM a été fait afin de permettre l’expression de tests d’acceptance avec une sémantique utilisant le pattern Given/When/Then mais également afin de permettre à des non développeurs de comprendre/écrire les scénarii de test à exécuter.

L’application à tester étant une application web, un besoin s’est fait sentir de tester la partie rendue. Dans cet article, lorsque l’on parlera de tester la partie rendue, il sera question de vérifier que l’élément recherché se trouve bien dans le document html remonté dans le navigateur web. Pour rappel (cf. le paragraphe Contexte de ce post), l’application testée s’appuie sur un framework web java de type Struts2.

Aussi, il ne sera pas question, ici, de tester le rendu dans différents navigateurs.

Il a été décidé de partir sur une solution s’appuyant sur un runtime à base de Selenium : en effet, un besoin latent étant, à terme, de tester le rendu de l’application web sur les différents navigateurs, cette solution semblait correspondre le mieux aux besoins.

Bref, passons ce besoin pour revenir à notre objectif premier, à savoir, vérifier la présence des éléments dans l’arbre DOM remonté par l’application web.

Pour résumer, il a été décidé de partir sur :

  • Cucumber JVM pour la partie représentation/écriture des scénarii,
  • Selenium pour la partie exécution des tests.

Cependant, la syntaxe sur la partie WebDriver de Selenium 2 étant assez verbeuse, il a été décidé d’utiliser le framework FluentLenium qui offre une API plus simple et plus naturelle (enfin plus fluent quoi! ;–) ). En outre, en plus d’une API plus facile d’utilisation, la notion native de Page de FluentLenium poussant à mieux découpler la représentation d’une page et son test, cela a joué en sa faveur ;–)

Ainsi, cet article présentera comment il a été possible d’intégrer Cucumber JVM avec FluentLenium afin de pouvoir faire tourner des tests avec Selenium.

A noter que je ne m’attarderai pas, dans cet article, à présenter exhaustivement les différents protagonistes mais seulement les quelques points qu’il est nécessaires de connaitre afin d’intégrer ensemble ces différents framework.

[update] Suite à discussion avec la créatrice de FluentLenium, un autre article a été initié et apporte de nombreux compléments mais également correction à cet article. Pour en savoir, plus, rendez vous ici

in fluentlenium, intégration continue, java, maven, selenium Read on →

Démarrer Une Webapp en Mode Embedded Avec Maven

left-small

La mouvance actuelle dit que tout projet qui se veut un minimum industrialisé doit pouvoir détecter les anomalies au plus tôt. Pour ce faire, il est dit qu’il doit disposer de tests, qu’ils soient unitaire, d’intégration, fonctionnel ou d’acceptance.

Pour adresser le problème des tests d’intégration, il est souvent utile de démarrer l’application cible de manière embedded.

Cette article montrera comment il est possible de faire pour un contexte donné.

En outre, vu que ce blog me sert également d’aide mémoire, cela me donnera une excuse pour marquer noir sur blanc des informations que je peine toujours à retrouver… ;–)

Pour les habitués de ce blog (oui, je sais, cela fait un moment que je n’ai rien écrit… ;–) , le plan sera toujours le même : dans un premier temps, le contexte sera décrit puis des ébauches de solutions seront proposées jusqu’à tendre vers celle qui a été retenue.

in intégration continue, java, jetty, maven, tomcat Read on →

Devoxx 2012 : Versionner Son Service Dans Une Architecture SOA Et/ou Cloud

left-small

Ça y est… Devoxx est fini… :‘( Comme je l’ai dit dans un article précédent, je ne ferai pas de compte-rendu exhaustif de présentations auxquelles j’ai pu assisté à Devoxx.

Cependant, je tenais à revenir sur la présentation “Service Versioning in SOA and Cloud” par Ignaz Wanders (@ignazw) dont le synopsis était :

Keeping versioning under control is essential in the success of a SOA. However, there are no industry standards for service versioning, thus leaving the responsibility of implementing a service versioning system up to the architects and developers within the IT enterprise.


We often see design-type versioning, resulting in Big Bang governance strategies. A runtime versioning strategy may be, in fact, be preferable.


Every change must be built, and every change must be governed. A “cheap” build may lead to a large governance impact. But conversely, a small governance cost may lead to a large build impact. Both build and governance costs need to be taken into account and carefully balanced when choosing and implementing a service versioning strategy.

Dans cet article, je me contenterai de montrer quelques-uns des slides de la présentation de Ignaz Wanders qui définissent et synthétisent très bien les différentes stratégies possibles en partant de comment numéroter ses services pour arriver à une proposition qu’il aimerait avoir du coté du consortium OASIS avec un WS-Versioning. Les slides étant suffisant en eux-mêmes et n’ayant pas envie de répéter/déformer leur contenu, je ne mettrai donc que les photos prises pendant la conférence…

in architecture, devoxx, eip, java, soa Read on →

Devoxx 2012 : C’est Fini…

left-small

Ça y est… Devoxx est fini… :‘(

Pour ceux qui ne le sauraient pas encore, Devoxx est L’évènement à ne pas manquer.

Pour faire court, Devoxx est une conférence Java indépendante qui en est à sa 11ième édition et qui a lieu à Anvers (Belgique). Elle a également fait récemment de nombreux petits avec Devoxx France qui en est à sa 2ième édition et qui aura lieu cette année du 27 au 29 mars 2013 à Paris mais également avec le petit nouveau : Devoxx UK (du 25 au 26 mars 2013 à Londres).

Elle a regroupé cette année prêt de 3400 participants venant de tous les pays dont environ 200 français.

in avis, devoxx, java Read on →

Indépendance, Me Voici ;-)

left-small

Une fois n’est pas coutume (quoique…)… cet article ne sert à rien… mais a juste pour objectif d’annoncer que je quitte la société de service que j’ai rejoint il y a déjà 3 ans pour me lancer dans le vaste monde de l’indépendance…

Je quitte donc une société de service où j’ai eu la chance de rencontrer et côtoyer des personnes géniales (aussi bien humainement que professionnellement) et qui m’a donné ma chance pour essayer de suivre et de transmettre mon enthousiasme à mes joyeux camarades ;–)

Cependant, vu que tout a une fin, j’ai décidé de prendre mon envol afin de me faire un autre point de vue sur notre métier d’informaticien mais également pour pouvoir avoir le choix : le choix de consacrer du temps à des sujets qui m’intéressent, le choix d’écrire un article, le choix de participer à un projet qui me challenge… bref, le choix quoi! ;–)

Si j’ai le courage, peut être que je ferai le point dans un an afin de voir si cela valait le coup, si j’ai bien supporté le grand saut mais, également, si j’ai réussi à m’épanouir dans mes nouvelles fonctions de gérant qui ne pourra plus râler sur autrui (sauf si je deviens atteint de schizophrénie aiguë… ;–) ).

center

A ceux que j’ai pu côtoyer, je leur souhaite donc bonne continuation et à ceux que je (re)croiserai, ben… à bientôt!

in divers, réflexion

Précompiler Ses Jsp

left-small

Parce qu’il est parfois nécessaire de valider ses jsp, cet article fera un petit retour sur comment cela peut être mis en oeuvre.

Oui, je sais, les jsp c’est has been me diront certains… Cependant, il ne faut pas oublier que dans le monde Java, cela reste une des technologies indispensables quelle que soit le framework utilisé (j’entends par là dans le cas où les pages sont rendus dynamiquement par une technologie java).

Ayant eu récemment à intégrer une phase de validation des jsp maintenus principalement par des équipes “front” n’ayant que peu de connaissance en Java, ce rapide retour d’expérience tentera d’exposer les quelques points qui ont pu me poser problème et en l’occurrence les quelques-unes des différentes solutions possibles pour traiter ce point.

Aussi, dans une première partie, je présenterai le contexte, pour ensuite aborder trois des solutions possibles (et relativement récentes car il en existe plusieurs dans différentes versions…) pour valider les jsp.

in ant, intégration continue, java, jsp, maven, tomcat Read on →

Test De Charge : Mode D’emploi

left-small

Au cours de la vie d’un projet, il est courant d’avoir recours à des tests de charge.

Cependant, je me suis rendu compte que, trop souvent, le sujet est mal maîtrisé et donc malheureusement mal traité.

En effet, combien de fois n’ai-je pas vu un test de charge effectué avec la méthodologie “clic clic partout”, l’utilisation de Selenium, la commande curl, ou, dans le meilleur des cas, avec quelques scénarii JMeter issus de l’utilisation du recorder de ce dernier.

Cela ayant la facheuse tendance à m’énerver (pour ceux qui me connaisse, cela se traduit par une certaine agitation de ma part consistant à me mettre à tourner sur la chaise en regardant le plafond ;–) ), je vais tenter dans cet article de redéfinir certains des concepts qui me semblent primordiaux pour effectuer un test de charge qui se veut un minimum bien conçu, c’est à dire se voulant représentatif de la charge réelle que peut supporter le SUT (System Under Test) mais surtout qui permettra d’obtenir des métriques exploitables et représentatives du comportement du SUT.

in clif, gatling, java, jmeter Read on →

Découpage De Projets : Projet vs. Modules

left-small

Lorsqu’un projet débute, il est important (à mon avis) de se poser la question sur la façon dont celui-ci sera découpé. Pour être plus précis, il existe deux types d’approches :

  • le découper fonctionnellement,
  • le découper techniquement.

En outre, en plus de ce type de découpage, il est également important de s’interroger sur la façon dont il sera représenté dans le SCM : faut-il tout mettre dans le même projet (au sens SVN ou git du terme) en utilisant éventuellement des sous modules maven si c’est ce dernier qui est utilisé, ou faut-il en créer plusieurs?

C’est de ce dernier point dont il sera question dans ce court article qui présentera l’avis que j’ai pu me faire concernant le découpage technique du projet ie. s’il vaut mieux le découper en projets séparés ou en module (au sens maven du terme).

Il s’agit d’une opinion très personnelle qui peut ne pas être partagée par tous mais je trouvais intéressant de fournir mon humble avis et de le marquer noir sur blanc. Si je venais à dire des bêtises, au moins, cet article servira d’amorce à la discussion ;–)

in architecture, avis, java, maven, réflexion, soa Read on →

Maven : Créer Une Branche - Mode D’emploi

left-small

Il y a un moment déjà, j’avais fait un article sur le plugin release oh combien pratique dans notre utilisation de maven. J’y avais mentionné les 2 goals prepare et perform qui sont les plus connus et qui, pour rappel, permettent de :

  • vérifier que lors du lancement du processus de génération du livrable, le code est bien conforme à ce qui se trouve sur le SCM,
  • tagger le code source à partir duquel le livrable est produit et permettant ainsi sa reproductivité,
  • incrémenter le numéro de version des poms,
  • générer le livrable,
  • et le déployer sur le remote proxy repository.

Dans cet article, je me concentrerai sur un goal du plugin release malheureusement assez méconnu mais qui est tout aussi pratique et important (à mon sens) que ses 2 comparses prepare et perform. Il s’agit du plugin branch.

in java, maven Read on →

Devoxx 2012 - ElasticSearch : Moteur De Recherche NoSQL/REST/JSON Taillé Pour Le Cloud

left-small Pour ceux qui l’aurait loupé, du 18 au 20 avril 2012 dernier a eu lieu la toute première édition de Devoxx France.

L’annonce avait été faite pendant la dernière édition de Devoxx “l’originale” à Anvers en Belgique qui fêtait pour l’occasion ses 10 ans.

Ayant eu l’opportunité d’y assister (chose que je conseille vivement à tous les développeurs), j’ai écrit un petit compte rendu d’une des moultes conférences qui m’ont marquées aussi bien par sa qualité scénique que par son contenu.

center

Cette conférence était une présentation d’ElasticSearch faite par David Pilato (@dadoonet) qui a, alors, abordé les points suivants :

  • Définition d’un moteur de recherche
  • Concepts d’ElasticSearch
  • Utilisation d’ElasticSearch
  • Architecture d’ElasticSearch

Ce petit compte rendu a été écrit pour le compte du site developpez.com et peut se trouver ici

Merci à Developpez.com et aux différents relecteurs!

Bonne lecture ;–)

in devoxx, elasticsearch, java, nosql

Petits Retours Sur Cassandra

left-small

Suite à de nombreuses présentations de Cassandra (faites, entre autre, par Michaël Figuière) et à une opportunité de regarder plus précisément ce qui se cachait réellement derrière cette implémentation d’une solution de la famille des produits NoSQL orienté colonnes, je vais, dans cet article, tenter de décrire ce que j’ai aimé et ce que je n’ai pas aimé sur Apache Cassandra.

Je tiens toutefois à préciser que je n’ai aucune expérience réelle sur le produit et que je ne m’appuierai donc que sur sa documentation officielle en version 1.0 qui date du 2 mars 2012.

En outre, je ne m’attarderai que sur les points qui m’ont semblé intéressants et marquants.

Pour ceux qui sont coutumiés de ce blog, je ne changerai pas mes habitudes et je me contenterai seulement de traduire de manière libre les passages qui m’ont intéressés ;–). A noter que de nombreux points sont rappelés à différents endroits dans ce document mais c’est également le cas dans la documentation officielle.

in architecture, cassandra, java, nosql, réflexion Read on →

Petit Focus Sur 2 Plugins Maven

left-small

Bon, ça fait un moment que je n’ai rien écrit… je n’ai pas foncièrement d’excuses si ce n’est que j’ai été pas mal occupé sur un projet sur lequel j’essaierai de faire un petit retour dans un futur proche…

En fait, dans ce rapide post, je tenais à faire partager 2 “petits” plugins maven que j’ai eu l’opportunité de découvrir récemment par le biais de 2 Olivier :

Les deux plugins sont les suivants :

En fait, je ne rentrerai pas en détail dans les 2 plugins Maven qui, pour un, est assez connu mais je me contenterai juste de décrire les fonctionnalités que j’ai appréciées.

N’étant pas expert sur ces derniers et n’ayant pas creusé dans tous les paramétrages, j’espère que la présentation qui suit ne dira pas trop de bêtises… ;–)

in intégration continue, java, maven Read on →

Resign Patterns : Les Nouveaux Patterns

left-small

Cet article est une traduction “libre” de l’excellent papier de Michael Duell qui se nomme “Resign Patterns” Ailments of Unsuitable Project-Disoriented Software.

En fait, Resign Patterns reprend le principe des Design Patterns tels que décrit par the Gang Of Four mais en proposant un tout autres types de Patterns… Je vous laisse juger de leur véracité… Je pense qu’ils ont suffisamment fait leurs preuves pour ne pas avoir droit, eux aussi, à leur gloire… ;–)

Aussi, au même titre que les patterns du GoF, je vous invite à utiliser les dénominations décrites par les Resign Patterns pour vous faire comprendre de vos collègues quand vous parlez du design d’un programme. Ainsi, vous pourrez briller en société mais surtout vous faire comprendre par vos pairs ;–)

in architecture, avis, divers Read on →

Devoxx 2011 - What’s Probably Coming in Java Message Service 2.0

left-small La semaine dernière, j’ai eu la chance d’aller à Devoxx en Belgique à Anvers.

Pour ceux, qui ne connaissent pas, je vous invite à aller directement à la pêche aux informations sur le site : http://www.devoxx.com/ et même à vous y inscrire l’année prochaine et/ou même mieux… d’aller assister à Devoxx France!!

Bon, sinon, pour revenir à nos moutons, cet article est un petit retour de la session de Nigel Deakin présentée à Devoxx 2011 et à laquelle j’ai assisté.

Elle avait pour objectif de montrer l’avancée des travaux sur JMS 2.0 (Java Message Service) aussi connu sous le doux nom de JSR 343. A ce jour, en version early draft, elle devrait être intégrée à JEE7.

Cet article a donc pour vocation de tenter de retranscrire ce que nous a présenté Nigel.

in avis, devoxx, java, jms Read on →

FuseSource Community Day 2011

left-small Ce jeudi 13 octobre dernier a eu lieu la troisième édition du FuseSource Community Day à la Défense. Pour ceux qui ne connaissent pas la société FuseSource, il s’agit, en fait, du nouveau nom de Iona et c’est une société spécialisée dans l’open source qui propose un ensemble de produits packagés et intégrés de différentes solutions de la fondation Apache.

Parmi ces produits, on peut y trouver :

in divers, java Read on →

Jetty, Maven Et JMX

left-small

Vous avez peut être remarqué que ces derniers temps, j’étais très Maven et JMX. Cet article ne déroge pas à la règle puisque je vais parler de… Maven et de JMX.

Enfin pour être plus précis, je vais montrer comment il est facilement possible de déployer une application web dans le conteneur embarqué Jetty via Maven en activant la couche JMX afin de pouvoir tester de manière intégrée cette couche.

Pour ce faire, je présenterai dans un premier temps le contexte, puis comment cela peut être mise en œuvre. Bien sûr, cet article montre comment j’ai fait mais il ne représente pas la seule manière de faire… ;–). En outre, il ne présente rien de novateur mais je me suis dit que cela pouvait toujours être utile afin d’éviter de faire perdre du temps à d’autres personnes.

in java, jetty, jmx, maven Read on →

Présentation Sur Les Problématiques Liées à Une Architecture Distribuée

Ci-dessous se trouve une présentation que j’ai donné sur les problématiques liées aux architectures distribuées. Pour information, c’est un retour d’expérience d’une mission qui date un peu puisque c’était en 2007 mais les préconisations restent identiques à ce jour.

Enjoy et n’hésitez pas à commenter ;–)

in architecture, java, présentation, soa

JugSummerCamp 2011 : C’est Fini…

left-small

Voilà, pour ceux qui l’auraient manquée ou qui ne le savaient pas (ouh!!!), le JugSummerCamp a fermé ses portes ce vendredi 16 septembre 2011.

Ce fut une journée bien remplie, fatigante mais que du bonheur : des sessions intéressantes, des speakers compétents mais également une super organisation (merci au Poitou-Charente Java User Group mais également à tous les sponsors de l’évènement sans qui rien n’aurait été possible… (on les oublie tout le temps… ;–) ))!

center

C’est toujours un plaisir de rencontrer/retrouver des personnes géniales (je ne citerai pas de noms, ça fait trop lèche… ;–) ).

Donc, en gros, vous l’aurez compris, au vu de mon enthousiasme, merci encore et vivement l’année prochaine!!

in divers, java Read on →

Retour Sur Le BreizhCamp 2011

left-small

Cela fait un petit moment (plus d’un mois déjà…) qu’a eu lieu le BreizhCamp.

Pour les néophytes, BreizhCamp est une journée de conférence sur diverses technologies allant de Python, en passant par .Net pour, finalement finir sur Java.

Cette année, elle a eu lieu le vendredi 17 Juin à Rennes dans les locaux de l’ISTIC et a été organisée par l’équipe du BreizhJug qui comprend :

Ayant eu l’opportunité d’y participer, j’ai rédigé quelques petits compte-rendu de quelques-une des présentations auxquelles j’ai eu la chance d’assister. Les liens se trouvent ci-dessous :

Le programme complet est ici.

En tout cas, encore un grand merci aux organisateurs ainsi qu’aux speakers et vivement la prochaine édition (en espérant que, la prochaine fois, la Bretagne daigne nous offrir un peu de soleil sans passage pluvieux ;–) )!

in divers, java

Ubuntu 11.04

left-small

Ubuntu 11.04 est sorti depuis le 28 avril 2011. Je ne reviendrai pas ni sur son ergonomie ni sur ses ajouts puisque cela a déjà été débattu sur de nombreux sites/blogs. Cependant, depuis la mise à jour, un point avait tendance à m’agacer.

En effet, dans un shell bash, sur la complétion de la commande ls (entre autre) avec des répertoires contenant des espaces, il ne m’échappait plus ces derniers. Du coup, obligation d’aller les échapper manuellement mais chose encore plus embêtante était qu’il ne me proposait plus le contenu de mon répertoire.

Pire, en échappant les espaces et en utilisant la complétion, il me supprimait mon échappement…

Cet article fournira donc une rapide solution pour corriger ce problème.

in divers Read on →

Maven Pour Les Nuls… Les Archetypes

left-small

Dans le cadre d’une problématique d’une usine logiciel, il peut s’avérer utile de posséder un patron ou template de projet qui fournit les “bonnes” pratiques que doivent respecter l’ensemble des applications du projet.

Bien sûr, notre cher IDE est capable de générer un joli patron de projet. Cependant, il reste toujours nécessaire de modifier la configuration du projet pour y mettre, par exemple :

  • la version de jdk,
  • les libs utilisées (comme mockito par exemple),
  • optionnellement, la configuration de plugins,
  • optionnellemet, l’url du SCM,
  • ou tout simplement, la référence à un projet parent qui permet de définir, par exemple, la version des librairies ou des plugins utilisés.

Le hic, c’est que, généralement, cela fini par de jolis copier/coller dont le résultat diffère, bien sûr, en fonction du projet qui a servi de template. Le résultat : le syndrome du téléphone arabe sachant qu’en plus, on n’est même plus capable de savoir qu’elle était la référence du départ… embêtant tout ça… surtout pour un projet se voulant industriel…

En outre, posséder un patron de projet peut également s’avérer utile si vous êtes amené à POCer des frameworks ou faire des projets perso chez vous…

Vous l’aurez compris, cet article se focalisera sur les projets construits sur maven où les notions de dépendances, de plugins, d’informations projet sont présentes dans le pom.

Cet article a donc pour objectif de montrer comment il est possible de créer un archetype maven qui permet de répondre à ce problème.

Le use case sera simple puisque je m’appuierai sur la création d’un archetype simple pour mes besoins personnels afin de me fournir un patron normalisé (selon mes normes) me permettant de démarrer un POC rapidement pour un artifact de type jar et cela dans le seul but de ne pas avoir à faire moultes copier/coller… ;–)

A noter qu’il n’y a rien de révolutionnaire dans cet article pour toutes les personnes qui ont quelques connaissances de base en maven mais qu’il peut s’avérer utile (enfin j’espère) pour les autres… ;–)

in archetype, java, maven Read on →

Les Repositories Manager Pour Les Nuls… Focus Sur Nexus

left-small

Cela fait un moment que je n’ai pas bloggé faute de temps mais également d’inspiration… (ça c’est dit et ça, on s’en fout d’un coté ;–) ) Cet article parlera des repository manager. Rien de nouveau à l’horizon puisque la problématique et les solutions existent depuis un moment mais ayant dû en mettre un en place récemment et au vu de nombreuses questions que l’on m’a posées, je vais ici coucher sur “papier” ce qu’est un repository manager, c’est à dire quelques uns de ses concepts clés. En outre, cela me servira également d’aide mémoire et je me dis qu’une piqûre de rappel ne fait jamais de mal… ;–)

Pour ce faire, je vais m’appuyer sur l’excellent repository manager Nexus de Sonatype et plus particulièrement (comme à mon habitude… ;–) ) sur sa documentation officielle.

Par contre, je ne reviendrai pas sur les concepts de base de maven comme la définition de ce que sont les repositories local et distant.

Enfin, ici, j’utiliserai la même dénomination que le guide Nexus pour le terme organisation qui devra être pris au sens large du terme (entreprise, projet open source, poste local, …).

in maven, nexus Read on →

MicroBenchmark : Par La Pratique

left-small

Cet article fait suite à mon article précédent afin de donner mon rapide retour d’expérience sur quelques écueils qui peuvent être commis lors de l’écriture d’un microBenchmark et dans lesquels je suis, bien sûr, tombé :(. Pour remettre dans le contexte, c’est l’écriture de ce benchmark qui a entrainé l’écriture de mon article précédent suite aux résultats que j’ai pu constater et pour lesquels j’ai eu l’aide de mes camarades.

in java, performance Read on →

MicroBenchmark : Mode D’emploi

left-small

Cet article fait suite à une petite discussion que j’ai eue récemment avec un collègue sur qui était le plus fort entre le for et le foreach. Question qui peut paraitre, au premier abord, stupide mais qui m’a fait pas mal me creuser les neurones sur des points qui n’ont pas grand chose à voir avec le problème initial… (mais là, je m’avance un peu sur mon article… ;–) ).

Enfin, pour revenir au sujet initial (qui était, je le répète : “qui était le plus fort entre le for et foreach”), j’ai donc décidé de me faire un petit benchmark pour tester la performance des deux. Et là, ce fut le début des galères…

in java, performance Read on →

Pour Les Gouverner Tous - Partie 3/3

left-small

Cet article fait suite à mes précédents posts (ici et ) et à pour objectif d’intégrer la partie JMX à mon petit POC JGroups afin d’offrir une solution permettant de rendre complètement scalable la partie supervision/administration par JMX d’une application distribuée (ie. d’aggréger tous les MBeans au sein de tous les serveurs JMX). Pour rappel, le post précédent introduisait JGroups dans une petite application qui permettait à chaque instance d’une application d’obtenir la valeur d’une donnée offerte par les autres instances.

in java, jgroups, jmx Read on →

Pour Les Gouverner Tous - Partie 2/3

left-small

Cet article fait suite à mon article précédent et a pour objectif de présenter un petit POC (Proof Of Concept) simplicime mettant en oeuvre JGroups en version 2.11.0.GA (la dernière version stable à ce jour). Le principe est de montrer comment il est possible d’utiliser JGroups pour permettre à plusieurs instances d’une même application de se partager les valeurs d’une donnée. Enfin, pour être plus précis, cet objet partagé ne le sera pas vraiment (ndlr : partagé) par toutes les instances mais il s’agira plutôt de permettre à chaque nouvelle instance de récupérer la valeur d’une donnée auprès des autres instance déjà présentes dans le système. En outre, les autres instances déjà présentes devront recevoir directement la valeur de la donnée de la nouvelle instance.

L’autre raison d’être de cet article permettra d’introduire la couche protocolaire utilisée par mon petit POC qui permet de rendre distribuable un agent JMX dans une architecture distribuée.

in java, jgroups Read on →

Pour Les Gouverner Tous - Partie 1/3

left-small

Pour ceux qui l’auraient manqués (comment ça? Personne ne me suit… :( ), j’ai annoncé dans un post précédent que j’avais ouvert un compte sur GitHub pour hoster du code. Bien sûr, il y avait une petite idée derrière… ;–)

En fait, l’idée est partie d’un constat assez simple : sur différent projet, à chaque fois que j’ai voulu mettre en place JMX, ce qui m’a toujours profondément attristé était de ne pas pouvoir regrouper l’ensemble des informations des MBeans à un même endroit, c’est-à-dire, qu’il me fallait me demander où se trouvait tel ou tel MBean dans mon système alors que j’aurais aimé pouvoir me connecter sur n’importe quelle instance de mon système et y trouver tous les MBeans présents dans mon système. Enfin, pour être plus précis, j’aurais aimé pouvoir me connecter à n’importe quelle JVM qui hébergeait mon application et avoir accès à tous les serveurs JMX.

in java, jgroups, jmx Read on →

Ouverture D’un Compte GitHub

left-small Voilà, ça fait quelques jours que je travaille sur un petit projet perso.

Aussi, afin de pouvoir le hoster, je me suis créé un compte sur GitHub : https://github.com/jetoile.

Pour toutes informations sur Git, je vous renvoie sur le site : http://blog.gitfr.net/

De mon coté, je continue mon petit projet que je documenterai via de nouveaux articles d’ici peu.

Rester à l’écoute ;–)

in divers, java

Petites Astuces Avec JMX

left-small Ce rapide article fournit un petit retour d’expérience de quelques galères que j’ai pu avoir avec JMX (Java Management eXtension), galères certes stupides mais qui pourront peut être servir à d’autres… ;–)

Seront donc abordés deux points :

  • Erreur lors de l’arrêt de tomcat configuré avec JMX
  • Impossibilité de se connecter à l’agent JMX

in java, jmx Read on →

JGroups : Tour D’horizon

left-small Actuellement, le besoin de rendre les systèmes ou les applications interopérables est indéniable. Pour ce faire, de nombreuses technologies ont vues le jour. Il peut s’agir des MOM (Message-Oriented Middleware), des protocoles de communication entre les applications clientes et serveurs (REST, Soap, RMI, …), de solutions propriétaires utilisées pour permettre la communication entre les serveurs pour des problématiques de réplication ou de synchronisation ou même de solutions basées sur le paradigme NoSQL.

Cependant, il est important de ne pas oublier que nos couches basses restent les protocoles TCP ou UDP et que répondre par un grand concept tel que MOM, réplication de serveurs ou cache distribué sur une problématique ne permet pas de savoir ce qui se trame derrière…

Un produit souvent méconnu est utilisé en interne pour les problématiques de communication entre serveurs et même si, à ce jour, je ne connais pas d’implémentations de MOM qui l’utilise, il pourrait être un très bon candidat pour ces dernières en interne. Il s’agit de JGroups.

Aussi, cet article va tenter de donner un rapide tour d’horizon sur JGroups en présentant ses concepts. Il s’appuiera sur sa version stable courante, à savoir la version 2.11.0.

A noter que ce tour d’horizon s’appuie très fortement sur le manuel de référence de JGroups.

in java, jgroups Read on →

JMX Pour Les Nuls… - Les Connecteurs - Partie 8

left

Ce huitième et dernier article sur JMX clôture cette petite série de posts sur JMX (cf. introduction, partie 1 portant sur les généralités, partie 2 portant sur les différents MBeans et le concept de Notification, partie 3 sur les agents JMX, partie 4 sur les classes de base, partie 5 sur le MBeanServer, partie 6 sur le chargement dynamique des MBeans et partie 7 sur les services JMX). Il abordera succinctement la notion de connecteur.

in java, jmx Read on →

JMX Pour Les Nuls… - Les Services JMX - Partie 7

left

Ce septième et avant dernier article sur JMX (cf. introduction, partie 1 portant sur les généralités, partie 2 portant sur les différents MBeans et le concept de Notification, partie 3 sur les agents JMX, partie 4 sur les classes de base, partie 5 sur le MBeanServer et partie 6 sur le chargement dynamique des MBeans) abordera les différents types de services JMX.

Le MBean Server propose, par défaut, un ensemble de fonctionnalités qui se présente sous forme de services JMX (ie. de MBeans), à savoir :

  • Service Monitoring
  • Service Timer
  • Service de relation
  • Service de sécurité

in java, jmx Read on →

JMX Pour Les Nuls… - Chargement Dynamique De MBeans - Partie 6

left

Cet article toujours dans la lignée de ma petite série d’articles sur JMX (cf. introduction, partie 1 portant sur les généralités, partie 2 portant sur les différents MBeans et le concept de Notification, partie 3 sur les agents JMX, partie 4 sur les classes de base et partie 5 sur le MBeanServer) sera plus accès sur les capacités de chargement dynamique des MBeans. Cependant, il n’abordera que succinctement cette partie car il est nécessaire d’avoir une très bonne connaissance du fonctionnement du classloader et qu’un simple article ne saurait l’aborder comme il se doit.

in java, jmx Read on →

JMX Pour Les Nuls… - Les Agents JMX - Partie 3

left Cette troisième partie sur JMX reste dans la continuité de la série d’article sur ce sujet (cf. introduction, partie 1 portant sur les généralités et partie 2 portant sur les différents MBeans et le concept de Notification) en introduisant plus précisément ce qu’est un agent JMX et à quoi il sert.

Les articles qui feront suite préciseront les concepts manipulés par un agent JMX beaucoup plus en profondeur.

in java, jmx Read on →

JMX Pour Les Nuls… - Les Différents MBeans Et La Notion De Notification - Partie 2

left Mon précédent article portant sur la présentation générale de JMX a permis de poser les bases quant aux concepts fondamentaux. Cette seconde partie ainsi que les suivantes consistent en une descente plus en profondeur dans les entrailles des spécifications en reprenant les différentes notions vues précédemment.

Ainsi, cette partie traitera des différents MBeans et du concept notification.

in java, jmx Read on →

JMX Pour Les Nuls… - Introduction

left-small Certains l’auront peut être remarqué mais cela fait un moment que je n’ai rien posté sur mon blog. En fait, j’ai été un peu occupé à faire quelque chose qui me tenait à coeur depuis un moment… : la lecture complète des spécifications JMX (ouais, ça va, on s’amuse comme on veut/peut… ;–) ). Du coup, je me suis dit que cela pouvait également intéresser d’autres personnes qui aurait pu être découragées par la version agrégée de la spécification (ie. contenant la JSR 3Java Management Extensions (JMX) Specification – en version 1.4 et la JSR 160Java Management Extensions (JMX) Remote API – en version 1.0) qui fait très exactement 290 pages et qui se veut être, à ce jour, la dernière en date.

in java, jmx Read on →

NoSQL Au Paris JUG

center center Voilà! C’est la rentrée!… et c’est aussi la rentrée de tous les User Group : cela annonce une année bien chargée en conférences (et donc en émotion ;–) ) et il est probable qu’il y en ait pour tous les goûts! Donc plus aucune excuse pour ne pas trouver chaussure à son pied!

in divers, java Read on →

Sooner Is Better

left-small

Bon, voilà, cela fait un moment que je n’ai pas bloggé… manque d’inspiration peut être… manque de temps ou changement des priorités pour consacrer plus de temps à la lecture de livres en retard…

Dans cet article, je voudrais revenir sur un point que j’avais légèrement abordé dans ce post portant sur les livrables mais en le développant pour se focaliser sur une petite réflexion portant sur l’importance de s’intégrer aux processus de compilation et de livraison au plus tôt… en fait, pour être plus précis, je n’avais pas vraiment abordé cette problématique mais cela vient du même constat… ;–)

in réflexion Read on →

RTFM Ou De L’importance De Savoir Lire Une Documentation

left Ce petit article est plus une tranche de vie ayant pour objectif de montrer l’importance de savoir lire une documentation qu’un “vrai” post intéressant…

Il est vrai que savoir trouver son information s’applique énormément dans le monde Open Source où il est crucial de savoir fouiller (documentation, forum, …) lorsqu’un fait technique (anomalie? framework incomplet? cas d’usage délirant? …) a lieu mais cela s’applique aussi dans notre vie de programmeur de tous les jours.

Bien sur, le monde Open Source n’est pas le seul où doit s’appliquer ce principe.

Je vais donc raconter mon anecdote (stupide, j’en conviens donc soyez indulgent avec moi)…

in java, réflexion Read on →

JMX Et Firewall

left-small Cet article fait suite à mon post précédent qui, je le rappelle, pour ceux qui auraient eux le courage de le lire jusqu’à la fin ;–), avait pour objectif de rappeler en quoi JMX (Java Management eXtension) pouvait être une bonne réponse aux problématiques de supervision et d’administration dans une application (au sens large du terme). Cet article portera sur le sujet que je voulais initialement traiter, à savoir, comment accéder à un serveur JMX se trouvant derrière un Firewall. Cette problématique est indiquée sur le site de Sun/Oracle mais je vais, ici, faire un résumer de la méthode à suivre.

in java, jmx Read on →

JMX Ou Comment Administrer Et Superviser Son Système…

left-small Je n’ai encore fait aucun article sur JMX (Java Management eXtension). Pourtant, je pense qu’il s’agit d’une technologie indispensable pour toute application qui se veut un minimum sérieuse et industrialisable. Dans ce post, je ne parlerai pas de “comment ça marche” ou je ne fournirai pas de tutoriaux. Il s’agit juste d’un petit coup de gueule parce que j’en ai marre d’entendre toujours les mêmes inepties sur JMX…

Bon, pourquoi JMX me direz-vous? Encore une technologie? Encore un nouveau truc dans mon architecture à mettre en œuvre sur lequel il va falloir faire monter des gens en compétence et qu’il va falloir maintenir?

in java, jmx, réflexion Read on →

Orchestration Ou Routage?

left-small

Orchestration ou routage? Telle est la question qui se pose souvent… En effet, il est important de se poser la question sur la solution à adopter pour gérer, par exemple, des transformations ou du routage de messages dans un système asynchrone : s’agit-il de médiation technique ou de quelque chose de plus complexe (ie. de logique métier)?

PEtALS Link vient de mettre à disposition un livre blanc traitant du sujet en proposant différentes pistes pour choisir la solution d’implémentation.

D’ailleurs, j’en profite également pour mettre le lien vers la présentation de PEtALS ESB qui a eu lieu au JUG de Poitou Charentes.

in eip, esb, soa

Le Plugin Release (Un Peu) Démystifié

left J’ai déjà longuement parlé de maven 2 dans des posts précédents (Petites astuces avec maven 2, De l’art du livrable et Retour sur la mise en œuvre d’un environnement de développement). Ici, je vais revenir sur le plugin release en version 2.0 en explicitant ce que font ses goals prepare et perform plus concrètement.

En effet, il peut être utile de vouloir savoir quels sont les actions appelées et comment il est possible d’y ajouter son petit grain de sel… ;–)

Il est à noter que je ne reviendrai pas sur l’intérêt d’utiliser un tel plugin (ce n’est pas le sujet qui m’intéresse ici et d’autres blogs ou livres le feront mieux que moi) même si je ferai un petite piqure de rappel sur ce qu’il permet.

in java, maven Read on →

Petites Astuces Avec Maven 2

left Ce post aura pour principal objectif de répertorier un ensemble d’astuces et de pointeurs sur maven2 (cela m’évitant également de rechercher dans mes liens ;–) ). Ne voulant pas répéter ce qu’y a déjà été traité par d’autres sites ou blogs, je me contenterai seulement de faire des références.

in Read on →

Articles Disponibles Sur Mon Retour Du Salon Linux Open Source 2010

Dans mon précédent post, j’avais annoncé la mise à disposition prochaine d’une série d’articles sur le Salon Linux Open Source qui s’est déroulé pendant 3 jours, du 16 au 18 mars 2010, à la porte de Versailles sur Paris.

C’est désormais chose faite et les articles sont disponibles sur le blog de [email protected]

Il est donc possible d’y retrouver les 6 articles suivants :

Bonne lecture et n’hésitez pas à laisser vos commentaires!

in divers

Retour Sur Le Salon Linux Open Source

left-small Voilà, le salon Linux Open Source a fermé ses portes. Résultat des courses, 3 jours bien remplis où j’ai pu assister à pas mal de conférences sur divers sujets tels que :

  • l’atelier sur “Développement logiciel collaboratif : bonnes pratiques, premiers bilans”
  • la keynote sur “Oracle et l’Open Source :stratégie et initiatives – de Linux à MySQL via la virtualisation, GlassFish, Eclipse, les languages dynamiques de scripting, etc”
  • la table ronde sur “Interopérabilité : les standards ouverts à la base des architectures”
  • la table ronde sur “Progiciels : le logiciel libre envahit le domaine fonctionnel”
  • la table ronde sur “Virtualisation : retours sur investissement et bonnes pratiques de la virtualisation”
  • et le cycle OW2 : “Optimiser votre infrastructure d’entreprise avec les solutions innovantes du Consortium OW2” où j’ai plus précisément assisté aux présentations suivantes :
    • “Prenez de l’avance avec la nouvelle génération du décisionnel Open Source grâce à l’initiative OW2 Business Intelligence”
    • “Gestion autonomique des infrastructures du nuage pour le PaaS avec JASMINe : état des lieux et perspectives”
    • “Mettez la Data Integration dans votre ESB avec Talend et PEtALS”
    • “Comment gérer efficacement vos documents avec eXo DMS et la solutions BPM Bonita”
    • “Outils d’audit et diagnostic pour les développeurs et administrateurs d’applications Java EE”

La rédaction de CRs est en cours et ils seront disponibles sur le blog de [email protected] d’ici peu. Merci à PEtALS Link pour le passe VIP et à [email protected] pour m’avoir permis de participer au Salon. C’était vraiment sympa de revoir et de discuter avec l’équipe de PEtALS Link, les personnes d’Orange [email protected], de FraSCAti et d’OW2, Alexis de Sun Google, Emmanuel de Silverpeas de JBoss et tous mes anciens collègues.

Longue vie à l’Open Source!

in divers

Spring Integration vs. Apache Camel

left-small Lors d’un post précédent, j’avais parlé des EIPs (Enterprise Integration Patterns) en expliquant qu’il s’agissait de Patterns permettant de normaliser les échanges de messages dans un système asynchrone.

Dans cet article, je vais tenter de présenter succinctement deux de ses implémentations : Spring Integration et [Apache Camel](https://camel.apache.org/.

En fait, pour être plus précis, je vais plutôt tenter de présenter la vision que j’en ai ainsi que la façon dont je les ai compris.

Ainsi, ce post n’a pas pour objectif de les détailler de manière exhaustive car ils sont trop complets pour cela et qu’un seul post ne pourrait suffire à les aborder tous les deux (leurs documentations font d’ailleurs, pour Spring Integration, plus de 130 pages, et pour Apache Camel, plus de 580 pages… cqfd… ;–) ) mais juste, comme je l’ai dit précédemment dit, d’aider à comprendre leurs différences (quelles soient conceptuelles ou structurelles).

Je ne reviendrai pas sur les concepts des EIPs ni de JBI que j’utiliserai dans la suite et pour cela, je vous renvoie sur internet ou sur mes posts précédents (ici et ).

Concernant les versions utilisées, cela n’a pas vraiment son importance ici car je m’intéresserai surtout aux principes de ces deux frameworks mais à titre indicatif, il s’agit des versions 2.0 pour Apache Camel et 1.3.0 pour Spring Integration (il me semble qu’il n’y a pas de modifications flagrantes dans les versions courantes qui sont 2.2.0 pour Camel et 2.0.0.M2 pour Spring Integration).

in apache camel, eip, java, jbi, soa, spring integration Read on →

JRebel Ou Comment Accélérer Le Développement

left-small

Dans des posts précédents (ici et ), j’avais parlé d’une façon d’utiliser maven 2 pour fournir, entre autre, une solution pour accélérer le déploiement d’applications web avec Cargo. Cependant, afin d’optimiser le temps de développement, il est préférable, plutôt que d’avoir à redéployer l’application web à chaque modification de son contenu (que ce soit sa vue, son contrôleur ou son modèle) ou de ses librairies tierces (ce qui est connu pour être un anti-pattern), de n’avoir pas à le faire mais d’avoir plutôt un mécanisme permettant de prendre les modifications à chaud afin de pouvoir tester le plus rapidement possible.

Il existe différentes approches telles que :

  • l’utilisation du plugin WTP d’Eclipse en lançant le conteneur de Servlet ou le serveur d’application directement au sein d’Eclipse,
  • l’utilisation du plugin Sysdeo sous Eclipse pour le conteneur de Servlet Tomcat,

Cependant, aucune de ces solutions ne m’avait convaincu et je continuais à utiliser la bonne vieille ligne de commande.

Jusqu’au jour où j’ai entendu parlé de JRebel… Cette solution, bien que payante, remporte l’unanimité des suffrages dans la communauté open-source en raison de sa simplicité et de sa puissance.

Suite à l’obtention d’une licence gracieusement offerte par ZeroTurnaround lors du 2ième anniversaire du Paris JUG (merci à eux et longue vie aux JUGs!!), je ne pouvais que tester à mon tour…

Cet article va donc donner mon retour d’expérience.

in java, jrebel, maven Read on →

De L’art Du Livrable

left Au cours de certaines missions, je suis arrivé à un constat qui était que le processus de génération d’un livrable était souvent délaissé au profit de l’effort de développement de l’application.

C’est vrai qu’il peut être concevable qu’il ne s’agit que de la dernière étape d’un processus de développement, cependant, avec l’introduction de cycles courts (agilité, …), pouvoir fournir rapidement un livrable de qualité au client est primordial.

Dans un post précédent, j’avais parler de la façon dont j’avais en place maven dans un processus d’usine logicielle. J’y avais également abordé succinctement comment il était possible de générer un livrable.

Ce post présente donc plus précisément comment cela est possible avec maven (je ne reviendrai pas sur le pourquoi car cela me parait évident dans le sens où c’est ce que verra le client final et que, tout le monde le sait, la première impression est très souvent importante – un peu comme lorsque l’on offre un cadeau à quelqu’un, l’emballage à son importance même si, au final, le cadeau est pourri… ;–) – ).

in java, maven Read on →

Utilisation Du Remote Debugger

left Juste parce que j’ai la flemme de toujours rechercher le lien et parce que je trouve que cet article explique et résume très bien l’utilisation du remote debug, je me permets de mettre un lien vers l’excellent blog de Fabrice Dewasmes :

http://jtruc.dewasmes.net/?p=162

1
java -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n MonMachin

in java

Je Pense Donc Je Code… Ou Je Code Donc Je Pense

left Juste une petite réflexion que je trouve pas mal et que je ne fais que retranscrire puisque c’est Yukihiro Matsumoto (M. Ruby) lors de sa présentation au salon Linux Open Source de mars 2009 (oui, oui, je sais, ça date un peu…) qui l’a tenue.

Il nous a expliqué ce qui l’avait amené à créer le langage Ruby : écrire du code dans un langage qui correspond à notre façon de penser; mais il a aussi tenté de nous démontrer pourquoi on devrait utiliser Ruby (chose difficile devant un public de Javaistes…) : utiliser Ruby fluidifierait notre façon de penser.

Pour aller plus loin, il est (presque) de notoriété publique que nos chers voisins allemands raisonnent différemment de nous et qu’ils sont plus rigoureux et plus carrés. Il est aussi de notoriété publique que la langue allemande est plus rigoureuse que la notre. On peut maintenant s’interroger : est-ce parce qu’ils sont plus rigoureux que leur langue est plus rigoureuse ou l’inverse? Qui influence qui?

De même, vous avez peut être fait du prolog, du lisp ou même du XSLT. Qu’est-ce qui a été le plus dur? Apprendre la syntaxe du langage ou devenir le langage (ie. changer votre façon de raisonner)? Pour ma part, l’apprentissage d’un nouveau langage s’est toujours accompagné d’une période de transition où j’ai dû comprendre et penser comme le langage. Au final, je finissais par raisonner pareil… j’essayais même de faire des backtrack pour résoudre un problème de maths…

Bien sûr, cela ne touche pas que l’informatique, et la réflexion est intéressante. On aime un langage parce qu’on raisonne comme ce dernier ou parce qu’on raisonne d’une manière particulière, on aime le langage… la question est ouverte…

D’ailleurs cette question a été déjà traitée dans certains ouvrages comme 1984 de Georges Orwell où, je cite, il est dit [traduction d’A. Audiberti]:

[…], de moins en moins de mots, et le champ de la conscience de plus en plus restreints.

[…] Le novlangue est l’angsoc et l’angsoc est le novlangue […]

Sur ce, je clôs ce post!

in divers, reflexion

Ouvrages Recommandés

left Ce post présente les ouvrages (techniques) que je recommande vivement… cependant, certaines références ne sont plus disponibles puisque l’éditeur O’Reilly a décidé de fermer sa branche française… dommage… mais les éditions anglaises sont toujours là!

in avis, divers Read on →

Retour Sur La Mise en Oeuvre D’un Environnement De Développement

left Cet article présente la mise en œuvre que j’ai appliquée lors de la mise en place d’un environnement de développement devant s’interfacer, dans une démarche pseudo-agile, avec des outils d’intégration continue.

Il présentera, dans un premier temps, le contexte et les problématiques puis, dans un second temps, comment j’ai tenté de répondre à ces problématiques que ce soit d’un point de vue méthodologique que d’un point de vue technique. Bien sûr, les choix et les implémentations utilisés sont discutables, mais c’est aussi pour cela que j’ai créé ce blog (afin de faire partager mon expérience et d’avoir un retour) ;–)

Il ne présentera ni l’utilité des outils d’intégration continue ni celle d’une démarche agile (ce projet ne fonctionnait pas en agile mais mettait en œuvre quelques-unes de ses pratiques) qui sont très bien expliqués sur d’autres sites ou blogs. Enfin, il est à noter que ce projet possédait un existant et que mon rôle n’était pas de remettre en cause les solutions retenues.

in cargo, java, jetspeed, maven Read on →

EIP : Qu’est Ce Que C’est

left Dans l’article sur JBI, j’ai mentionné à de nombreuses reprises le terme EIP. Cet article revient sur cette notion que je considère comme étant très importante surtout lorsque l’on doit jongler avec des messages asynchrones.

En fait, les EIP (Enterprise Integration Patterns) sont issus de l’excellent livre éponyme de G. Hohpe et B. Woolf chez Addisson Wesley. Ne pouvant que vous recommandez sa lecture si vous trempez dans cette problématique, cet article ne sera qu’une brève introduction à son contenu (il fait quand même plus de 600 pages, donc je ne vais pas prétendre le résumer… ;–)). Cet article se voudra très théorique et d’autres articles ultérieurs couvriront quelques implémentations d’EIP comme Apache Camel ou Spring Integration (et peut être, un jour, iBeans). En outre, il suivra le plan du livre dont il est tiré.

in eip, soa Read on →

JBI : Qu’est Ce Que C’est?

left Voilà mon premier article. Il a pour objectif de présenter JBI (Java Business Service) aussi connue sous le doux nom de JSR 208 (Java Specification Release).

Pourquoi un article sur JBI?

Vous pouvez vous demander pourquoi un article sur JBI? Les réponses sont simples : j’aime bien cette spécification et je trouve qu’elle a du potentiel et qu’elle est sous exploitée.

Bien sûr, me direz-vous, en tant qu’utilisateur d’un PEtALS ou ServiceMix, pourquoi devrais-je comprendre la technologie sous-jacente? Eh bien, c’est une affaire de goût : si vous préférez utiliser un produit comme une boite noire, passer votre chemin. Par contre, si vous voulez comprendre ce qui se passe à l’intérieur, j’espère que cet article pourra répondre à vos attentes.

Autre interrogation : pourquoi m’embêter à comprendre une technologie qui ne décolle pas (du moins de ma fenêtre) et sur laquelle les éditeurs ne communiquent pas énormément (c’est vrai qu’ils préfèrent communiquer sur ce qu’ils offrent et non comment ils le font) ? Là encore, question de goût et puis qui croyait en l’émergence du téléphone portable ou même de la télé réalité ? (personnellement, je ne croyais ni en l’un ni en l’autre…) cqfd… ;–)

Ce premier article a donc pour objectif de présenter JBI. Seront abordés ses concepts généraux avec une approche telle que celle décrite dans ses spécifications ainsi qu’un succinct retour sur ce que je pense de JBI..

Cependant, ne seront pas abordés, ici, les mécanismes utilisés en son sein ainsi que des notions de SOA (de très bon article abordent déjà SOA) même si, qui dit JBI dit SOA (la réciproque n’est pas foncièrement vrai…).

Il est à noter que dans cet article j’utiliserai souvent le terme de composant (peut être à mauvais escient) au lieu du terme service. Il s’agit d’un abus de langage lié au fait que j’ai tenté d’être le plus clair possible et que en évitant d’aborder trop de notions afin d’éviter de vous perdre ;–).

in java, jbi, soa Read on →