Introduction

Cette formation vous permettra de maîtriser la programmation objet en Java, la programmation concurrente et les outils de base du développement. Elle constitue le premier élément du parcours « formation de base Java EE ».

Plan du cour

 

Slide

1) introduction (environ 1/2 de journée)

- Qu'est-ce que Java, une JVM

- Le framework Java EE, les différents serveurs Applicatif J2EE ?

- Qu'est-ce qu'Eclipse ? Comment le configurer ?

- Le debuggage

Travaux pratiques

Installation du JDK, gestion de la variable d’environnement classpath. Installation puis utilisation de l’IDE Eclipse en perspective Java, utilisation de Eclipse en mode debug.

 

2) Les constructions de base du langage (environ 3/4 de journée)

- Les variables : déclaration et typage.

- Les méthodes : définition.

- Les expressions.

- Les instructions de contrôle : les instructions conditionnelles, de boucle, de branchement.

- Les tableaux.

- Les unités de compilation et packages : le contrôle de la visibilité des classes, le mécanisme d'import.

- Les imports statiques.

Travaux pratiques

Suite d’exercices simples permettant la prise en main de l’environnement de développement (Eclipse en perspective Java), notamment la documentation et la réalisation d’un programme simple. Utilisation des packages.

 

3) Tests logiciels (environ 3/4 de journée)

- Pourquoi faire des tests ?

- Présentation des différents types de tests : tests unitaires, fonctionnels, de robustesse et de performance.

- Quels tests lancer et quand ?

- Utilité des objets "Mock" et "Fake" durant les tests unitaires. Couverture des tests unitaires.

Travaux pratiques

Installer JUnit sous Eclipse. Ajouter des tests unitaires avec JUnit sur les projets Eclipse déjà écrits.

 

4) Bonnes pratiques de conception d'une application (environ 1/2 de journée)

- Découpage en couches (données, métier, présentation).

- Présentation des enjeux d'un développement d'entreprise.

- Introduction à l'écosystème JAVA (JEE, Spring, Hibernate, JSF ou Struts...).

Travaux pratiques

Echanges quant au choix technique du framework Java EE Web Profile. Réflexion sur la conception en couche.

 

5) Les techniques Objet (environ 1/2  journée)

- Les principes généraux de la modélisation et de la programmation Objet.

- L'abstraction et l'encapsulation : les interfaces.

- Les différentes formes d'héritage, le polymorphisme.

- Introduction à la modélisation UML

Travaux pratiques

La notion d’identité simple seras étendue dans l’application de registre d’identité afin de faire apparaitre des particularités.

 

6) La gestion des versions : introduction à SVN (environ 3/4 de journée)

- Les concepts généraux liés à la gestion de versions.

- Les concepts SVN : dépôt, projets, révisions, tronc, branches et tags.

- Les principales opérations offertes au développeur. La gestion des conflits.

- La gestion des branches. Les perspectives SVN proposées par les plug-ins Eclipse.

Travaux pratiques

Installation d’une solution de versioning, installation du bon plug-in dans Eclipse. Création de projets associés à un repository. Gestion des versions de l'application développée – récupération d’une copie locale, modifications, fusion, commit.

 

7) Définition de la structure d'un projet avec Maven (environ 3/4 de journée)

- Définition de la structure d’un projet.

- Les conventions. Les dépendances entre projets. Les tâches prédéfinies : compilation, génération d'archives...

- Les perspectives Maven proposées par les plug-ins Eclipse.

Travaux pratiques

Utilisation de Maven sous Eclipse pour automatiser une succession de traitements notamment de test.

 

8) Quelques Design Pattern (environ 1/4 de journée)

- Les objectifs et les avantages.

- Les Design Patterns les plus populaires dans les architectures logicielles modernes.

 

9) mesures de la qualité (environ 1/4 de journée)

- Synthèse des mesures qualité.

- La convention de codage et la documentation.

- La couverture de tests et l'automatisation des procédures.

- Mise en place d'un tableau de bord de la qualité.

Fil Rouge

Contexte

L’ETNIC possède un site web dédié aux offres d’emploi (MonJob @ Etnic).

Ce site se sépare en trois parties front-end, backend-utilisateur, backend-administrateur.

La partie front end permet :

La partie backend utilisateur permet

La partie backend administrateur permet

Risques

Cette application n’est pas une application critique (elle n’empêche pas l’ETNIC de fonctionner en cas d’arrêt), mais c’est un cas typique d’application dont la qualité doit être élevée car :

Il est donc essentiel pendant la formation et ce fil rouge de faire les tests suffisants pour éviter tous problèmes

Parcours Utilisateurs

Il y a trois parcours utilisateurs :

Réalisation

Le but de ce fil rouge n’est pas de refaire MonJob en entier dans le cadre de la formation.

Ci-après les objectifs plus ou moins atteignables lors de la formation :

Objectif : Niveau 1 je pratique le Java/J2EE et je suis à l’aise

Être à l’aise avec Java/J2EE est de pouvoir faire quelques classes, construire une application Web et mettre en place les éléments de qualité logiciel me garantissant que cela fonctionne.

Je dois faire l’application suivante :

