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)

En présentiel ou en classe virtuelle
En français ou en anglais
Public

Développeurs et développeuses Java, architectes

Accessible aux personnes en situation de handicap

Délai

Le cours peut être organisé dans un délai d'un mois.

Objectifs

A l'issue du cours vous saurez:

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

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
java.util
  • 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 les NullPointerException.
  • L'interface Collection et ses dérivés (List, Set, Queue).
  • Le parallélisme et l'exécution asynchrone avec CompletableFuture et StructuredTaskScope.

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:

Contact

Questions, inscriptions, demande d'adaptation: