Formation Java / Spring Boot pour développeurs COBOL
À l’issue de cette première journée, vous serez capable de :
langage Java
JVM
JDK
JRE
JSE
JavaEE
JakartaEE
.java
.class
programme Java
public static void main
programme COBOL
classe Java
Cette journée est un premier pas dans le monde Java en établissant un lien avec vos connaissances en Cobol ! L’objectif est de comprendre ce nouveau modèle.
Nous installerons la version 17 de Java et l’IDE Eclipse pour travailler dans les meilleures conditions.
En tant que développeur.euse COBOL, vous avez l’habitude de travailler dans un environnement :
Java repose sur une philosophie différente :
Java ne remplace pas vos compétences en COBOL : Il les formalise autrement.
compilé ET interprété
Comparaison avec COBOL :
langage compilé
bytecode
Il existe aussi d’autres plateformes que nous n’aborderons pas pour cette formation :
Explications détaillées
Un développeur.euse Java utilise toujours un JDK.
Un serveur de production peut se contenter d’une JRE.
SOURCE COBOL ↓ COMPILATION ↓ PROGRAMME EXÉCUTABLE ↓ EXÉCUTION
SOURCE : MonProgramme.java ↓ COMPILATION (javac) ↓ BYTECODE : MonProgramme.class ↓ JVM ↓ EXÉCUTION (java)
Remarque : Le fichier .class n’est pas un exécutable système. Il contient un langage intermédiaire compris uniquement par la JVM. ce n’est pas du code machine natif !
Petite mise en bouche avant d’aller plus loin dans l’écriture avec Java.
Le lancement de ce programme java dans un éditeur Eclipse affichera ceci dans notre console :
Tandis qu’un lancement en ligne de commande dans un terminal windows donnera ceci :
Nous verrons cela ultérieurement…
Cette présentation du Bytecode est purement informative, vous n’allez jamais écrire dans ce langage compilé destiné à la JVM !
Il existe 2 moyens de visualier du Bytecode :
javap
Bytecode Viewer
JD-GUI
CFR
Une fois notre programme compilé avec javac fr.formation.mer.HelloWorld, nous avons notre fichier HelloWorld.class.
HelloWorld.class
En écrivant ceci dans notre terminal javap -c fr.formation.mer.HelloWorld nous avons ceci comme résultat :
javap -c fr.formation.mer.HelloWorld
Pour davantage de précisions (instructions JVM, constantes, signatures, structure interne), on peut ajouter l’attribut -v à notre commande javap -c -v fr.formation.mer.HelloWorld
-v
javap -c -v fr.formation.mer.HelloWorld
(Je vous le montre en live)
Ci-dessous, une classe avec une méthode nommée addition() :
public class Demo { public int addition(int a, int b) { return a + b; } }
Ce que pourrait donner le bout de code de la classe (compilée) Demo.class avec l’utilisataire javap :
Compiled from "Demo.java" public class Demo { public Demo(); Code: 0: aload_0 → aucun paramètre pour notre constructeur 1: invokespecial → Invocation du constructeur 4: return → retourne l'objet instancié (j'expliquerai plus tard !) public int addition(int, int); Code: 0: iload_1 → charger paramètre 1 1: iload_2 → charger paramètre 2 2: iadd → additionner 3: ireturn → retourner le résultat }
En Cobol ADD A TO B. serait l’équvalent de return a + b; en Java.
ADD A TO B.
return a + b;
En Bytecode cela donne :
iload_1 iload_2 iadd ireturn
La JVM fonctionne avec une pile (stack), ce n’est pas du registre CPU direct.
Et l’on peut aussi afficher le Bytecode depuis Eclipse mais je ne connais pas de développeur.euse java qui l’utilise !
COBOL (approche procédurale) :
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO-WORLD. PROCEDURE DIVISION. DISPLAY "Bonjour les Cobolistes !". STOP RUN.
Java (approche objet) :
public class HelloWorld { public static void main(String[] args) { System.out.println("Bonjour les Cobolistes !"); } }
public class HelloWorld {
Correspondance COBOL :
PROGRAM-ID. HELLO-WORLD.
public static void main(String[] args)
public
static
void
main
String[] args
Pour le moment, ne vous souciez pas de ne pas comprendre toutes les notions Java. Nous allons les aborder progressivement.
fr.formation.mer
javac fr.formation.mer.HelloWorld.java
javac HelloWorld.java
Comme j’ai écrit ce programme sous l’IDE Eclipse, je me positionne dans le répertoire bin qui va contenir tous les packages et classes java compilées. Les IDE se chargent de compiler le code Java si l’option Build est activée !
bin
Build
Génération du fichier dans le répertoire bin\fr\formation\mer si Eclipse (sinon répertoire courant):
bin\fr\formation\mer
Nous verrons la notion de package ultérieurement.
java fr.formation.mer.HelloWorld
résultat :
Voici une explication plus en détail du fonctionnement de la JVM
Nous allons installer ensemble le JDK et par conséquent la VM ainsi que l’IDE Eclipse pour exécuter les premiers exemples.
JDK 17
IDE
Maven
Git
GitLab
Présentation de l’IDE Eclipse :
Installez Java 17, JDK et Eclipse Témurin
Configurez et utilisez l’IDE Eclipse (prévu Jour 2 sauf si nous avons le temps)
(../../java/java2/ide/README.md)
Ultérieurement, nous verrons les notions de Workspace, Snippets, Perspectives, Package explorer, génération automatique de code, Débugger,…
Pour écrire et éxécuter le code HelloWorld, nous pouvons utiliser :
Dans un répertoire de travail quelconque, ensuite on utilisera Eclipse comme IDE.
Classe à récupérer :
Supprimez le point-virgule à la fin de la ligne System.out.println("Bonjour les Cobolistes !");, compilez et constatez l’erreur !
System.out.println("Bonjour les Cobolistes !");
Dans ce programme Cobol, identifiez ce que vous pouvez mettre dans une classe Java !
Pour vous aider…
Cette journée a posé les bases fondamentales nécessaires pour aborder Java sereinement.
Le JOUR 2 abordera :
paradigmes
projet Java avec Eclipse
fichiers dans un projet
packages
Eclipse
premiers programmes en Java
Nous poursuivrons la formation en faisant le lien entre la syntaxe Cobol que vous maitrisez et la syntaxe Java !
Lien vers les propositions de correction