Posts Tagged ‘J2EE’

Java & JEE

Le Java est le langage de programmation que je maîtrise le mieux, voici des informations détaillées sur ce que connais, ce que j’ai réalisé et vers quoi je m’oriente.

Technologies

Dans mes projets personnels et surtout dans mes expériences professionnelles, j’ai eu l’occasion de créer des applications client-serveur distribuées, des applets sur internet, des programmes batch ou encore des applications lourdes (Desktop).

Composants serveur

  • EJB 2/3
  • Spring framework

 

Object Relational Mapping

  • JPA
  • Hibernate
  • iBatis
  • JDBC

 

Frameworks de présentation

  • JSF
  • Struts 2
  • GWT
  • Flex
  • JSP
  • Servlet
  • Swing
  • Applet
  • JNLP

Serveurs d’application

  • Jetty
  • Tomcat
  • JOnAS
  • JBoss
  • Weblogic

 

Outils de test

  • JUnit
  • DBUnit
  • HTMLUnit
  • Mockito
  • Selenium
  • JMeter

 

Outils de développement

  • Netbeans
  • Eclipse
  • Maven
  • Ant

 

Mes réalisations

Les expériences plus représentatives dans le domaine du Java:

  • Application JEE n-tiers de cœur de métier dans le domaine des assurances et la gestion de patrimoine. Architecture complexe avec des serveurs frontaux Tomcat distribués avec équilibrage de charge et gestion d’un cache de donnée également distribué. La présentation des données est réalisé en JSF avec la librairie de composants graphiques Richfaces. Gestion des flux synchrones en webservice Talend et asynchrones avec des batchs ordonnancés avec Quartz.   Les composants métier sont situés sur un cluster JBoss dédié qui héberge des EJB3 qui se connectent à une base de en mode nominal/backup avec Hibernate.
  •  

  • Application JEE fournissant une API de webservice d’authentification renforcée par SMS ou tokens cryptographiques pour les applications de banque en ligne et de paiement électronique. Les services métier Spring et les webservice Axis2 sont déployés sur un environnement Tomcat et l’extraction des donnée est réalisée en Hibernate.
  •  

  • Application JEE réalisant l’acquisition de transaction bancaires pour les commerçants d’une banque Japonaise. L’architecture 3-tiers est composée d’un serveur d’application JOnAS qui héberge des EJB2. Cette application web est réalisée en Struts2 et communique avec des services Spring utilisant Hibernate sous un environnement Tomcat. La connexion aux EJB est assurée par un accès RMI et les environnements de production des deux plateformes se basent sur des versions hétéroclytes de Java.
  •  

  • Application JEE de gestion des biens mobiliers et immobiliers pour le ministère des finances de la Belgique. Architecture 3 tiers entre un serveur de présentation Tomcat et un serveur de composants métier EJB2 JOnAS. La présentation multilingue est réalisée en JSP/Servlet et la connexion à la base en JDBC avec iBatis.
  •  

  • Réalisation d’un framework d’entreprise complet sous Hibernate, JSF et EJB3 dans le but de le faire adopter à tous les projets de mon employeur. Mise en place de concepts métiers complexe par une conception modulaire poussée et une attention particulière pour l’extensibilité.
  •  

  • Réalisation de plugins pour Maven, Talend, Hudson Jenkins, JMeter…

Méthodes & Qualité

Il existe des processus à mettre en place pour améliorer la rentabilité des équipes de développement et la qualité logicielle. Des méthodes de modélisation, d’architecture ou de gestion de projet doivent être mises en place pour les améliorer. Voici une présentation de celles que j’ai utilisées et mises en place dans ma carrière professionnelle.

Systèmes d’Information

Logo ITILv3J’ai été amené à concevoir et exploiter des systèmes d’information dans des domaines fonctionnels complexes. Voici les qualités que je recherche à mettre en œuvre dans les systèmes que je conçois :

  • Haute disponibilité
  • Evolutivité
  • Performance
  • Normalisations de sécurité
  • Facilité de maintenance (documentation et gestion des évolutions)
  • Cycle de vie des données

Pour représenter les concepts métier et bâtir les fondations d’un système, j’utilise les Méthodes UML et Merise. Je peux ainsi communiquer sur des supports compréhensibles du plus grand nombre et faire évoluer mes idées.

Les concepts et le vocabulaire que j’emploie s’appuie sur le référentiel ITILv3 pour lequel j’ai suivi une formation qui a abouti sur une certification.

