M2I : 02. JAVA, programmation avancée
Organisme
92400 COURBEVOIEVoir toutes ses formationsAutres organismes proposant cette formation
Durée
Modalités
- Classe virtuelle
- Présentiel
L’évaluation des acquis se fait en cours de formation, par des études de cas ou des travaux pratiques et, en fin de formation, par un questionnaire
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é
Jour 1 matin
§ Aspects avancés de Java
La programmation concurrente
Les concepts de la programmation multithread : le modèle d’activités de Java (Runnable
et Thread).
La création/destruction des threads. Ordonnancement des threads.
La synchronisation des threads. Le verrouillage des méthodes et des instructions
(synchronized). Les moniteurs.
Quelques problèmes du multithread : l'interblocage (caractérisation, évitement, prévention, détection), la famine.
Les extensions du modèle introduites dans Java.5 (Callable<T>, Future<T>,
ExecutorService. Les nouvelles collections.
Le modèle Fork/Join. Les extensions avec CompletableFuture
Les divers outils de gestion de la concurrence : les verrous partagés/exclusifs, les sémaphores, les barrières cycliques
Exemple de travaux pratiques (à titre indicatif)
Construction d'une application multithread avec contraintes de concurrence
§ Aspects avancés : La programmation réflexive
Les objectifs et les principes.
La découverte dynamique des informations relatives à une classe ou à un objet.
L’instanciation et l’invocation dynamique.
Exemples de travaux pratiques (à titre indicatif)
Construction d'une application utilisant la réflexivité
Jour 1 après-midi
§ Chargement et vérification des classes
Rôle du compilateur Java
Rôle des classloader
Les différentes zones mémoires de la JVM et leur gestion par le garbage collector
Hiérarchie des différents classloader
Vérification du byte-code
Chargement dynamique ce classe
Implémenter un class loader
Exemples de travaux pratiques (à titre indicatif)
Implémentation d'un classloader chargeant des classes.
Jour 2 matin
§ Accès aux bases de données relationnelles depuis Java
Les capacités de JDBC
Les avantages des ORM
Hibernate
Hibernate : présentation et architecture
Installation et configuration
Persistance des classes et des attributs, associations et héritage
Mapping objet-relationnel avec JPA
Présentation des EJBs Entity
Introduction à JPA (Java Persistance API)
Mapping objet-relationnel, rôle de la clé primaire, mapping des associations (one-to-many,many-to-one etc.)
L’héritage
JPQL, le langage de requête orienté-objet
Jour 2 après-midi
Exemples de travaux pratiques (à titre indicatif)
Mise en œuvre de l’accès à une base de données relationnelle en lecture et écriture, en utilisant JDBC et JPA sur Hibernate
Jour 3 matin
§ Les Frameworks Java
Les Frameworks d’accès aux données
Les Frameworks d’IHM serveur et client
Les Frameworks de gestion de composants
Le Framework Spring
Les objectifs de Spring et de ses extensions
Présentation de Spring Core
Spring et l'accès aux données
Spring et le Web, Spring MVC
Les couches applicatives avec Spring
Les Frameworks de service web
Jersey et REST
CXF et Soap/Rest
Les Frameworks d'interface graphique
Le Framework JSF2
Les Frameworks concurrents client
Exemples de travaux pratiques (à titre indicatif)
Utilisation du Framework Spring
Jour 3 après-midi
§ Tester ses applications en Java
Test Driven Development – Découvrez les grands principes du TDD
Cycle de développement du TDD
Les 3A : Arrange, Act, Assert
Remaniement de code : techniques de refactoring en TDD
Conception émergeante
Gestion des exceptions
Gestion des scénarios
JUnit – Sachez utiliser le framework JUnit pour implémenter des tests
Tests unitaires
Framework xUnit, implémentation Java : jUnit
Principe d’assertions
Alternatives à jUnit (TestNG)
Outillage complémentaire
Mise en œuvre et bonnes pratiques
TDD
Correction des anomalies
Gestion de la montée en charge et de la sécurité des produits
Gestion de la performance
Les Stress tests
Exemples de travaux pratiques (à titre indicatif)
Utilisation de Junit
Jour 4 matin
§ Le processus d’optimisation
Analyser
Coder
Mesurer pour vérifier
Les outils
Profiling
JVisualVM
Eclipse MAT
SoapUI
JMeter
Exemples de travaux pratiques (à titre indicatif)
Utilisation d’outils de profiling
§ Gestion mémoire et optimisation
L’organisation de la mémoire
Le ramasse-miettes
Le cycle de vie des objets
Configurer la mémoire et le GC
Mesure de la mémoire
Off Heap
La gestion de la mémoire et les performances
Les options de la JVM HotSpot pour le suivi de l’activité du GC
Fuite de mémoire
Fuite de ressources
Optimiser l’utilisation de la mémoire
Optimiser l’occupation mémoire
Exemples de travaux pratiques (à titre indicatif)
Utilisation des outils d’optimisation mémoire
Jour 4 après-midi
§ Nouveautés Java
Lambda fonctions
Streams et Streams parallèles
La gestion des modules
Exemples de travaux pratiques (à titre indicatif)
Développement d’une application utilisant les Lambdas, Streams et Modules