JAVA, programmation avancée - F28049

Objectifs

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

Chapitre 1 : Invariants et records
• Rappel sur les invariants (String, Class …)
• Les records en Java 16
• Création d’un record

Chapitre 2 : Evolution des interfaces
• Rappel
• Evolution de l’interface du Java 5 à Java 9

Chapitre 3 : Les génériques
• Le rôle des wrappers
• Les méthodes generic
• Créer des classes et interface génériques
• Utiliser l’héritage avec les generics
• Faire usage de la syntaxe avancée *, ?, extends, super
Exemple d’exercice : En partant d’un code trop ‘copié/collé’ d’accès aux données, mise en place des generics pour gagner en maintenabilité

Chapitre 4 : Les annotations
• Créer ses propres annotations
o @Retention
o @Target
o @Inherited

Chapitre 5 : La gestion de la memoire
• Les options du Garbadge Collector
• Les options de la JVM
• Les classes Java dans java.lang.ref
o WeakReference
o PhantomReference
o SoftReference
Atelier pratique :
Mise en pratique des WeakReference avec une attention particulière sur les effets de bords possibles.

Chapitre 6 : L’introspection / réflexion en JAVA
• Les objectifs et les principes du réflexif.
• L’objet java.lang.class
• Les objets du package java.lang.reflect
o Method
o Field
o Constructor
o Modifier
o Parameter
• Instanciation, appel, récupération d’attribut en introspection

Chapitre 7 : Les modules en JAVA 9
• Définition
• Exposition des packages
• Gestion des dépendances de module
• Utilisation et exposion de services
• L’archive via jmode
• Les mini VM avec jlink
Atelier pratique :
En repartant d’un exercice simple, nous allons créer des modules afin de bien découper le projet.

Chapitre 8 : Le multitâche
• Rappels sur les Thread et Runnable
• Définition pour un objet Thread Safe
• Le parallélisme avancé (Futur, Executor, Callable, ..)
• Le ForkJoinPool
• Les objets dits atomiques
• Les Sémaphores (verrous)
Atelier pratique :
Calcul du nombre de décimal de PI en traitement parallèle.

Chapitre 9 : La gestion des flux en NIO
• Les entrées/sorties
• Sérialisation/désérialisation d’objets
• L’API NIO : Paths, Files, Buffer, Channel, WatchService, View

Chapitre 10 : L’acces aux donnees via JPA
• Rappel JDBC
• Notion de DataSource et de Pool de connexions
• Le Mapping Objet Relationnel (ORM)
• L’EntityManger, l’EntityMangerFactory
• Le transactionnel en JPA
• Le JPQL un remplaçant du SQL
• Focus sur la sécurisation
o Eviter les login/pwd dans son code
o Eviter l’injection SQL
Atelier pratique :
Chargement en parallèle de plusieurs fichiers textes afin de remplir une base de données de jeux d’essais.

Chapitre 11 : Les tests unitaires en Junit
• Objectif des tests unitaires
• Historique des 3 versions de Junit (v3, 4 5)
• Annotations principales (Junit 5)
o @Test
o @BeforeEach / @BeforeAll
o @AfterEach / @AfterAll
• Les Assertions et Assumptions
• Les suites de tests
• Les familles / catégories de test (@Tag)
• Les tests paramétriques
• Les tests répétés, annotation @RepeatedTest
• Les annotations conditionnelles
o @EnabledOnXxx
o @DisabledIfXxx
• Les objets injectables en Junit 5
o TestInfo, TestReporter, RepetitionInfo
• Le TDD avec Mockito
• Définition du covrage et comment l’obtenir
o Via son IDE
o Via le plugin jacoco
o Visualisation dans SonarQube
Atelier pratique :
Mise en place des tests unitaires sur l’application écrite précédemment. Utilisation des mock pour la partie d’accès aux données

Recherches

Tout le site Le catalogue

Liens directs