Ce document présente le minimum vital pour une utilisation de VSCode pour le développement Java. Les captures d'écran ont été réalisées sous Windows 10 avec la version 1.63.2 de Visual Studio Code et le JDK 17.1.0 d'Oracle .

Avant de commencer, organisez votre espace disque afin de pouvoir par la suite retrouver facilement le travail effectué lors de cette séance de TP. Pour cela, dans le répertoire PLAI/Java créé lors du TP1, ajoutez un sous répertoire TP02 dans lequel vous rangerez le travail effectué au cours ce TP.

1. Configuration de VSCode

Avant toute chose, il faut au préalable que vous ayez installé un JDK 11 ou + sur votre ordinateur. Il vous faut ensuite ajouter à VSCode les extensions qui vous permettront de travailler avec le langage Java. L'Extension Pack for Java regroupe les extensions de base les plus populaires qui vous aideront à développer en Java sous VSCode.

La page WEB de l' Extension Pack for Java (capture le 8/12/2023)

Les extensions vous offriront entre autres :

  • un support pour l'édition du code Java (auto complétion, navigation, refactoring, code snippets...)
  • un support pour l'exécution et le débogage du code Java
  • Un support pour la gestion de projets Java (gestions de librairies et dépendances, des classes et packages ...)
  • ...

2. Création d'un projet Java avec VSCode

Notion de projet Java

Un projet Java est un ensemble de fichiers source Java et des informations associées (classpath, comment construire et exécuter le projet, etc...), la manière dont ces fichiers sont organisés dépend à la fois de la nature du projet (Application Java standard, Application web, Application JEE...) et de l'outil de construction de projet (Build Tool) choisi. VSCode offre plusieurs possibilités pour l'outil de construction de projets :

  • Projets sans outils de construction autres que les outils du JDK.
  • Apache Maven
  • Spring boot
  • ...

Dans cette introduction à Java sous VSCode nous ne nous intéresserons dans un premier temps qu'aux projets sans outils de construction.

Etapes de création d'un projet

La figure ci-dessous vous montre les différentes étapes pour créer un nouveau projet d'application Java

Etapes de création d'un projet Java sans outils de construction (build tool)
  1. Sélectionnez l'explorateur (Explorer) de VSCode
  2. Sélectionnez le bouton Create Java Project
  3. Dans la liste de sélection du type de projet choisissez le premier item No build tools
  4. Sélectionnez le répertoire où vous voulez stocker les fichiers de votre projet (le dossier TP02 que vous avez créé dans le répertoire PLAI/Java)

    Attention dans les vidéos qui suivent le répertoire utilisé est TP03, mais pour correspondre à la progression de cette année utilisez le répertoire TP02

  5. Donnez un nom à votre projet, par exemple HelloJava
Vidéo : Création d'un projet Java

Structure du projet

VSCode crée sur votre disque dur, dans le dossier choisi à l'étape 4, un nouveau dossier dont le nom est celui que vous avez fourni à l'étape 5 (HelloJava). La figure ci-dessous vous montre la structure du projet ainsi créé.

La structure du projet HelloJava
Vidéo : Exploration de la structure d'un projet Java

3. Compiler et exécuter le projet

Dans VSCode, la compilation s'effectue de manière automatique. Dès que vous ouvrez un fichier dans l'éditeur et dès que vous le sauvegardez, celui-ci est compilé, et le byte code correspondant (fichier .class) est rangé dans le répertoire bin.

La vidéo ci-dessous, illustre ce fonctionnement automatique de la compilation.

Compilation automatique du code Java

Pour exécuter l'application, là aussi c'est très simple. Deux possibilités vous sont offertes :

  1. soit en cliquant sur le texte Run situé dans l'éditeur juste au dessus de la méthode main
  2. soit en cliquant sur le bouton situé en haut à droite de l'éditeur.
Lancement de l'exécution du projet HelloJava

Une fois l'exécution lancée, VSCode ouvre automatiquement un terminal dans lequel il execute la commande java avec les options adéquates pour exécuter le code de la classe App.java. La figure ci dessous vous montre le déroulement de cette exécution.

