209 votes

Différence entre java/javaw/javaws

Je me demande, quelle est la différence entre java / javaw / javaws ? J'ai constaté que sous Windows, la plupart des Java sont lancés en utilisant la fonction javaw .

6 votes

C'est parce que Windows a cette fâcheuse habitude de lancer un véritable Terminal (qui ne devrait même pas être appelé "Terminal"...) au premier plan dès que vous lancez un programme avec java -cp ... . Comme presque personne ne le souhaite, javaw est le choix qui permet de faire disparaître cette fenêtre gênante.

239voto

Andrew Thompson Points 108505

Voir les docs pour :

  • java commande 1 / javaw commande 2

    1. Le site java lance une application Java. Pour ce faire, il démarre un environnement d'exécution Java, charge une classe spécifique et invoque la fonction main méthode.
    2. Le site javaw est identique à la commande java sauf que, avec javaw il n'y a pas de fenêtre de console associée. Utilisez javaw quand vous Ne le fais pas. voulez qu'une fenêtre d'invite de commande apparaisse.
  • javaws commande le " Démarrage Web Java commande"

76voto

Venkataswamy Points 107

java : exécuteur d'application java qui est associé à une console pour afficher les sorties/erreurs

javaw : L'exécuteur de l'application (java windowed) n'est pas associé à la console. Donc pas d'affichage des sorties/erreurs. Peut être utilisé pour pousser silencieusement la sortie/les erreurs vers des fichiers texte. Principalement utilisé pour lancer une application basée sur une interface graphique.

javaws : (java web start) pour télécharger et exécuter les applications web distribuées. à nouveau Aucune console n'est associée.

Tous font partie de JRE et utilisent la même JVM.

0 votes

Donc si j'ai installé JRE, javaw devrait être dans mon PATH ? (Il ne l'est pas)

0 votes

@endolith, l'installation de Java sous Windows n'ajoute, d'après mon expérience, rien à la variable PATH. Si vous avez seulement installé JRE, vous devrez probablement ajouter le répertoire JRE/bin à PATH manuellement ; si vous avez installé JRE et JDK, vous ajouterez JDK/bin à PATH à la place.

10voto

Serge Bekenkamp Points 215

java.exe est associé à la console, tandis que javaw.exe n'a pas d'association de ce type. Donc, quand java.exe est exécuté, il ouvre automatiquement une fenêtre d'invite de commande où les flux de sortie et d'erreur sont affichés.

6voto

lfxgroove Points 1306

de http://publib.boulder.ibm.com/infocenter/javasdk/v6r0/index.jsp?topic=%2Fcom.ibm.java.doc.user.aix32.60%2Fuser%2Fjava.html :

La commande javaw est identique à java, sauf que javaw n'a pas de fenêtre de console associée. Utilisez javaw lorsque vous ne voulez pas qu'une fenêtre d'invite de commande soit affichée. Le lanceur de javaw affiche une fenêtre avec des informations d'erreur s'il échoue.

Et javaws est pour les applications Java Web Start, les applets ou quelque chose comme ça, je suppose.

0 votes

Le lien est rompu : "La page demandée n'existe pas ou a pu être déplacée."

2voto

Hartmut Schorrig Points 159

J'ai vérifié que la redirection de la sortie fonctionne avec javaw :

javaw -cp ... mypath.MyClass ... arguments 1>log.txt 2>err.txt

Cela signifie que si l'application Java imprime quelque chose via System.out ou System.err, cela est écrit dans ces fichiers, comme c'est le cas avec l'utilisation de java (sans w ). Surtout au début java le JRE peut écrire des erreurs de démarrage (classe non trouvée) sur le tuyau de sortie des erreurs. A cet égard, il est essentiel de connaître les erreurs. Je suggère d'utiliser la redirection de la console dans tous les cas si javaw est invoquée.

En revanche, si vous utilisez

start java .... 1>log.txt 2>err.txt

Avec la console Windows start la redirection de la sortie de la console ne pas travailler avec java ni avec javaw .

Explication de la raison pour laquelle il en est ainsi : Je pense que javaw ouvre un processus interne dans l'OS (adéquat en utilisant la classe java.lang.Process), et transfère une redirection de sortie connue à ce processus. Si aucune redirection n'est donnée sur la ligne de commande, rien n'est redirigé et le processus interne démarré pour javaw n'a pas de sortie console. Le comportement de java.lang.Process est similaire. La machine virtuelle peut utiliser cette fonctionnalité interne pour javaw aussi.

Si vous utilisez 'start', la console Windows crée un nouveau processus pour Windows afin d'exécuter la commande après le démarrage, mais ce mécanisme n'utilise pas de redirection donnée pour le sous-processus démarré, malheureusement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X