Java avancé

Java avancé

version11 

Référence IDL-JAVAA-F
Durée 2 jour(s)

Pour une session intra ou sur mesure

Demander un devis
Avancé Développement logiciel

Cette 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

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.