Programmation concurrente Maîtrisez le traitement de vos données en Java
Présentation
Dans ce livre, l'auteur commence par présenter ce qu'est la programmation concurrente pour montrer son utilité et son importance : contexte général, historique, types de programmation concurrente, limites actuelles...
Le chapitre qui suit traite de l'accès aux ressources. L'auteur y détaille les différents types de ressources disponibles, les différentes notions à considérer dans le cadre de la programmation concurrente (partage de la ressource, granularité, intégrité de l'information...), ainsi que les différents types d'accès aux données (accès exclusifs, accès concurrentiels, sérialisation des accès...). Des stratégies d'accès à l'information sont également présentées à l'aide d'exemples en Java.
La suite du livre se concentre plus particulièrement sur le traitement de l'information, le cœur de la programmation concurrente. L'API de la programmation concurrente en Java est étudiée : écriture de threads, précautions à prendre, verrous à mettre en place... Les différentes évolutions de l'API Java sont également détaillées, notamment le package concurrent et les collections. D'autres aspects connexes sont ensuite présentés tels que la programmation native à l'aide de la couche logicielle JNI (Java Native Interface), un exemple de MapReduce pour la programmation Big Data, la programmation GPU...
Pour finir, l'auteur décrit la programmation concurrente sous deux environnements de développement : l'environnement Java EE, notamment pour les accès concurrents à la base de données et les EJB, et l'environnement Android.
Des éléments complémentaires sont en téléchargement sur le site www.editions-eni.fr.
Les chapitres du livre :
Avant-propos – Programmation concurrente – Accès aux ressources – Programmation – Divers
Table des matières
-
Programmation concurrente
- 1. Prérequis
- 2. Contexte général de la programmation concurrente
- 2.1 Besoins initiaux
- 2.2 Limites actuelles et réponses apportées
- 3. Les différents types de programmation concurrente
- 3.1 Historique
- 3.2 État de l’art
- 4. Articulation de la programmation concurrente
- 4.1 Accès aux ressources, accès concurrents
- 4.2 Programmation parallèle
-
Accès aux ressources
- 1. Les ressources
- 1.1 Les différents types de ressources
- 1.2 Comment sont-elles manipulées ?
- 1.3 Les accès
- 1.4 Les niveaux où sont effectués les accès concurrents
- 2. Aspect concurrentiel
- 2.1 Nécessité
- 2.2 Partage de la ressource
- 2.3 Granularité
- 2.4 Choix du niveau de granularité
- 2.5 Intégrité de l’information
- 3. Les différents types d’accès aux données
- 3.1 Exclusifs
- 3.2 Concurrentiels simultanés
- 3.3 Distribution des calculs
- 3.4 Cas des fichiers mappés en mémoire
- 3.5 La sérialisation des accès (mise en queue)
- 3.6 Session : cas d’une connexion réseau
- 3.7 Atomicité, copie
- 3.8 Sémaphores
- 4. Optimisation de l’accès à l’information
- 4.1 Localisation de l’information et du traitement, cache
- 5. Transmission et traitement de l’information
- 5.1 Les différents types de communications
- 5.1.1 Point à point (Unicast)
- 5.1.2 Diffusion (Multicast)
- 5.2 Le choix du protocole
- 5.3 Consommation, traitement, fusion et production
- 5.4 Ratios Consommation / Production / Traitement
- 5.1 Les différents types de communications
- 6. Design patterns
- 1. Les ressources
-
Programmation
- 1. Threads
- 1.1 Historique
- 1.2 Cycle de vie
- 2. Présentation de l’API C
- 2.1 Pthread
- 2.2 OpenMP
- 3. Présentation de l’API Java
- 3.1 Programmation utilisant les threads
- 3.2 Cycle de vie
- 3.3 Précautions
- 3.4 Mise en pause d’un thread et blocs verrouillés
- 3.5 API des threads
- 3.5.1 la gestion des threads
- 3.6 L’API Java vis-à-vis de la programmation concurrente
- 3.6.1 ThreadLocal
- 3.6.2 Le package java.util.concurrent
- 3.7 Évolutions de l’API Java
- 3.7.1 Les collections
- 3.7.2 Les interfaces graphiques
- 3.7.3 Pool de threads
- 3.8 Communication entre tâches
- 4. La parallélisation en Java 8
- 5. Environnements : ressources disponibles
- 6. Cluster
- 7. BigData
- 7.1 Émergence du BigData
- 7.2 Exemple de Map & Reduce
- 7.3 Conclusion
- 8. GPU (Graphic Processing Unit)
- 8.1 Introduction
- 8.2 Environnement
- 8.3 Exemples
- 8.4 Conclusion
- 9. SIMD, SISD, SPMD...
- 1. Threads
-
Programmation en environnement spécifique
- 1. Programmation concurrente en Java EE
- 1.1 L’environnement Java EE
- 2. Le cas Android
- 3. JNI
- 3.1 Présentation
- 3.2 Accès aux threads natifs
- Index
- 1. Programmation concurrente en Java EE
Auteur
Laurent JOYEUX En savoir plus
Laurent JOYEUX dispose d'une formation en électronique et est titulaire d'un doctorat en informatique avec une spécialité en traitement d'images. Les thématiques de recherche qu'il a étudiées (restauration de séquences d'images et restitution 3D de macromolécules observées par microscope électronique), l'ont naturellement confronté à l'utilisation de la programmation concurrente avec des implémentations sur machines multiprocesseurs ou sur machines dédiées. Plusieurs missions dans le domaine de l'innovation technologique, du développement de prototypes, du développement full-stack de sites e-commerce et de l'intégration logicielle dans des projets européens l'ont également amené à travailler en environnement Java. Ce livre est l'occasion pour lui de restituer au lecteur sa vision et son expérience de la programmation concurrente en Java.
Caractéristiques
- Niveau Expert
- Nombre de pages 322 pages
- Parution novembre 2017
- Livre (broché) - 17 x 21 cm
- ISBN : 978-2-409-01108-5
- EAN : 9782409011085
- Ref. ENI : EPPROCJAV
- Niveau Expert
- Parution novembre 2017
- HTML
- ISBN : 978-2-409-01114-6
- EAN : 9782409011146
- Ref. ENI : LNEPPROCJAV
Téléchargements
- Des fichiers complémentaires (10,9 Ko)