Outils de développement

J’ai l’habitude de mettre en place plusieurs outils pour aider l’équipe projet à travailler dans de bonnes conditions:

  • Gestion du code source: CVS, Subversion, Git
  • Gestion des anomalies: JIRA, Trac, Redmine, BugZilla
  • Analyse de code: Sonar
  • Gestion des dépendances: Artifactory, Nexus

Ce sont des outils vitaux pour gérer les projets et les maîtriser.

Industrialisation

Pour améliorer la précision et la qualité des livraisons, il est indispensable de mettre en place des processus de construction et de déploiement en production:

  • Automatisation de la construction: Maven, Ant
  • Intégration continue: Continuum, Hudson, Jenkins
  • Gestion des livraisons
  • Gestion de projet: Méthodes Agiles, cycle en V

Ce n’est pas la seule façon de gérer ces aspects, mais c’est ceux sur lesquels j’ai bâti mon expérience.

Qualité logicielle

Pour suivre la qualité d’un projet tout au long de sa vie, je pense qu’il est nécessaire d’appliquer avec rigueur des campagnes de tests pour chaque livraison. Voici les différents tests que j’ai pu mettre en place :

  • Tests unitaires automatisés
  • Spécification des recettes fonctionnelles
  • Tests de charge et non régression: Tests automatisables avec JMeter ou programmes sur-mesure

BI & Décisionnel

Le monde du Business Intelligence et du décisionnel m’intéresse de plus en plus, mes quelques expériences en ce domaine ont su me donner envie d’aller plus en avant.

Manipulation de données

  • Programmes batch en Java et .Net C#
  • Échanges de données synchrones et asynchrones avec Talend
  • Échanges de données asynchrones avec Kettle

 

Reporting

  • Design de rapports avec iReport
  • Intégration de JasperReports dans des environnements hétéroclites complexes
  • Migration de reporting de CrystalReports vers JasperReports
  • Création d’algorithmes de génération de rapport automatiques avec DynamicJasper

 

Expériences

 

Projets réalisés

  • Talend
    • Réalisation de webservice pour l’intégration synchrone de données dans un SI dans le domaine des assurances.
    • Développement de composants Talend pour modifier la structure des données d’entrée dans un format métier spécifique.
  • Kettle
    • Échanges de données B2B pour 3 applications de cœur de métier dans la monétique
    • Développement d’un module de cryptage de données lié à un équipement de sécurité propriétaire


Formations données

  • Talend: Formation d’une journée pour des prestataires chez un client dans l’énergie
  • JasperReports : Formation de 3 jours pour aider un éditeur de progiciel de gestion de la qualité a migrer le reporting de leurs applicatifs vers JasperReports

Open Source

L’utilisation et la collaboration à des projets Open Source me permettent de concevoir des produits qui exploitent ou se basent des technologies tierces.
Les technologies évoluent seules ou par le biais de contributions orientée par les équipes de développements.

Voici les projets qui me tiennent à cœur et que j’ai pu utiliser ou étendre par le développement de plugins:

Technologies serveur

 

  • Linux: Installation, maintenance et utilisation sur des serveurs en production.
  • Apache Web Server: Configuration, sécurité, Reverse proxy, gestion de modules
  • Apache Tomcat: Installation et configuration
  • Jetty: Intégration au processus de construction pour les tests unitaires
  • JBoss AS: Intallation et configuration
  • JOnAS: Configuration
  • PHP: Développement et configuration

Outils de développement

 

  • Maven: Mise en place sur de nombreux projets et développement de plugins
  • Ant: Scripts de construction
  • Make: Définition de scripts de construction de projets C
  • Eclipse: Développement de plugin lié à Maven
  • Netbeans

 

Gestion de source

 

  • Git
  • Subversion: Intégration de règles de commit

Business Intelligence

 

  • Talend: Construction de composants métier et design de jobs
  • Kettle: Construction de composants métier et design de jobs
  • JasperReports : Développement avencé de rapports, rapports dynamiques
 

Gestion de la qualité

 

  • JMeter: Tests de charge, tests de non-régression et développement de composants
  • Hudson / Jenkins: Spécification de processus d’intégration continue et développement d’un plugin pour JMeter
  • Sonar: Intégration à Maven et Hudson, Configuration des règles de qualité
  • Redmine: Intégration avec subversion, Maven et Jenkins