Bonnes pratiques de conception et de programmation
En Java il est possible de "faire bien avec peu": maitriser les fondamentaux permet de réaliser des applications fiables et maintenables et d'apprendre ensuite avec facilité la plupart des frameworks qui font la richesse de l'écosystème Java.
Ce cours vous permettra de bien connaître les paradigmes de programmation (objet, fonctionnel, déclaratif), les types de base de Java SE, les designs patterns et le fonctionnement de la JVM (gestion des threads et gestion de la mémoire). Il vous permettra de passer un cap, de ne plus seulement "faire" mais "bien faire".
(21 heures)
Développeurs et développeuses Java, architectes
Accessible aux personnes en situation de handicap
DélaiLe cours peut être organisé dans un délai d'un mois.
Objectifs
A l'issue du cours vous saurez:- apprécier une problématique métier et proposer une architecture adaptée;
- utiliser des manière optimale les possibilités du langage Java;
- manipuler les types de bases du langage en comprenant leur fonctionnement;
- réaliser des applications économes en ressources (threads, occupation mémoire).
Prérequis
Ce cours demande une connaissance de base de la programmation Java, une habitude de travailler avec Eclipse ou IntelliJ et une expérience de quelques mois sur un projet en entreprise.
Méthodes pédagogiques
- Explication, pour chaque concept, du problème qu'il prétend résoudre.
- Mise en pratique d'un concept immédiatement après qu'il ait été présenté.
- Validation de chaque étape par exécution de tests unitaires.
- Exercice « fil rouge » pour obtenir en fin de cours une application complète.
- QCM en fin de chapitre pour s'assurer de l'acquisition des connaissances.
Programme détaillé
Introduction: que signifie Java ?
- Un langage.
- Un socle technique Java SE.
- Un environnement d'exécution: la JVM.
- Un écosystème composé de librairies, d'API (Jakarta EE), de frameworks et de serveurs.
Mise en pratique: prise en main du JDK, compilation d'une classe avec javac
, analyse du
bytecode et exécution de cette classe.
Bonnes pratiques de conception
- L'adoption d'un langage commun (ubiquitous language).
- La délimitation des contextes (bounded contexts).
- Les principes SOLID, KISS, DRY, POJO.
- Le découpage en couches.
- Performance is a feature.
- Les opérations I/O et l'avantage de l'exécution non bloquante.
- Les transactions et le choix de la cohérence: forte ou à terme.
- Les tests (unitaire, intégration) pour livrer des applications fiables.
Mise en pratique: prise en main du projet "fil rouge", analyse critique pour identifier les mauvaises pratiques.
Les design patterns essentiels
- Facade pour implémenter le découpage en couches.
- Strategy pour appliquer l'injection de dépéndances.
- Singleton et prototype pour contrôler le cycle de vie d'un objet.
- Factory pour la création des instances.
- Proxy pour l'application de cross cutting concerns.
- Command pour représenter les user inputs liés à un cas d'utilisation et appliquer une logique métier.
Mise en pratique: mise en oeuvre des bonnes pratiques de conception sur le projet "fil rouge" par application des design patterns.
Bonnes pratiques d'utilisation du langage
- La programmation orientée objet et les nouveautés (record, sealed classes).
- Le pattern matching.
- Les types génériques.
- L'immutabilité.
- La méta-programmation avec les annotations.
- La programmation fonctionnelle avec les expressions lambda.
- La gestion des exceptions (checked, unchecked, technique de wrapping, try-with-resources).
Mise en pratique: utilisation optimale des fonctionnalités du langage dans le projet "fil rouge".
Les types de base et leurs subtilités
- La classe
java.lang.Object
et ses méthodes. - La classe
String
. - Les interfaces du package
java.lang
:Comparable
,Serializable
,Clonable
. - La représentation du temps avec les classes du package
java.time
. - L'application du paradigme Map Reduce avec les
Stream
. - La classe
Optional
pour limiter lesNullPointerException
. - L'interface
Collection
et ses dérivés (List
,Set
,Queue
). - Le parallélisme et l'exécution asynchrone avec
CompletableFuture
etStructuredTaskScope
.
Mise en pratique: utilisation optimale des types de bases dans le projet "fil rouge".
Le fonctionnement de la JVM
- La compilation Just in time et ses avantages.
- Présentation de la compilation ahead of time avec GraalVM.
- La gestion de la mémoire.
- La gestion des threads.
Mise en pratique: configuration de l'application pour utiliser les virtual threads, observation du comportement du garbage collector.
Prix et financements
2 12
Réduction de 50% pour les associations reconnues d'utilité publique.
Sources de financements pour les organisations françaises:
- prise en charge tout ou partie du coût de la formation par votre opérateur de compétence (OPCO);
- Le dispositif FNE formation si votre organisation est éligible.
- Le plan de développement des compétences de votre entreprise (renseignez-vous auprès de votre service RH).