ASTON INSTITUT : 02. JAVA, programmation avancée
Organisme
92300 LEVALLOIS PERRETVoir toutes ses formationsAutres organismes proposant cette formation
Durée
Modalités
- Classe virtuelle
- Présentiel
Tout au long de la formation, le formateur s'assure de la compréhension et de l'assimilation des concepts via des QCM et exercices. Après la formation : évaluation à chaud et à froid.
Prix
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é
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
- @Retention
- @Target
- @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
- WeakReference
- PhantomReference
- 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
- Method
- Field
- Constructor
- Modifier
- 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
- Eviter les login/pwd dans son code
- 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)
- @Test
- @BeforeEach / @BeforeAll
- @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
- @EnabledOnXxx
- @DisabledIfXxx
- Les objets injectables en JUnit 5
- TestInfo, TestReporter, RepetitionInfo
- Le TDD avec Mockito
- Définition du covrage et comment l'obtenir
- Via son IDE
- Via le plugin jacoco
- 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