Java avancé
version11
| Référence | IDL-JAVAA-F |
|---|---|
| Durée | 2 jour(s) |
Pour une session intra ou sur mesure
Demander un devisCette formation a pour but de faire découvrir des concepts plus avancés du langage de programmation Java, à travers quelques nouveautés apparues au fil des versions successives comme la programmation concurrente et l'exploitation d'une base de données relationnelle, mais également quelques librairies utiles du langage.
Objectifs pédagogiques
À l’issue de la formation, le participant sera en mesure de :
- Développer une application performante tirant profit d'un ordinateur multicœurs.
- Utiliser les concepts de métaprogrammation et de réflexion.
- Lire et écrire des données à l'aide du format d'échange universel XML.
- Persister et récupérer vos données en utilisant une base de données relationnelle.
- Développer une interface web à votre application.
- Appliquer les techniques de programmation concurrente.
- Créer des annotations personnalisées et utiliser des annotations existantes.
- Utiliser les fonctionnalités du module JAXB, du module JDBC et des modules Servlet et JSP.
Public concerné
Professionnels et techniciens spécialisés en TI.
Prérequis
- Maîtriser le langage Java.
- Connaitre les concepts de bases de données relationnelles et du langage SQL.
- Disposer d'une expérience en programmation Java.
Programme de la formation
Paradigme Orienté Objet
- Les principes.
- L’importance et avantages de la POO.
- Les interfaces.
- Les classes abstraites.
- L'héritage.
- Passage de la conception vers l'implémentation.
- Types d'associations et effets sur l'implémentation.
- Architecture Logiciel.
- Relation entre UML et Java.
- l'API JavaDoc pour la génération automatique de la documentation.
Gestion des erreurs avec les exceptions
- Qu’est-ce que qu’une exception ?
- Les différentes exceptions en Java.
- Les blocs try/catch/finally.
- Gestion locale ou centralisée.
- Créer ses propres exceptions métier.
Du Java 8 vers Java 11
- Les évolutions dans la JVM.
- Le support de standards.
JSHELL
- Présentation.
- Utilisation.
- Les fonctionnalités avancées.
Les modules
- La modularité c'est quoi et pourquoi?
- La programmation orientée objet et l’encapsulation.
- Le système de modules de Java.
- Le descripteur de modules.
- La visibilité entre modules.
- Les dépendances.
- L’accès par introspection aux modules.
- Le ModulePath.
- Le packaging des modules.
- Les différents type de modules.
- Les services.
Génériques
- Utilisation de génériques.
- Limites du type.
- Caractères génériques.
- Méthodes génériques.
- Forces et faiblesses des génériques.
- Code héritage et génériques.
API Collection
- Introduction.
- Interface Collection.
- Interface List.
- Interface Set.
- Interface SortedSet.
- Interface NavigableSet.
- Interfaces Queue et Deque.
- Tables de hachage
Les expressions lambda
- Comprendre les principes de la programmation fonctionnelle.
- Syntaxe.
- des classes internes anonymes.
- Notion d’interface fonctionnelle.
- Anatomie d'une expression Lambda.
- Simplifier les expressions lambdas avec les références de méthodes.
- Mise en œuvre des interfaces fonctionnelles : Consumer, Supplier, Predicate, Function.
L’API Stream
- Objectif de l’API Stream.
- Obtention et sortie d’un stream.
- Opérations intermédiaires et terminales.
- Mise en œuvre des méthodes forEach, map, filter, findFirst.
- Principe de l’évaluation paresseuse.
- Intérêt de la la classe Optional.
- Réduction avec reduce et collect.
- Interface Collector et classe Collectors.
- Autresméthodes : limit, skip, sorted, min, max, distinct, allMatch, anyMatch, noneMatch, count.
- Streams parallèles, précautionsd’usage.
Accès complet au système d’E/S, et gestion de fichiers avec Nio.2
- Les nouvelles classes java.nio.file.Files et java.nio.file.Path.
- Manipulation de chemins, parcours de répertoires et d'arborescences.
- Accès aux attributs d'un fichier.
- Notification des changements dans un répertoire.
- Gestion des archives Jar/zip.
- Entrées/sorties asynchrones.
Les annotations
- Annotations standards et Méta-Annotations.
- Rétention des Annotations.
- Cible (Target) des Annotations.
- Les arguments de l'annotation.
- Lecture par Reflection d'une Annotation.
- APT : Annotation Processing Tools.
API Date/Time
- La gestion du temps «classique» et sa lourdeur de manipulation en Java (jour, mois, année, heure, minutes, sec.).
- Les concepts de temps machine et temps humain avec la nouvelle API.
- La gestion du temps machine avec java.time.Instant et java.time.Duration.
- Le temps humain avec java.time.LocalDate, java.time.LocalTime.
- Java.time.LocalDateTime.
Les accès concurrents en multi-threading
- Créer des threads avec Runnable, Callable.
- Utiliser un ExecutorService pour exécuter les tâches.
- Identifer les problèmes potentiels du multi-threading parmi les deadlocks, starvation, livelock, race conditions.
- Utiliser le mot-clé synchronized, les verrous Lock.
- Utiliser les classes Atomic.
- Utiliser les collections java.util.concurrent et les classes CyclicBarrier et CopyOnWriteArrayList.
- Utiliser le framework Fork/Join.
JDBC (Java DataBase Connectivity)
- Architecture de JDBC.
- Effectuer des requêtes à la base de données.
- Utilisation de procédures stockées.
- Gestion des transactions.
Sécurité
- Conception sûre d’une classe.
- Validation des saisies.
- Protection ds données sensibles.
- Sérialisation d’objets.
- Prévention des attaques par déni de service.
- Lecture attentive de « Secure Coding Guidelines for Java SE » fourni par Oracle.
Les évolutions dans les API
- Les évolutions dans le langage.
- Les nouvelles API.
- StackWalking API.
- Flow API.
- VarHandles.
- HTTP Client.
Moyens pédagogiques
Évaluation continue des acquis avec des questions orales, des exercices, des QCM, des cas pratiques ou mises en situation.