Java & Internet Java et Internet
Concepts et programmation - 2e édition
Tome 1 - Coté client

Gilles Roussel, Etienne Duris, Nicolas Bedon et Rémi Forax

 

La deuxième édition du livre « Java et Internet » est paru en novembre 2002 chez Vuibert Informatique. Il compte 845 pages au format 17x24 et son numéro ISBN est : 2-7117-8689-7.

Présentation

Java offre de nombreuses abstractions nécessaires au développement rapide d'applications Internet. Après la nouvelle architecture de sécurité de Java 2, la version 1.4 du SDK apporte encore de nouvelles fonctionnalités en terme de sécurité, de gestion des applications, ainsi qu'une refonte des API d'entrées-sorties avec la notion de canaux. Ces différentes fonctionnalités confortent Java dans sa position de langage de prédilection pour le développement d'applications Internet. Toutefois, le développement efficace et la mise en oeuvre optimale de telles applications requièrent la compréhension préalable des concepts et protocoles réseaux sous-jacents.

Cet ouvrage propose d'exposer conjointement la programmation orientée objet avec Java et les protocoles réseaux, selon un point de vue à la fois théorique et pratique. Chaque principe est présenté de manière conceptuelle, avant d'être illustré par des exemples de programmation. Le premier tome de cette seconde édition s'intéresse essentiellement au point de vue client du développement d'applications Internet en Java, tandis que le second tome s'oriente davantage vers les technologies et protocoles dédiés aux applications de services.

Ce livre commence par rappeler les bases essentielles de la programmation objet avec Java, en portant un intérêt particulier aux aspects du langage relatifs à la programmation d'applications réseaux. Ensuite, il traite des pans de l'API de programmation qui offrent des fonctionnalités transverses aux applications : réflexivité, chargement de classes, conteneurs, gestion de la mémoire, paramétrage, journalisation, flots d'entrées-sorties, sécurité et programmation concurrente sont traités en détail. Les concepts et protocoles réseaux sont alors abordés. Les protocoles Ethernet, IP, UDP et TCP sont détaillés afin de donner une vue précise du support de l'Internet. Les API de manipulation réseau de Java correspondantes sont présentées et abondamment illustrées. Couramment utilisés pour l'accès aux ressources Internet, les protocoles HTTP et SSL sont étudiés ainsi que l'utilisation de Java dans les applettes et avec Java Web Start. Enfin, le dernier chapitre est consacré aux nouvelles classes d'entrées-sorties qui offrent une gestion plus fine et plus performante des mécanismes de lecture et d'écriture.

Si l'approche de cet ouvrage se veut pédagogique, elle a également pour ambition d'élaborer une référence sur le sujet, de par son souci d'exhaustivité.