Déroulement de l'exécution du projet HelloJava

4. Utilisation de l'éditeur

Vous allez mainteant modifier le code de la class App pour voir rapidement quelques une des possibilités de l'éditeur Java de VSCode.

Pour commencer, à la fin de la méthode main, rajoutez l'instruction

System.out.println("Bye Bye World !");

Lorsqu'il le peut, l'éditeur vous propose une complétion automatique du code. Par exemple arrêtez la frappe après avoir tapé Sys, l'éditeur vous propose un certain nombre de complétions possibles avec la documentation javadoc associée.

Complétion automatique du code dans l'éditeur

L'éditeur offre la completion de code pour toutes les classes et méthodes situées dans le classpath de compilation du projet. La vidéo ci dessous vous montre certaines des possibilités offertes par l'autocomplétion

Autocomplétion du code Java

L'éditeur n'attend pas toujours qu'une compilation ait été lancée pour vous signaler d'éventuelles erreurs. Au fur et à mesure que vous tapez votre texte, la syntaxe java est vérifiée et en cas d'erreur un ~ rouge est affiché sous le texte où l'erreur a été détectée. En positionnant le curseur de la souris sur celui-ci vous aurez un message d'explication indiquant la nature de l'erreur. Pour apprécier cette fonctionnalité supprimez le ; à la fin de l'instruction System.out.println("Bye Bye World !").

Détection d'erreurs dans l'éditeur

La vidéo ci-dessous vous montre plus en détail comment les erreurs détectées sont matérialisées dans l'éditeur de VSCode.

Matérialisation des erreurs dans le code Java

Modifiez maintenant le code de votre classe App afin que le programme lise un nombre entier au clavier et affiche autant de fois les messages Hello World ! et Bye Bye World ! Votre code doit être le suivant :

import java.util.Scanner;

public class App {
    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        System.out.print("nombre d'itérations : ");
        int nb = sc.nextInt();
        for (int i = 0; i < nb; i++) {
            System.out.println("Hello, World!");
            System.out.println("Bye Bye World ! ");
        }
    }
}

La classe Scanner est une classe du package java.util, pour pouvoir l'utiliser dans votre code il est nécessaire d'effectuer un import au début du programme. Normalement lorsque vous avez déclaré la variable sc cet import a été effectué automatiquement. Si vous supprimer cet import, une erreur apparaît dans votre code. En plus de signaler l'erreur, l'éditeur peut vous proposer des actions pour la corriger (fixer) automatiquement. Ceci est matérialisé par une qui apparaît sur la ligne où est placé le curseur.

Suggestion de correction des erreurs dans le code Java

La vidéo ci-dessous vous montre plus en détail ces possibilités de correction du code.

Source Action pour corriger les erreurs

Interrompre l'exécution d'un programme

Fermez le projet HelloJava (item Close Folder du menu File)

Suggestion de correction des erreurs dans le code Java

puis créez dans votre dossier PLAI/Java/TP02 un nouveau projet VisagesRond.

Recopiez dans le répertoire src de ce nouveau projet les sources des classes de l'application AppliVisage vue lors du TP n° 1 :

Compilez et exécutez AppliVisage1. Le programme principal (méthode main) d'AppliVisage1 est constitué d'une boucle infinie qui à chaque itération effectue un déplacement élémentaire du visage, efface la zone de dessin et réaffiche l'image. Lorsqu'il est lancé depuis une console, ce programme peut être arrêté en tapant CTRL + C. Un autre manière d'arrêter l'exécution est d'utiliser le bouton qui apparaît sur la droite de la console (terminal) ayant lancé le processus d'exécution de l'application.

Lancement et interruption de l'application AppliVisage1

La vidéo ci-dessous montre la réalisation de cet exercice.

Lancement puis interruption de l'application AppliVisage1

6. Générer la documentation Javadoc d'un projet

