Quelle est la différence entre java
, javaw
et javaws
?
J'ai constaté que sur Windows, la plupart des utilisations de Java se font en utilisant javaw
.
Quelle est la différence entre java
, javaw
et javaws
?
J'ai constaté que sur Windows, la plupart des utilisations de Java se font en utilisant javaw
.
Réponses:
Consultez la documentation des outils Java pour:
- L'
java
outil lance une application Java. Pour ce faire, il démarre un environnement d'exécution Java, charge une classe spécifiée et appelle lamain
méthode de cette classe .- La
javaw
commande est identique àjava
, sauf qu'avecjavaw
il n'y a pas de fenêtre de console associée. À utiliserjavaw
lorsque vous ne souhaitez pas qu'une fenêtre d'invite de commande s'affiche.
javaws
commande , la " commande Java Web Start "La
javaws
commande lance Java Web Start, qui est l'implémentation de référence du Java Network Launching Protocol (JNLP). Java Web Start lance des applications / applets Java hébergées sur un réseau.
Si un fichier JNLP est spécifié,javaws
lancera l'application / applet Java spécifiée dans le fichier JNLP.
Lejavaws
lanceur dispose d'un ensemble d'options prises en charge dans la version actuelle. Cependant, les options peuvent être supprimées dans une version ultérieure.
Voir aussi JDK 9 Release Notes API, fonctionnalités et options obsolètes :
Les technologies de déploiement Java sont obsolètes et seront supprimées dans une prochaine version
Les fonctionnalités de l'applet Java et WebStart, y compris l'API Applet, le plug-in Java, la visionneuse d'applet Java, JNLP et Java Web Start, y compris l'javaws
outil , sont tous obsolètes dans JDK 9 et sera supprimé dans une prochaine version.
java: exécuteur d'application Java associé à une console pour afficher la sortie / les erreurs
javaw: exécuteur d'application ( fenêtre Java ) non associé à la console. Donc pas d'affichage des sorties / erreurs. Il peut être utilisé pour pousser silencieusement la sortie / les erreurs vers des fichiers texte. Il est principalement utilisé pour lancer des applications basées sur l'interface graphique.
javaws: ( Java web start ) pour télécharger et exécuter les applications Web distribuées. Là encore, aucune console n'est associée.
Tous font partie de JRE et utilisent la même JVM.
javaw
devrait être dans mon PATH? (Ce n'est pas le cas)
java.exe est associé à la console, alors que javaw.exe n'a aucune association de ce type. Ainsi, lorsque 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.
La commande javaw est identique à java, sauf que javaw n'a pas de fenêtre de console associée. Utilisez javaw lorsque vous ne souhaitez pas qu'une fenêtre d'invite de commande s'affiche. Le lanceur javaw affiche une fenêtre avec des informations d'erreur en cas d'échec.
Et javaws est pour les applications de démarrage Web Java, les applets ou quelque chose du genre, je suppose.
J'ai vérifié que la redirection de 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, il est écrit dans ces fichiers, comme aussi avec l'utilisation de java (sans w
). Surtout au démarrage java
, le JRE peut écrire des erreurs de démarrage (classe non trouvée) sur le tube de sortie d'erreur. À 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 elle javaw
est invoquée.
En face si vous utilisez
start java .... 1>log.txt 2>err.txt
Avec la console Windows start
commande, la redirection de sortie de la console ne pas travailler avec java
ni avec javaw
.
Explication pourquoi il en est ainsi: je pense que cela javaw
ouvre un processus interne dans le système d'exploitation (adéquat en utilisant la classe java.lang.Process), et transfère une redirection de sortie connue vers 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 de console. Le comportement de java.lang.Process est similaire. La machine virtuelle peut également utiliser cette fonctionnalité interne javaw
.
Si vous utilisez «démarrer», la console Windows crée un nouveau processus pour que Windows exécute la commande après le démarrage, mais ce mécanisme n'utilise malheureusement pas une redirection donnée pour le sous-processus démarré.
java -cp ...
. Comme presque personne ne veut cela,javaw
c'est le choix de faire disparaître cette fenêtre ennuyeuse.