Ce que je dois comprendre est :

Objectif : Niveau 2 je connais le Java/J2EE et je suis plus qu’à l’aise

Je suis assez à l’aise pour monter une architecture plus complexe et en faire une application Web. Je comprends que la mise en place des tests est une nécessité pour maintenir mon architecture Web stable.

Je dois faire l’application suivante :

Ce que je dois comprendre :

Objectif : Niveau 3 Le Java/J2EE n’est pas le problème ici

Je pense déjà au futur de cette application. J’ai compris comment monter une architecture très complexe, stable dans le temps et suffisamment performante pour accueillir plein de candidats.

Je dois faire l’application suivante :

A minima, il est possible de préciser un titre au CV, donner un texte libre et uploader du CV. Le format de l’upload est du PDF d’une taille maximal de 200ko.

Je comprends largement comment faire cette application. J’ai monté les tests unitaires et les tests fonctionnels. Ma couverture de code est bonne (70%), mes tests fonctionnels sont complets et je me prépare à monter des tests de performances et des tests de sécurité.

Objet du système

Nous donnons ici les caractéristiques des objets du système

Un Job est défini par :

Un Candidat est défini par :

 

Fil Rouge Civadis

Gestion Simplifié de recrutement  

Contexte 

Le but de l’application est de fournir à Civadis un logiciel de gestion simplifié du recrutement. 

Ce site se sépare en trois parties front-end, backend-utilisateur, backend-administrateur. 

La partie front end permet : 

La partie Backend Invité permet 

La partie backend administrateur permet 

Risques 

Cette application n’est pas une application critique (elle n’empêche pas Civadis de fonctionner en cas d’arrêt), mais c’est un cas typique d’application dont la qualité doit être élevée car : 

Il est donc essentiel pendant la formation et ce fil rouge de faire les tests suffisants pour éviter tous problèmes  

Parcours Utilisateurs 

Il y a trois parcours utilisateurs : 

Réalisation 

Le but de ce fil rouge n’est pas de refaire l’applicatif de recrutement en entier dans le cadre de la formation. 

Ci-après les objectifs plus ou moins atteignables lors de la formation : 

Objectif : Niveau 1 je pratique le Java et je suis à l’aise 

Être à l’aise avec Java est de pouvoir faire quelques classes, construire une application Web et mettre en place les éléments de qualité logiciel me garantissant que cela fonctionne. 

Je dois faire l’application suivante : 

Afin de pouvoir créer une offre, il est nécessaire de pouvoir encoder pour créer une offre (A titre d’exemple) : 

En termes d’architecture, il est proposé mais non imposé l’approche suivante : 

Ce que je dois comprendre est : 

Objectif : Niveau 2 je connais le Java et je suis plus qu’à l’aise 

Je suis assez à l’aise pour monter une architecture plus complexe et en faire une application Web. Je comprends que la mise en place des tests est une nécessité pour maintenir mon architecture Web stable. 

Je dois faire l’application suivante : 

 

La candidature d’une personne peut contenir à titre d’exemple : 

En termes d’architecture, il est proposé mais non imposé l’approche suivante : 

Afin de mettre en place la création d’utilisateur qui nécessite une validation d’email, il est possible d’utiliser les composants suivants : 

 

Ce que je dois comprendre : 

Objectif : Niveau 3 Le Java n’est pas le problème ici 

Je pense déjà au futur de cette application. J’ai compris comment monter une architecture très complexe, stable dans le temps et suffisamment performante pour accueillir plein de candidats. 

Je dois faire l’application suivante : 

Pour chacune des offres les candidats doivent passer deux épreuves, une première épreuve écrite et dans le cas où l’épreuve écrite est réussie, une épreuve orale.  

 

L’application doit permettre au gestionnaire RH de sélectionner à chaque étape les candidats retenus pour l’étape suivante. A chaque passage d’une étape à l’autre, les candidats non retenus doivent recevoir un mail et les autres candidats reçoivent un autre mail pour les inviter à l’étape suivante. Enfin pour chaque candidat avançant dans le process, il est possible d’envoyer un courriel à la personne de contact. 

Lorsqu’un candidat est retenu, le Job est dépublié automatiquement. 

Afin de mettre en place la fonctionnalité d’Upload de pièce d’un utilisateur, il est possible de s’inspirer de : 

 

Je comprends largement comment faire cette application. J’ai monté les tests unitaires et les tests fonctionnels. Ma couverture de code est bonne (70%), mes tests fonctionnels sont complets et je me prépare à monter des tests de performances et des tests de sécurité de base. 

 

Objectif : Je pratique de l’Angular 

 

Cet objectif est transverse aux objectifs Java. Le but ici est de monter un applicatif Angular avec PrimeNG afin : 

De façon non exhaustive et non obligatoire, il est possible de s’inspirer des sketch suivants fortement inspiré de : 

https://www.primefaces.org/primeng/showcase/#/dataview 

 

 

 

Une deuxième page permet d’afficher un job en détail : 

 

 

En fonction de l’état de l’utilisateur (connecté ou pas), il est possible de postuler à l’offre. 

 

L’interface backend RH permet pour chaque Job d’avoir la liste des candidats d’un job.