Java avancé
version11
Rédiger un commentaire
Référence | IDL-JAVAA-F |
---|---|
Durée | 2 jour(s) |
Share This Course
Partager le lien
Partager sur les réseaux sociaux
Partager par email
Veuillez s'inscrire afin de partager ce Java avancé par email.
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.