1. Livres & vidéos
  2. Java
  3. Développement d’applications web
Extrait - Java Les fondamentaux du langage (avec exercices pratiques et corrigés) (2e édition)
Extraits du livre
Java Les fondamentaux du langage (avec exercices pratiques et corrigés) (2e édition) Revenir à la page d'achat du livre

Développement d’applications web

Introduction

Jusqu’à présent, tous les exemples de code que nous avons réalisés fonctionnent exclusivement en mode caractères. Les informations sont affichées dans une console et également saisies à partir de celle-ci. Ce mode de fonctionnement, bien que simple, est idéal pour découvrir les bases d’un langage de programmation comme Java.

Cependant, dans le monde réel, de nombreuses applications interagissent avec leurs utilisateurs non pas via une console, mais à travers une interface utilisateur accessible depuis un navigateur web. Ce type d’application, que l’on appelle communément une application web, repose sur des échanges de données entre un serveur et un client. Le rôle du serveur est d’écouter les demandes du client, de traiter les informations reçues et de retourner des réponses adaptées.

Voici une représentation graphique d’une action utilisateur classique sur une application web avec une architecture client/serveur :

images/05RI01N1.png

Les services web modernes, qu’ils soient des sites web, des applications mobiles ou des jeux vidéo en ligne, respectent peu ou prou ce schéma de requête/réponse.

Dans ce chapitre, nous allons explorer les principes fondamentaux du développement web avec Java. Nous n’utiliserons pas de frameworks ou de bibliothèques complexes :...

Les bases pour comprendre le Web

Dans ce chapitre, nous allons explorer les principes fondamentaux qui permettent de comprendre le fonctionnement des applications web modernes. Nous découvrirons ce qu’est une API, comment elle s’inscrit dans les interactions entre applications et pourquoi elle joue un rôle essentiel dans le développement logiciel.

Nous présenterons ensuite brièvement le protocole HTTP et ses enjeux dans les écosystèmes web modernes pour que vous puissiez comprendre concrètement comment interagir avec une application web depuis un terminal ou un navigateur.

1. Qu’est-ce qu’une API ?

Une API, ou Application Programming Interface (interface de programmation d’application), est un ensemble de règles et de mécanismes qui permettent à deux applications de communiquer entre elles. Plutôt que de manipuler directement les données ou les fonctionnalités d’un programme, une application peut utiliser une API pour interagir avec celui-ci d’une manière contrôlée et prédéfinie.

Pour cela, on met à disposition de nos applications clientes (celles qui vont consommer nos données ou les manipuler) une interface, c’est-à-dire un dispositif, une organisation logique pour faire ces actions. On appelle cela un contrat d’interface.

Exemple simple d’API

Imaginons que vous réservez un billet d’avion en ligne. Lorsque vous saisissez les dates et les destinations, le site web envoie ces informations à une API qui interroge une base de données ou un autre service pour trouver...

Création d’un serveur web avec le JDK

1. Présentation de la classe HttpServer

La classe HttpServer du JDK, disponible dans le package com.sun.net.httpserver, permet de créer un serveur HTTP basique sans dépendance externe. Elle est idéale pour découvrir les concepts fondamentaux du développement web en Java tout en restant centrée sur les outils natifs du langage.

Cette classe implémente un serveur HTTP simple. Un HttpServer est associé à une adresse IP et à un numéro de port et écoute les connexions TCP entrantes depuis des clients sur cette adresse. La sous-classe HttpsServer implémente un serveur capable de traiter les requêtes HTTPS.

Un ou plusieurs objets HttpHandler doivent être associés à un serveur pour pouvoir traiter les requêtes. Chaque HttpHandler est enregistré avec un chemin URI racine qui représente l’emplacement de l’application ou du service sur ce serveur. L’association entre un gestionnaire et un HttpServer est encapsulée par un objet HttpContext. Les HttpContext sont créés en appelant la méthode suivante : createContext(String, HttpHandler).

Toute requête pour laquelle aucun gestionnaire n’est trouvé est rejetée avec une réponse 404. Voir la sous-section Introduction au protocole HTTP pour comprendre les différents statuts HTTP.

La documentation Oracle pour la classe HttpServer est accessible à l’adresse suivante : https://docs.oracle.com/en/java/javase/21/docs/api/jdk.httpserver/com/sun/net/httpserver/HttpServer.html

Voici les méthodes essentielles pour comprendre et utiliser la classe HttpServer :

  • create(InetSocketAddress address, int backlog) : cette méthode crée une instance de serveur HTTP. Elle prend en paramètres :

  • address : l’adresse et le port sur lesquels le serveur écoute,

  • backlog : le nombre maximal de connexions en attente.

Par exemple :

HttpServer server = HttpServer.create(new InetSocketAddress(8080), 0); 
  • createContext(String path, HttpHandler handler) : cette méthode permet de définir ce qu’on appelle un « contexte » dans la terminologie de HttpServer. Un contexte représente une route spécifique du serveur (comme un chemin URL)...

Module de logging

Dans cette section, nous allons explorer le module java.logging, qui permet d’ajouter des journaux (« logs » en anglais) à vos applications Java. Les logs sont essentiels pour surveiller le comportement d’une application, déboguer des problèmes et fournir des informations précieuses en production.

Les logs sont ajoutés au code source d’un programme pour afficher du texte comme nous l’avons fait tout au long du livre via System.out.println(). Cependant, le module java.logging offre plus de fonctionnalités qu’un simple appel à la méthode println(). En effet, nous le verrons, il existe plusieurs niveaux de logs qui reflètent les différents comportements d’un programme Java.

1. Qu’est-ce que le logging ?

Le logging consiste à enregistrer des messages pour documenter ce que fait une application à un moment donné. Ces messages peuvent contenir des informations diverses, telles que :

  • le début ou la fin d’un traitement ;

  • une erreur ou une exception ;

  • une action utilisateur ou un événement système.

Les logs permettent de comprendre ce qui se passe dans une application, aussi bien pendant le développement qu’en production. En production, cela signifie que l’application est déployée et utilisée par des utilisateurs finaux ou d’autres systèmes dans un environnement réel, souvent sur un serveur ou sur une infrastructure externe. C’est une phase où les logs jouent un rôle crucial pour surveiller les performances et diagnostiquer les problèmes.

Le module java.util.logging, inclus dans le JDK, fournit un système complet de gestion des journaux. La classe principale, Logger, permet d’enregistrer...