Aller au contenu principal

M2I FORMATION : 02. JAVA, programmation avancée

Durée

28 heures

Modalités

Formation
  • Classe virtuelle
  • Présentiel
Évaluation

L’évaluation des acquis se fait en cours de formation, par des études de cas ou des travaux pratiques et, en fin de formation, par un questionnaire

Prix

Inter
La formation en Inter est dispensée pour un groupe de salariés d’entreprises différentes.
1 234,76 € HT / personne
Intra
La formation en Intra est dispensée pour un groupe de salariés d’une seule et même entreprise.
4 939,05 € HT / groupe
4 stagiaires minimum

Public

Développeurs, chargés de développement d’applications informatiques, chefs de projets proches du développement…

Pré-requis

Maitriser le langage Java, connaître les concepts de bases de données relationnelles et du langage SQL, disposer d’une expérience en programmation Java.

Objectifs pédagogiques

- Maîtriser les aspects avancés du langage Java 

- Comprendre comment appliquer les principaux Frameworks et librairies Java. Comprendre le modèle de sécurité et le chargement des classes Java 

- Savoir programmer en Java dans le contexte des bases de données relationnelles 

- Savoir tester, debugger et optimiser ses applications 

- Appréhender les nouveautés Java

Programme détaillé

Jour 1 - Matin

Aspects avancés de Java

La programmation concurrente

Les concepts de la programmation multi-thread :

- Le modèle d'activités de Java (Runnable et Thread)

La création / destruction des threads

Ordonnancement des threads

La synchronisation des threads

Le verrouillage des méthodes et des instructions (synchronized)

Les moniteurs

Quelques problèmes du multi-thread

- L'interblocage (caractérisation, évitement, prévention, détection), la famine

Les extensions du modèle introduites dans Java 5 (Callable<T>, Future<T>, ExecutorService), les nouvelles collections

Exemple de travaux pratiques (à titre indicatif)

Construction d'une application multi-thread avec contraintes de concurrence

Jour 1 - Après-midi

§ Aspects avancés : la programmation réflexive

Le modèle Fork/Join

Les extensions avec CompletableFuture

Les divers outils de gestion de la concurrence :

- Les verrous partagés / exclusifs

- Les sémaphores

- Les barrières cycliques

Les objectifs et les principes

La découverte dynamique des informations relatives à une classe ou à un objet

L'instanciation et l'invocation dynamique

Exemples de travaux pratiques (à titre indicatif)

Mise en pratique sur :

- La programmation parallèle

- Le CompletableFuture

- Les sémaphores

Jour 2 - Matin

§ Implémentation d'un ClassLoader chargeant des classes

Rôle du compilateur Java

Rôle des ClassLoaders

Les différentes zones mémoires de la JVM (Java Virtual Machine) et leur gestion par le GC (Garbage Collector)

Hiérarchie des différents ClassLoaders

Vérification du Bytecode

Chargement dynamique de classe

Implémenter un ClassLoader

Manipulation des énumérations

Exemples de travaux pratiques (à titre indicatif)

Quelques exemples de chargement de classes et traitements des annotations personnalisées

Jour 2 - Après-midi

§ Les nouveautés du switch et Record

Switch expressions

Pattern Matching instanceof

Record (classe de données simplifiée pour DTO)

Exemple de travaux pratiques (à titre indicatif)

Mise en oeuvre des instructions Switch

Jour 3 - Matin

§ La console JShell Java

Principe REPL (Read-Eval-Print Loop)

Présentation de JShell Java

Fonctionnement interne de JShell

Utilisation de JShell (exemples)

§ Process API, HTTP2 API

L'interface ProcessHandle

Gestion des processus depuis Java 9

Présentation de HTTP2 Client

Exemples de travaux pratiques (à titre indicatif)

Programmation d'un cas d'école avec la console JShell

Mise en pratique d'un client HttpClient avec Java 9

Jour 3 - Après-midi

§ Tester ses applications en Java

Test Driven Development - Découvrir les grands principes du TDD

Cycle de développement du TDD

Les 3A : Arrange, Act, Assert

Remaniement de code : techniques de refactoring en TDD

Conception émergeante

Gestion des exceptions

Gestion des scénarios

JUnit - Savoir utiliser le framework JUnit pour implémenter des tests

Tests unitaires

Exemple de travaux pratiques (à titre indicatif)

Utilisation de JUnit

Jour 4 - Matin

§ D'autres nouveautés Java

Lambda fonctions

Streams et Streams parallèles

La gestion des modules

Exemple de travaux pratiques (à titre indicatif)

Développement d'une application utilisant les Lambdas, Streams et modules

Jour 4 - Après-midi

§ Le processus d'optimisation

Analyser

Coder

Mesurer pour vérifier

Les outils

Profiling

JVisualVM

Eclipse MAT

SoapUI

JMeter

Exemple de travaux pratiques (à titre indicatif)

Utilisation d'outils de profiling

§ Gestion mémoire et optimisation

L'organisation de la mémoire

Le ramasse-miettes

Le cycle de vie des objets

Configurer la mémoire et le GC

Mesure de la mémoire

Off Heap

La gestion de la mémoire et les performances

Les options de la JVM HotSpot pour le suivi de l'activité du GC

Fuite de mémoire

Fuite de ressources

Optimiser l'utilisation de la mémoire

Optimiser l'occupation mémoire

Exemple de travaux pratiques (à titre indicatif)

Utilisation des outils d'optimisation mémoire

Sessions

Filtrer les résultats
Modalités pédagogiques
Formation synchrone se déroulant avec la présence physique du (des) formateur(s) et du (des) apprenant(s) réunis dans un même lieu de formation.
Formation combinant des séquences en présentiel et des séquences à distance synchrones ou asynchrones.
Formation à distance, asynchrone, s’appuyant sur une plateforme d’apprentissage, pouvant être complétée par d’autres modalités de formation à distance (visio-conférence…)
Formation à distance, synchrone, s’appuyant sur un dispositif de visio-conférence. La classe virtuelle recrée à distance les conditions d’une formation en salle traditionnelle.
Type de formation
La formation en Inter est dispensée pour un groupe de salariés d’entreprises différentes.
La formation en Intra est dispensée pour un groupe de salariés d’une seule et même entreprise.
Options
Les compétences professionnelles visées par la formation sont validées via un test permettant d’obtenir une certification officielle.
Ces sessions ne peuvent être ni annulées ni reportées par l’organisme de formation.