Table des matières
Préface
1.Introduction
1.1Un peu d'histoire
1.2Infrastructure de la technologie Java
1.3Les versions de la plate-forme Java
1.4Bonjour monde !
2.Le langage
2.1Textes et commentaires
2.2Blocs
2.3Structures de contrôle
2.4Variables et paramètres
2.5Les types et les expressions
2.6Les types primitifs
2.6.1Constantes et codage des types primitifs
2.6.2La promotion entière
2.6.3Les conversions
2.6.4Le décalage des numériques signés
2.6.5Les spécificités du calcul en flottants
2.7Les références
2.8Variables référence, typage et sous-typage
Bibliographie
3.Les classes et les objets
3.1Classes et objets
3.1.1Définition et création
3.1.2L'accès aux membres
3.1.3Les méthodes
3.1.4Les membres statiques
3.1.5L'initialisation des champs
3.1.6La surcharge de méthode et de constructeur
3.1.7La délégation
3.1.8Enveloppes des types primitifs
3.1.9Allocation et destruction des objets
3.2L'héritage
3.2.1étendre une classe existante
3.2.2Héritage et création d'objets
3.2.3Le sous-typage des références
3.2.4Le transtypage des références
3.2.5Le masquage et la redéfinition de membre
3.2.6Surcharge de méthode et héritage
3.2.7L'appel de méthode
3.3Les interfaces
3.4Les classes abstraites
3.5Les classes internes
3.5.1Classe interne non statique
3.5.2Classe interne locale
3.5.3Classe anonyme
3.5.4Classe interne statique
3.5.5Classes internes et héritage
3.6L'organisation des classes et l'accessibilité
3.6.1Les paquetages
3.6.2L'accessibilité
4.Les exceptions, les tableaux et les chaînes de caractères
4.1Les exceptions
4.1.1La vie d'une exception
4.1.2Capture et propagation des exceptions
4.1.3Le chaînage des exceptions
4.1.4La redéfinition de méthode et les exceptions
4.2Les tableaux
4.2.1La déclaration
4.2.2La création et l'initialisation
4.2.3L'utilisation
4.2.4Les tableaux et l'héritage
4.3Les chaînes de caractères
4.3.1La classe String
4.3.2Les constantes littérales
4.3.3La classe StringBuffer
4.3.4L'opérateur de concaténation
4.3.5L'interface CharSequence
4.3.6Les objets et les chaînes de caractères
5.Les classes fondamentales
5.1La classe Object
5.1.1Afficher un objet
5.1.2Identité et égalité
5.1.3La copie d'objets
5.1.4Méthode testamentaire
5.1.5Synchronisation
5.1.6L'objet classe
5.2La classe Class
5.3Le chargement de classes
5.3.1Le comportement par défaut
5.3.2La classe ClassLoader
5.3.3écrire son propre chargeur de classes
5.3.4Autres mécanismes du chargeur de classes
6.Les classes utiles
6.1Les relations d'ordre sur les objets
6.1.1L'ordre naturel
6.1.2Les objets comparateurs
6.2Les conteneurs
6.2.1Les conteneurs de type Map
6.2.2Les conteneurs de type Collection
6.3Les expressions régulières
6.3.1Représentation et construction
6.3.2La recherche d'un motif
6.3.3Décomposer le résultat d'une recherche
6.4Références et gestion mémoire
6.4.1Les différents états d'un objet
6.4.2Les références faibles
6.4.3Les références souples
6.4.4Les références fantômes
Bibliographie
7.Paramétrage et suivi des applications
7.1Le paramétrage des applications
7.1.1Les propriétés
7.1.2Les préférences
7.2L'internationalisation des applications
7.2.1La classe Locale
7.2.2Les ressources d'internationalisation
7.2.3Le paquetage java.text
7.3La journalisation
7.3.1Le paquetage java.util.logging
7.3.2Utiliser plusieurs journaliseurs
7.3.3Les propriétés de journalisation
7.4Le générateur de documentation
7.4.1Un exemple
7.4.2Documenter les classes et interfaces
7.4.3Documenter un paquetage
7.4.4Insérer ses propres documents
7.4.5Utiliser Javadoc
7.4.6Les doclettes et taglettes
7.5Les assertions
Bibliographie
8.Les flots
8.1Généralités
8.1.1Les flots d'octets
8.1.2Les flots de caractères
8.2Les flots concrets
8.2.1Les flots sur des fichiers
8.3Les filtres
8.4Les flots d'objets
8.4.1Le comportement par défaut
8.4.2Personnaliser la sauvegarde d'un objet
8.4.3La sauvegarde des objets dans le flot
8.4.4Personnaliser un flot d'objets
8.4.5La sécurité
8.4.6Le contrôle de version
Bibliographie
9.La sécurité
9.1La signature de code
9.1.1Le stockage des clefs
9.1.2Signer des classes
9.2L'architecture de sécurité
9.2.1Les droits
9.2.2L'objet politique de sécurité
9.2.3Utiliser la politique de sécurité
9.2.4écrire une classe de droit
9.2.5Sécuriser les accès à un objet
9.2.6Les droits liés à la sécurité
9.3.0Les services d'authentification et d'autorisation
9.3.1La notion de sujet
9.3.2Utiliser les droits d'un sujet
9.3.3Les droits associés à une identité
9.4Le service d'authentification
9.4.1La configuration des modules d'authentification
9.4.2Le processus d'authentification
Bibliographie
10.La programmation concurrente
10.1Les processus
10.1.1La classe Runtime
10.1.2Interactions entre processus
10.2Les processus légers
10.2.1La classe Thread
10.2.2La création d'un nouveau processus léger
10.2.3La vie d'un processus léger
10.2.4L'accès au processeur
10.2.5Les groupes de processus légers
10.3La gestion de la concurrence
10.3.1L'exclusion mutuelle
10.3.2La synchronisation entre processus légers
10.3.3Les problèmes de la synchronisation et de l'exclusion mutuelle
10.4La mise à jour des données entre processus légers
10.4.1Le mot-clef volatile
10.4.2Problèmes de visibilité et d'instanciation
10.4.3Les variables locales à un processus léger
10.5Autour des processus légers
10.5.1La planification de tâches régulières
10.5.2Les processus légers << shutdown hooks >>
10.5.3Les processus légers et la sécurité
10.5.4 Les processus légers et le chargement de classes
Bibliographie
11.Internet et les réseaux
11.1Terminologie des réseaux
11.1.1Protocole
11.1.2Le vocabulaire de la communication
11.1.3Structure des réseaux physiques
11.1.4Les modèles en couches
11.1.5Interconnexion de réseaux
11.2Les couches basses : Ethernet
11.2.1La couche physique
11.2.2La couche liaison de données
11.2.3Répéteur, pont et commutateur
11.3La couche réseau : Internet
11.3.1Les adresses Internet
11.3.2Adresses logiques et adresses physiques
11.3.3Le protocole Internet (IP)
11.3.4Le routage
11.3.5Le broadcast IP
11.3.6Les options du protocole Internet
11.3.7Les messages de contrôle d'IP
11.3.8Noms et adresses Internet
11.4Le protocole Internet version 6
11.4.1L'architecture d'adressage
11.4.2Le format des datagrammes
11.5Le protocole Internet et Java
11.5.1Les adresses IP
11.5.2Les interfaces réseau
Bibliographie
12.Le protocole UDP
12.1Le protocole UDP
12.1.1La notion de port
12.1.2Le format des datagrammes
12.1.3L'accès au protocole
12.2Les adresses de sockets en Java
12.3Les sockets UDP
12.3.1émettre un datagramme UDP
12.3.2Recevoir un datagramme UDP
12.3.3Le modèle client-serveur
12.3.4La taille maximale des datagrammes
12.3.5écrire un serveur
12.3.6Les problèmes de perte de datagrammes
12.3.7UDP et la concurrence
12.3.8La pseudo-connexion
12.4La communication en diffusion
12.4.1Le broadcast
12.4.2Le multicast
Bibliographie
13.Le protocole TCP
13.1Le protocole
13.1.1Le service de fiabilité
13.1.2La connexion
13.1.3De la couche applicative à IP
13.1.4Fenêtres coulissantes et contrôle de flot
13.1.5La fermeture de connexion
13.1.6Le diagramme des états TCP
13.1.7Les délais
13.1.8Améliorer les performances
13.1.9Le format de l'en-tête TCP
13.2Les sockets TCP
13.2.1écrire un client
13.2.2écrire un serveur
13.2.3Attacher plusieurs sockets à un même port
13.2.4écrire un serveur modulaire
13.2.5Un serveur FTP
13.2.6La sécurité
13.2.7Passer par un relais SOCKS
13.2.8Personnaliser l'implantation des sockets
Bibliographie
14.L'accès aux ressources Internet
14.1Les standards HTML et MIME
14.1.1Le langage HTML
14.1.2Les types MIME
14.2Les URI
14.2.1Syntaxe générale
14.2.2La partie dépendante du schéma
14.2.3Les URI relatifs
14.3La classe URI
14.4Le protocole HTTP
14.4.1Récupérer des données
14.4.2Envoyer des données
14.4.3Les relais
14.4.4Les relais cache
14.4.5L'accès à des parties de ressources
14.4.6Sauver un état
14.5Un serveur HTTP simple
14.6La classe URL
14.6.1Création d'un objet URL
14.6.2L'accès aux caractéristiques des URL
14.6.3Récupérer le contenu de la ressource
14.7La classe URLConnection
14.7.1Les paramètres de la connexion
14.7.2La connexion
14.7.3Les résultats de la connexion
14.7.4Les sous-classes de URLConnection
14.7.5L'authentification
14.7.6Les droits de connexion
14.8Les gestionnaires
14.8.1Les gestionnaires par défaut
14.8.2Installer ses propres gestionnaires
14.8.3Un exemple d'ajout de gestionnaires
Bibliographie
15.Les applettes et Java Web Start
15.1La classe URLClassLoader
15.1.1Hériter de la classe URLClassLoader
15.1.2Déterminer l'URL de chargement
15.2Les applettes
15.2.1Les méthodes de base
15.2.2Les fonctionnalités d'une applette
15.2.3Les applettes et le navigateur
15.2.4Limiter les droits des applettes
15.2.5étendre les droits d'une applette
15.3Java Web Start
15.3.1L'environnement d'exécution
15.3.2Le lancement
15.3.3Le fichier de description
15.3.4Les services
Bibliographie
16.Le protocole SSL
16.1Un peu de vocabulaire
16.1.1Le chiffrement
16.1.2L'authentification et l'intégrité
16.1.3Les fonctions pseudo-aléatoires
16.2Le protocole
16.3Le protocole SSL en Java
16.3.1La gestion des clefs et des certificats
16.3.2Le contexte SSL
16.3.3écrire un gestionnaire de certificats de confiance pour SSL
16.3.4Les fabriques de sockets SSL
16.3.5Les sockets SSL
16.3.6Les URL de schéma https
16.3.7D'autres mécanismes des sockets SSL
Bibliographie
17.Les nouvelles classes d'entrées-sorties
17.1Les tampons mémoire
17.1.1Obtenir un tampon
17.2La gestion des jeux de caractères
17.2.1Le codage
17.2.2Le décodage
17.2.3D'autres mécanismes
17.3Canaux et sélecteurs
17.3.1Les classes et interfaces fondamentales
17.3.2Les canaux vers les fichiers
17.3.3Les canaux sur les tubes
17.3.4Les canaux vers les sockets UDP
17.3.5Les canaux vers les sockets TCP
17.3.6Les sélecteurs
17.3.7Les canaux et les processus légers
17.3.8Les interactions avec les classes d'entrées-sorties originales
Index et acronymes
Classes et interfaces
Méthodes
Propriétés système
Constantes
Index
Acronymes

Dernière mise à jour le 10 janvier 2003