Formation Java / Spring Boot pour développeurs COBOL
À l’issue de cette journée, vous serez capable de :
Cette journée vise à maitriser l’IDE : vous devez comprendre ce qui se passe réellement et vous familiariser avec l’interface de l’IDE Eclipse.
En COBOL (mainframe), vous avez une chaîne de traitement assez stable :
En Java, la notion de projet inclut plus d’éléments :
Java est un langage qui nécessite de la rigueur comme en Cobol !
Avant de poursuivre, notre JDK est installé, ainsi que Java version 17 et notre outil pour développer (Eclipse)
Sinon retour vers cette page
Un projet Java, c’est :
.java
.class
package
package + NomDeClasse
Exemple :
HelloMer
com.banque.app
com.banque.app.HelloMer
Règle pratique :
public
Donc, en réalité, on peut avoir plusieurs classes dans un fichier mais une seule est de type public, c’est celle qui correspond au nom du fichier java.
Voici des explications approfondies sur l’utilisation des packages et du fichier package-info.java lors de la généréation de la documentation.
Un package sert à :
Client
Comparaison COBOL :
Exemple de classement typique (pour le futur avec Spring Boot) :
com.banque.domain
com.banque.service
com.banque.controller
com.banque.repository
Selon nos besoins, nous allons importer certaines classes dans nos fichiers Java. Il faudra toujours vérifier que vous importez la bonne classe !
Exemple avec la notion de package : Nous avons 2 packages contenant chacun une classe avec le même nom Message
Pour simplifier, j’ai déclaré une méthode static pour ne pas instancier d’objet (pas d’inquiétude, nous verrons ces notions prochainement)
Structure du projet avec 2 packages fr.formation.app.v1 et fr.formation.app.v2 contenant chacun une classe avec le même nom : Message.java
fr.formation.app.v1
fr.formation.app.v2
Message.java
Ici, on utilise la classe du package v1 :
Ici, on utilise la classe du package v2 :
Pour comprendre à quoi cela correspond, j’ai rédigé une note complémentaire…
Même si vous n’utilisez pas Maven immédiatement, cette structure est devenue une norme de fait :
banque/ ├─ pom.xml └─ src/ ├─ main/ │ ├─ java/ │ │ └─ com/banque/app/... │ └─ resources/ └─ test/ ├─ java/ └─ resources/
src/main/java
src/test/java
resources
pom.xml
Compilation (si on est dans le répertoire du fichier .java):
javac HelloBanque.java
Si votre classe se trouve dans un package :
package com.banque.app; public class HelloBanque { public static void main(String[] args) { System.out.println("Encore un message qui ne sert à rien !"); } }
Le fichier doit être placé dans un dossier correspondant au package :
src/main/java/com/banque/app/HelloBanque.java
La compilation doit produire un .class au bon endroit (bin ou target selon la configuration du projet).
Quand vous exécutez java, la JVM cherche les classes dans un ensemble d’emplacements : classpath
classpath
Si le classpath est mal configuré, vous allez avoir :
L’IDE règle le classpath automatiquement, mais vous devez comprendre où se trouvent vos .class et à partir de quel répertoire la JVM les cherche.
Mais l’IDE n’est pas Java, ce n’est que votre assistant qui :
Maven sert à :
Maven
Le fichier central est pom.xml
Vous n’avez pas besoin de Maven aujourd’hui. Vous devez seulement comprendre que Maven remplace une compilation à la main par une compilation standard.
On peut utiliser des commandes utiles (on les utilisera par la suite dans la partie DevOps de la formation) :
mvn -v mvn compile mvn test mvn package
.jar
fr.formation.app
PauseCafe.java
Voici le code à mettre dans la méthode main de votre classe :
System.out.println("Enfin, le moment de prendre un petit café :)");
Observez :
Ce que vous devez retenir : l’IDE compile et exécute pour vous, mais vous devez savoir ce qu’il fait.
Pour vous entrainer dans le processus, refaites les étapes précédentes en créant un autre projet, un package et une classe avec une méthode main().
Vous créez votre package com.banque.app et votre fichier java PauseDejeuner.java
package com.banque.app
PauseDejeuner.java
Exécutez !
Avez-vous placer le fichier au bon endroit dans le bon package : src/com/banque/app/PauseDejeuner.java ?
src/com/banque/app/PauseDejeuner.java
Objectif : comprendre le classpath et les dossiers.
Supposons l’arborescence ci-dessous (noter que selon la configuration de l’IDE, main/java/ n’est pas présent):
banque-jour2/ └─ src/ └─ com/ └─ banque/ └─ app/ └─ PauseDejeuner.java └─ autre/
Vous trouverez souvent cette configuration avec des projets Maven :
banque-jour2/ └─ src/ └─ main/ └─ java/ └─ com/ └─ banque/ └─ app/ └─ PauseDejeuner.java └─ autre/
Depuis la racine de votre projet :
mkdir out javac -d out src/com/banque/app/PauseDejeuner.java
Explication : -d out signifie : Mettre les .class dans le dossier out en respectant les packages.
-d out
out
Vous obtenez : out/com/banque/app/PauseDejeuner.class. On pourrait remplace out par bin. Nous verrons qu’avec Maven, le répertoire de compilation se nomme target !
out/com/banque/app/PauseDejeuner.class
bin
target
Exemple d’exécution (en indiquant le classpath) :
java -cp out com.banque.app.PauseDejeuner
Explication :
-cp out : indique que la JVM doit chercher les classes dans out
-cp out
La syntaxe est toujours celle-ci com.banque.app.PauseDejeuner : nom complet de la classe (package + nom). C’est comme si on indiquait un chemin pour arriver jusqu’à la classe.
com.banque.app.PauseDejeuner
Objectif : apprendre à lire les erreurs Java et corriger sans paniquer.
Voici un code que vous allez mettre dans votre package, un fichier java que vous nommerez message mais sans mettre le package en début de programme.
message
public class Messages { //public static void main(String[] args) { System.out.println("Je veux voir mon message dans la console"); //} }
Evidemment, Eclipse va vous insulter tandis que via NotePad++, vous allez sauvegarder, compiler… enfin tenter de compiler ;)
voici ce que cela donne dans Eclipse :
Selon vous, pourquoi ? quels sont les problèmes ?
Observez les erreurs et corrigez !
package fr.banque.app;
package com.banque.app;
Classe corrigée :
Args
Objectif : comprendre la String[] args de la méthode main()
String[] args
Consigne : Afficher le nombre d’arguments (chaque argument avec son index)
Exemple attendu :
Nombre d'arguments : 3 0 -> CA 1 -> 2026 2 -> PROD
Comme vous débutez, voici le code de la classe :
package com.banque.app; public class ArgsDemo { public static void main(String[] args) { System.out.println("Nombre d'arguments : " + args.length); for (int i = 0; i < args.length; i++) { System.out.println(i + " -> " + args[i]); } } }
Exécution en ligne de commande (dans le Terminal) :
javac -d out src/main/java/com/banque/app/ArgsDemo.java java -cp out com.banque.app.ArgsDemo CA 2026 PROD
Choisir Run Configurations… :
Choisir la classe qui contient le Main dans le bon package :
Ajout des arguments :
Affichage dans la console :
Vous savez maintenant :
C’est la base absolue avant d’écrire du code Java sérieux.
Le jour 3, nous passons aux choses sérieuses (enfin, un peu plus sérieuses)
On abodera :