Aller au contenu

Utilisation de javaw.exe par Eclipse

Qu’est-ce que javaw.exe ?

javaw.exe est une version de l’exécutable Java sans console (w signifie windowed).

Contrairement à java.exe, qui ouvre une fenêtre de console (noire) pour afficher les sorties standard (System.out) et les erreurs (System.err), javaw.exe ne montre aucune console. Il est utilisé pour lancer des applications graphiques (comme Eclipse, ou une application Swing/JavaFX) sans afficher de terminal.

Pourquoi Eclipse utilise javaw.exe ?

Eclipse est déjà une application graphique (basée sur SWT, une bibliothèque GUI pour Java). Quand on lance Eclipse, il exécute une machine virtuelle Java (JVM) en arrière-plan pour faire tourner son interface et ses fonctionnalités.

javaw.exe est utilisé pour :

Que signifie le message dans Eclipse

message d'exécution

Qu’est-ce que le PID ?

PID signifie Process Identifier (identifiant de processus). C’est un nombre unique attribué par le système d’exploitation à chaque processus en cours d’exécution.

Il permet d’identifier un processus parmi tous les autres processus en cours.

À quoi sert le PID ?

Pour le système d’exploitation :

Pour l’utilisateur/developpeur :

Exemple d’utilisation du PID

Sous Windows :

Vous ne le trouverez pas car le programme est terminé !

Pour info sous Linux/Mac : ps -p 5328

Pourquoi le programme s’est-il terminé si vite ?

Le message indique que le programme s'est exécuté et s'est arrêté au bout de 180 ms.

Cela peut signifier :

Comment garder le programme en vie pour tester ?

Modifiez le programme en ajoutant une attente pour voir le PID dans le Gestionnaire de tâche.

package fr.formation.app;

import java.io.IOException;

import fr.formation.app.v2.Message;

public class LancerMessage {

    public static void main(String[] args) throws IOException {
        // Je choisis Message du package v2
        Message.afficher(); 
        // objectif voir le PID dans le gestionnaire de tâche pour tuer le processus 
        System.out.println("Je veux voir mon message dans la console");
        System.out.println("Appuyez sur Entrée pour quitter...");
        System.in.read(); // Attend une entrée utilisateur.
    }
}

Démonstration illustrée

On lance notre programme dans Eclipse et on récupère le PID : 45232

On peut visaliser le processus qui tourne en le recherchant avec son PID dans le Gestionnaire de tâches :

Si vous tuez le processus depuis le Gestionnaire de tâches, vous arrêter Eclipse !

En faisant Fin de tâche

Il vaut mieux le faire directement dans Eclipse !

En cliquant sur le carré rouge pour stopper votre programme mais pas Eclipse !

Pourquoi Eclipse utilise javaw.exe pour lancer le programme ?

Quand on lance un programme Java depuis Eclipse :

Résumé des points clés

Voir le processus en action (pour les curieux)

public static void main(String[] args) throws InterruptedException {
    System.out.println("Début du programme (PID: " + ProcessHandle.current().pid() + ")");
    Thread.sleep(10000); // Pause de 10 secondes.
    System.out.println("Fin du programme.");
}