Les extensions fournies par le Java Extension Pack ne proposent pas de fonctionnalité pour générer la Javadoc à partir des commentaires dans le code source des classes. Il existe d'autres extensions disponible sur le MarketPlace de VSCode, mais celles que j'ai testées se sont révélées peu convaincantes (faible communauté d'utilisateurs, documentation succinte, bugs...), il vaut donc mieux directement utiliser l'outil Javadoc depuis la ligne de commande comme vous le montre la vidéo ci-dessous

Générer la javadoc

7. Utiliser le debugger de VSCode

Fermez le projet VisageRond et créez un nouveau projet d'application Java, MoyenneOlympique. Téléchargez la classe MoyenneOlympique.java qui calcule la moyenne olympique d'une serie de notes et recopiez la dans le répertoire src de ce projet (vous pouvez au passage supprimer la classe App.java qui a été générée lors de la construction du projet, elle ne vous sera pas utile).

Lancez l'exécution de ce programme. Il a été conçu pour calculer la moyenne d'une série de notes en retirant la note la plus élevée et la note la plus faible. Trois notes au moins doivent être saisies. Cependant un bug s'est glissé dans ce programme, alors que la saisie de trois notes devrait suffire, le programme impose un minimum de 4 notes.

Erreur d'exécution du programme Moyenne Olympique

Pour comprendre l'origine de cette erreur vous allez utiliser le debugger de Java intégré à VSCode qui vous permettra de positionner des points d'arrêt, d'effectuer une exécution pas à pas et d'observer l'état des variables.

  1. Placez un point d'arrêt à la ligne 75 du programme (la boucle while du programme du programme principal). Pour cela cliquez à gauche du numéro de la ligne concernée dans la fenêtre d'édition.
    Une fois ce point d'arrêt fixé il apparait sous la forme d'un cercle rouge au début de la ligne. Pour supprimer ce point d'arrêt il suffit de cliquer sur ce cercle.
  2. Lancez ensuite une exécution sous le contrôle du debugger. Pour cela deux possibilités : a) cliquez sur Debug au dessus de la méthode main ou bien b) cliquez sur le bouton situé en haut à droite de l'éditeur. et sélectionnez
  3. Dans la console de débogage, saisissez la première note. Après cette lecture l'exécution s'interrompt sur le point d'arrêt fixé précédemment. Votre espace de travail est alors organisé de la manière suivante.
  4. L'exécution est interrompue à la ligne 75 (qui n'a pas encore été exécutée). Pour faire avancer l'exécution pas à pas cliquez sur le bouton Step Over de la barre d'outils du debugger.
    Répétez cette opération plusieurs fois et observez l'état des variables du programme.
  5. Lorsque vous arrivez à la ligne 84 (appel de lireUneNote dans la boucle while) de la méthode main, faites avancez l'exécution en rentrant dans la méthode lireUneNote. Pour cela cliquez sur le bouton Step Into .
  6. Continuez à avancer pas à pas (bouton Step Over) jusqu'à ce que vous ayez lu une seconde note et que l'exécution soit arrêtée sur la ligne 53.
  7. Placez un second point d'arrêt sur cette ligne, puis poursuivez l'exécution jusqu'au prochain point d'arrêt (le premier point d'arrêt que vous aviez défini ligne 75). Pour aller directement jusqu'à ce point d'arrêt cliquez sur le bouton Continue.
  8. Poursuivez l'exécution sous le contrôle du debugger jusqu'à ce que vous ayez identifié la cause de l'erreur. Interrompez alors l'exécution du debugger en cliquant sur le bouton Stop.
  9. Corrigez le bug, et vérifiez que le programme s'exécute correctement et peut être arrêté une fois trois notes saisies.

7. La documentation en ligne de VSCode

Dans ce qui précède, nous avons vu le strict minimum pour l'utilisation de VSCode pour l'écriture d'applications Java. Pour profiter aux mieux des très riches fonctionnalités de cet environnement, nous vous conseillons de parcourir la documentation en ligne et en particulier les tutoriaux suivants :

Les turoriaux de Visual Studio Code pour Java