Spring-Batch : par quel bout le prendre ?

SpringSpring-Batch répond à un besoin récurrent : la gestion des programmes batchs écrits en Java. Si le framework semble de plus en plus complet et fonctionnel, celui-ci souffre de sa complexité de configuration et reste un peu difficile d’accès malgré les efforts de l’équipe de développement. Personnellement, j’ai passé quelques heures pour faire fonctionner mon premier batch. Les exemples fournis fonctionnent rapidement, et illustrent très bien les possibilités qu’offre Spring-Batch. Mais, comme ces possibilités sont très riches, les exemples sont nombreux et (nécessairement) complexes. On lit la documentation, on regarde les multiples exemples en détail, et au moment d’implémenter notre premier batch et de plonger pleinement dans le cœur du sujet, on se pose la question « Mais par quel bout je commence ? ».

Donc, pour permettre aux gens qui, comme moi, aiment bien créer leur « hello-world » afin de bien comprendre ce qu’ils utilisent, voici un exemple minimal d’un projet Spring-Batch.

Lire la suite

Maven Community news – 3ème trimestre 2008

Maven Bonjour à tous,

Après quelques vacances, voici de retour les nouvelles sur Apache Maven et sa communauté. Comme vous allez le voir ci-dessous la période estivale 2008 aura été productive. De nombreuses livraisons (… comparativement à d’habitude), et surtout un gros effort pour répondre aux besoins des utilisateurs et pour offrir de jour en jour des livrables de meilleur qualité.

En gras les releases « majeures » (non alpha, beta, RC et autres versions pas encore considérées comme abouties).
En italique les annonces « périmées » par une annonce plus récente.

Lire la suite

Intégration continue performante (Part #2)

Dans la première partie de ce billet, je mentionnais divers solutions (bonnes pratiques, outils) pour optimiser les performances du serveur d’intégration continue et faire face au nombre croissant de projets gérés par ce serveur.
Dans cette seconde partie, j’aborde un sujet récurrent lorsque l’on fait de l’intégration continue : les erreurs (compilation, tests, packaging) sur le serveur. Effectivement, mieux vaut découvrir ces erreurs en continue sur le serveur plutôt que la veille de la livraison. Mais, ne serait-ce pas mieux si on pouvait simplement les éviter ?

Lire la suite

Tours JUG – Apache Maven, mise en œuvre en entreprise

Maven Avec Benoit Lafontaine, responsable de notre centre de compétences Java à OCTO Technology, je présenterai une nouvelle session sur Apache Maven au Tours JUG le Mercredi 08 octobre 2008. Durant cette présentation, nous présenterons les bénéfices que l’on peut attendre de cet outil multifonctions, mais aussi, les pièges à éviter lors de sa mise en oeuvre et de nombreux conseils issus de nos expériences.

Tours JUGRetrouvez toutes les informations sur cette session sur le site du Tours JUG et n’oubliez surtout pas de vous inscrire.

La présentation se tiendra à partir de 19h dans les locaux de SUPINFO, 15 place Michelet 37000 Tours.

REST en JAVA avec la JSR-311

La JSR 311 JAX-RS [JavaTM API for RESTful Web Services] est le pendant REST de la JSR 224 JAX-WS [JavaTM API for XML-Based Web Service]. Elle marque la volonté de la part de la communauté Java de cadrer, tout comme pour la stack WS-*, le développement des applications JAVA orientées ressources. Bien qu’étant sur le point d’être finalisée (dernier stade : Final Approval Ballot), elle est déjà implémentée par la plupart des frameworks REST du moment (Jersey, RESTeasy, CXF, une extension Restlet…).

La suite de ce billet présente les annotations de la JSR en regard des principes REST qu’elles mettent en œuvre.

Lire la suite

Libérez la touche F1 sous Internet Explorer

Aaaah, cette fabuleuse « feature » de Internet Explorer : lorsqu’on presse F1, la fenêtre d’aide d’IE s’ouvre… sauf que lorsque l’on a besoin d’utiliser F1 comme raccourci dans une application web métier, on constate vite la gestion de F1 est enfouie profondément dans le code IE et qu’il est difficile de reprendre la main sur cet événement. Voici donc le hack en 5 étapes qui permet de récupérer la main sur F1 – comme c’est un classique du développement Javascript, je vous fais la version « implémentation avec GWT » pour changer un peu.

Lire la suite

Intégration continue performante (Part #1)

Alors que l’intégration continue fait son bonhomme de chemin dans les développements en entreprise, plusieurs constats peuvent être fait.

La généralisation de cette pratique n’est pas égale chez tout le monde :

  • Chez certains, des usines de développement (plus communément appelées Software Factory) fleurissent par ci par là sous l’impulsion de développeurs chevronnés ou d’expert techniques mais se cantonnent la plupart du temps au développement d’un projet. Résultat : pas d’uniformisation (utilisation d’outils redondants, de méthodologies variées…) mais les équipes sont contentes de leurs usines car elles rendent le service attendu.
  • Chez d’autres, une seule usine d’entreprise existe (ou est censé exister). Résultat : l’usine croule sous le nombre de projets (configurés plus ou moins anarchiquement), la durée des builds augmente et les équipes finissent par remonter une petite usine dans leur coin pour pallier à la lenteur du serveur.
  • Au milieu de ça, il y a ceux qui sont dans le premier cas et qui veulent industrialiser. La plupart du temps, ils n’ont pas les moyens nécessaires (support aux équipes, serveur suffisamment puissant) et surtout ils manquent cruellement d’appui des supérieurs et/ou de la production. Résultat : l’usine est peu ou pas utilisée, les projets ne sachant parfois même pas qu’il en existe une centralisée.
  • Et enfin à l’extrême, il y ceux qui n’en ont pas du tout. Résultat : ils se passent d’une pratique, qui, si elle est mise en œuvre correctement, apporte énormément tant sur la productivité que sur la qualité des applications.

L’industrialisation de cette pratique amène donc les limitations suivantes (pas vraiment nouvelles [1]) :

  • Le serveur d’intégration ne tient pas la charge lorsque de nombreuses applications y sont construites.
  • Malgré tous les apports de l’intégration continue, il arrive encore trop régulièrement de casser le build si un développeur peu rigoureux omet de publier un fichier, en ajoute un qui ne compile pas ou qui ne passe pas les tests… bref l’intégration se fait encore trop tardivement !
  • L’intégration continue ne fait pas partie intégrante du cycle développement / production d’applications, en tout cas pas suffisamment pour être exploité au mieux par toutes les équipes projets.

Ce billet (1er d’une série de 3) traitera des performances des serveurs d’intégration continue.

Lire la suite