Les hooks Git

formation-git

Git est un système de versionnage bien pratique pour plusieurs raisons. Les plus communes sont probablement la souplesse avec laquelle il est possible de cloner et repartager n’importe quel dépôt, sa notion de branches très fonctionnelle grâce aux commandes avancées que la solution propose (commits interactifs, rebase, stash et bien-sûr : merge), ou simplement le fait qu’il s’agisse d’une des technologies la plus populaire, donc la plus supportée. Une raison secondaire, mais potentiellement aussi puissante réside dans son système de hooks (« crochets », en français) autorisant le couplage avec des applications externes.

SOA is dead long live Microservices

A n’en pas douter, les architectures microservice sont la tendance hype du moment. Une nouvelle vague de patterns d’architecture vient donc en écraser une autre. Et bien pas si sûr ! Martin Fowler, auteur bien connu, a publié un article intitulé « Microservices ». Dans cet article nous pouvons lire « the microservice style is very similar to what some advocates of SOA have been in favor of ». Cette phrase prend tout son sens pour certains architectes. Parmi ceux-ci, il y a Anne Thomas Manes qui dans un post fameux du 5 janvier 2009, « SOA is dead ; Long Live Services », écrivait : « the word “SOA” is dead, the requirement for service-oriented architecture is stronger than ever… If you want spectacular gains, then you need to make a spectacular commitment to change ». Il semblerait que l’architecture à base de microservices vise à atteindre cet objectif !

Gestion des versions dans Maven: SNAPSHOT ou pas SNAPSHOT?

Introduction

MAVEN est un outil qui permet de gérer le cycle de vie d’un projet d’une manière portable. Parmi les fonctionnalités les plus importantes, on peut citer :

  • la structure du projet qui est normalisée et indépendante du langage et de la plateforme utilisés (Java, PHP, FLEX…);
  • l’incitation à utiliser un dépôt central abritant les librairies utilisées par nos projets et assurant le stockage des ces derniers pour une utilisation tierce (livraison à un client ou bien utilisation par un autre projet).

Un aspect important dans l’utilisation de MAVEN est la gestion des numéros de version d’un projet et de ses dépendances. En effet, avec MAVEN, j’ai découvert la notion de SNAPSHOT et l’objectif de ce billet est de partager mon retour d’expérience concernant :

  • La mise en place d’une pratique commune de versionning.
  • La mise en place d’un déploiement continu.
  • L’automatisation de la distribution d’un projet.

Eclipse 3.7 « Indigo » : Vos voeux seront-ils exaucés ?

Comme tous les ans à la même époque, la nouvelle version d’Eclipse vient de sortir. Son  nom de code : « Indigo ».

Cette année, Eclipse met l’accent sur trois axes que sont le développement Java d’une part, la modélisation d’autre part et enfin l’intégration (outils surtout axés ALM [Application Lifecycle Management] cette année).

Du côté de Java, on trouve des avancés intéressantes et significatives :

  • WindowBuilder un édtieur d’IHM (Swing, SWT, RCP, XWT et GWT) : Eclipse tente de rattraper son retard au niveau du design d’IHM client riche/web comparé à d’autres IDE comme Netbeans et surtout IntelliJ d’IDEA.
  • Un outil pour réaliser des Tests Fonctionnels : Jubula. Une preuve que les tests de non régression et aussi le développement piloté par les tests d’acceptance sont des mouvances actuelles.
  • Développement RIA (RAP) avec Reina 3.0. Dans la droite ligne du dernier séminaire ANTEO sur les RIA (voir ici), il est clair que cette technologie succite l’intérêt de la communauté RIA.

Du côté des outils et de l’Application Lifecycle Management, Eclipse n’est pas en reste :

  • Intégration de Maven, qui était très attendue, comme en témoigne le forum du plugin M2eclipse. Ce plugin est désormais intégré dans Eclipse mais le résultat est décevant. En dehors du fait qu’il n’est pas intégré dans la version Java EE d’Eclipse, il y a encore du chemin à parcourir sur ce plan avant d’être à la hauteur de nos attentes.
  • Intégration de Git au travers du plugin EGit 1.0. Concurrent avéré de SVN, les développeurs/sociétés qui souhaitent passer de SVN/CVS à git seront ravis.
  • Un outil de revue de code Gerrit, très utile d’autant plus qu’il est très bien intégré avec la notion de revue bloquante/non bloquante. Complémentaire ou opposé à la notion de Pair Programming des méthodes agiles, à vous de juger (voir cet article).
  • Intégration de Mylyn 3.6La toute dernière version de Mylyn clairement orientée ALM, apporte elle aussi son lot de nouveautés (une meilleure gestion des contextes (consultation, modification, merge..), une intégration avec Hudson,Bugzilla ou encore Gerrit).
  • Le support des bases de données NoSQL

Du côté de la Modélisation, c’est surtout EMF qui bénéficie des dernières évolutions :

  • Support des langages DSL via Xtext 2.0
  • EMF 2.7, nouvelle version du framework de modélisation et de génération
  • EMF Compare 1.2 (comparaison de modèles EMF)
  • EMF Facet pour étendre les méta-modèles

En conclusion, vous bénéficierez de quelques précieuses nouveautés mais c’est clairement une déception quant à Maven avec l’intégration « inachevée » de M2Eclipse, ce qui en fait une limite majeure d’Eclipse comparé à Netbeans ou IntelliJ pour les développeurs Java EE !

Hudson, gloire et beauté

L’actualité d’Hudson est actuellement riche en rebondissement !

Hudson versus JenkinsHudson est un serveur d’intégration continue (CI). Associé à un gestionnaire de sources, il permet d’automatiser et de systématiser un certain nombre de tâches liées au développement logiciel : génération de code, compilation des sources, exécution des différents jeux de test, exécution d’outil de vérification et de mesure de la qualité, automatisation du déploiement, etc. Tout ceci dans l’optique de vérifier en continue la qualité des sources commitées sur le gestionnaire de sources.