dimanche 29 septembre 2013

La maison du développeur : son environnement


     Bon voilà effectivement je le savais : ouverture du blog depuis quelques temps déjà et pas encore pris le temps d'écrire. Donc je prends quelques minutes (heures ... on verra quand j'aurais terminé) et je commence un premier post plus technique : l'environnement de développement.

     Pourquoi ce thème : parce qu'installer un environnement de développement c'est une opération qu'en temps que développeur on répète régulièrement, que les patterns d'un environnement commence à être bien posés en terme de features, outils, .... Et surtout quand j'aurais besoin de monter un nouvel environnement j'aurais toutes les urls sous la main. Ce sera aussi un snapshot pour voir dans quelques temps si j'utilise toujours les même outils. Enfin comme le dit le titre c'est vrai que l'on y passe tellement de temps à l'utiliser, le configurer, le remettre au carré, ... c'est un peut notre maison.

     Bien entendu l'objet n'est pas de poser l'environnement idéal. Chacun a ses habitudes, bonnes ou mauvaises, les besoins peuvent varier fonction du contexte (une équipe de développeurs WorldWide n'aura pas les même besoins qu'un développeur seul chez lui) et puis l'informatique est un monde dynamique, en peu de temps il sortira de nouveaux outils.

L'environnement ça comprend quoi :

Dans les grandes lignes, un environnement de développement (pour un développeur Java) c'est :
  •  un EDI
  • un gestionnaire de source (installé en local ou via service d'hébergement type GitHub, SourceForge)
  • des jdk
  • outil de build (Maven, ....)
  • un usine de dev (scheduling de build, tests, déploiement)
  • accès à un linux (en cas de serveur à gérer)
  • éventuellement une base de données
  • un wiki pour la documentation
  • un bugtracking

Quand au choix à mon sens ce qu'il faut :
  • Une stack cohérente, qui s'intègre bien et s'adapte aux utilisations qui peuvent se présenter.
  • Une intégration facile entre les différents composants (plugin, ...),
  • Des produits "main stream", largement utilisés par les développeurs afin que les sources d'informations, tutoriaux, forum ... rendent l'information rapides à trouver
  • Des produits suivis avec des sorties de versions régulières est un peu plus (permet d'intégrer rapidement les évolutions)
 

Ma stack favorite (open source) 

 

JDK (le coeur pour un développeur java) :
http://www.oracle.com/technetwork/java/javase/downloads/index.html
ou les previous release (cela peut toujours servir) :
http://www.oracle.com/technetwork/java/javase/archive-139210.html

Un outil de build : Maven 3
http://maven.apache.org/

un gestionnaire de source :
Subversion : http://subversion.apache.org/
Git : http://git-scm.com/

Un EDI : Eclipse (www.eclipse.org/downloads/), la dernière version étant Kerpler
--> Intégration EDI/build : M2e inclu dans la distribution Eclipse JavaEE
--> accès à un linux : Remote System Explorer (inclu dans la distribution Eclipse), permet d'ouvrir des terminaux Linux, transfert de fichiers, ...
--> integration gestionnaire de source
     Git : EGit (inclu dans les distribution eclipse) http://eclipse.org/egit/
     Subclipse (http://subclipse.tigris.org/) : plugin eclipse permettant l'interaction avec SVN

Fonction des besoins, un serveur applicatif (light ou moins light) :
Tomcat : http://tomcat.apache.org/
Jetty : http://www.eclipse.org/jetty/
Glassfish : https://glassfish.java.net/
JBossAs : https://www.jboss.org/jbossas

Un serveur d'intégration continue :
Jenkins (http://jenkins-ci.org/), se déploie dans un Tomcat

Des métriques pour suivre la qualité du code :
Sonarqube (http://www.sonarqube.org/) se déploie dans un Tomcat, peut nécessiter une base de donnée pour conserver les métriques
Checkstyle (http://checkstyle.sourceforge.net/), findbugs (http://findbugs.sourceforge.net/), PMD (http://pmd.sourceforge.net/) intégré via différents plugin existant dans Eclipse, Maven, Jenkins, Sonar
Google code pro eclipse plugin (https://developers.google.com/java-dev-tools/codepro/doc/)

Base de données :
MySQL : http://www.mysql.fr/
MariaDB (la reprise de MySql en open source) : https://mariadb.org/

BugTracking :
Mantis : http://www.mantisbt.org/

Tooling divers et varié :
NotePad++
http://notepad-plus-plus.org/fr/
Et ses plugin (dont XML plugin utile) : http://sourceforge.net/projects/npp-plugins/files/

Process Explorer (pas toujours evident à trouver, différentes versions peuvent être download sur différents sites, je n'ai pas trouvé de point d'entré récent sur ce projet. Dommage l'outil est pratique)

Transfert de fichiers :
FileZilla : https://filezilla-project.org/
Winscp : http://winscp.net/eng/docs/lang:fr

Connexion terminal linux :
http://www.putty.org/
Accompagné de putty ConnectionManager 
(http://www.unixmantra.com/2013/04/putty-connection-manager-tabbed-putty.html#.UkhRRX80_7E)
ou superPutty (http://code.google.com/p/superputty/)

Wiki :
JspWiki http://jspwiki.apache.org/

Regroupe les fonctionnalités Wiki, bugtracking, ...
http://www.redmine.org/

Voilà pour la stack que j'utilise régulièrement. Après bien entendu il existe pour chacun (ou presque) de ces composants des alternatives ayant également ses avantages.

Quelques alternatives (liste non exhaustive)


 EDI :

Build :
Serveur d'intégration continue :
Gestionnaire de source :
 

Aucun commentaire:

Enregistrer un commentaire