Episode II - Le guerre du Hello World

Hello Clone

Pendant votre trajet en Hyper-espace, vous décidez de pratiquer votre manipulation de la force.

Révision des bases

Pour commencer votre initiation, vous allez faire un bon vieux Hello Devfest...mais en lançant les étapes de compilation et d'exécution à la main pour mieux comprendre l'utilisation de Jigsaw.

Pour cela, créer une nouvelle classe Application.java dans le package org.devfest.handson.jigsaw qui contiendra votre main.

package org.devfest.handson.jigsaw;

import java.util.logging.Logger;

public class Application {
    private static final Logger LOGGER = Logger.getLogger(Application.class.getName());

    public static void main(String[] args) {
        LOGGER.info("Hello Devfest");
    }
}

Vous allez maintenant lancer la compilation "à l'ancienne" de cette classe.

Dans votre terminal, exécuter la commande suivante.

javac -d target src/org/devfest/handson/jigsaw/Application.java

Puis démarrer la classe générée.

java -classpath target/ org.devfest.handson.jigsaw.Application

Vous devriez voir s'afficher votre bon vieux Hello Devfest!

Transformation en Jigsaw

Relancer maintenant une compilation, mais cette fois-ci en utilisant les modules.

javac -d target \
  --module-path src \
  src/module-info.java src/org/devfest/handson/jigsaw/Application.java

Vous devriez obtenir l'erreur suivante.

file not found: src/module-info.java

Normal car vous n'avez pas encore défini votre module !

Ajouter un fichier module-info.java dans src afin de définir votre module que vous nommerez org.devfest.handson.jigsaw.

module org.devfest.handson.jigsaw {
}

Relancer la compilation qui devrait encore une fois échouer.

package java.util.logging is declared in module java.logging, but module org.devfest.handson.jigsaw does not read it

Cette fois-ci, pour pouvoir utiliser les classes du package java.util.logging, il faut ajouter une dépendance au module java.logging dans votre définition du module.

Ajoutez-la dans votre module-info.java avec le mot clé requires et enfin relancez votre compilation qui doit maintenant avoir créé un joli module-info.class dans le dossier target.

Exemple :

module org.devfest.handson.jigsaw {
    requires jai.laforce;
}

Bravo à vous! Compilé votre premier module Java, vous avez.

Lancer à présent votre application en utilisant le chargement par module.

java --module-path target --module org.devfest.handson.jigsaw/org.devfest.handson.jigsaw.Application

Bravo à vous! Votre premier module Java, exécuté, vous avez.

Vous commencez à ressentir le pouvoir des midi-chloriens présent dans toutes choses de l'univers... Rendez-vous dans le prochain épisode pour continuer votre initiation...