Compilation, Exécution, Archivage

Introduction

Objectifs

Une introduction aux phases de

  • Compilation,

  • Exécution,

  • Archivage,

en ligne de commande.

Application

Application

Une application Java nommée App se déclare

dans un fichier App.java.

Elle déclare une fonction main de signature

(Sinon, c’est un module, pas une application.)

  • main : point d’entrée de l’application,

  • args : arguments passés à l’application.

App.java

Compilation

Compilation

$ javac App.java

Artefact

  • le fichier App.class généré par la compilation.

Execution

Execution

Dans le répertoire contenant le fichier App.class:

$ java App   
Hello, World!

Applications composites

Application composite

  • module Printer,

  • application App.

Printer.java

App.java

Compilation

$ javac Printer.java App.java

Execution

$ java App
Hello world!

Archivage

Objectif

Distribuer le programme comme un fichier unique.

Manifest.txt

Spécifier le point d’entrée de l’application :

Main-Class: App

Archivage

Compilez vos fichiers .java, puis :

$ jar cfm app.jar Manifest.txt *.class   

Voir aussi : Packaging Programs in JAR Files

Execution

Dans le répertoire contenant le fichier app.jar :

$ java -jar app.jar   
Hello, World!

Bibliothèques

Bibliothèque

  • Ensemble de fonctionnalités,

  • Disponibles sous forme de package(s),

  • Pas de point d’entrée (pas une application).

printer/Printer.java

Compilation et Archivage

$ javac printer/Printer.java
$ jar cf printer.jar printer

Classpath

Pour utiliser la bibliothèque contenue dans l’archive printer.par, il faut indiquer à java de prendre en compte ce fichier au moyen du classpath

  • à la compilation de l’application,

  • lors de son exécution.

Exemples

Ajoutez au classpath

  • "." pour les fichiers .class du répertoire courant,

  • "*" pour les fichiers .jar du répertoire courant.

Voir ausi Setting the class path.

Spécifier le classpath

Comme :

  • une variable d’environnement

    $ export CLASSPATH=".:*"
  • une option en ligne de commande de java/javac :

    $ javac -cp ".:*" *.java

App.java

$ javac -cp ".:*" App.java
$ ls
App.class  App.java  printer.jar

Execution

$ java -cp ".:*" App 
Hello, World!