Je me demande quelle est la différence entre Java
/javaw
/javaws
? J'ai trouvé sous Windows, la plupart de Java est démarré avec javaw
.
Voir la documentation pour:
Java
1Commande/javaw
2
- L'outil
Java
lance une application Java. Pour ce faire, il démarre un environnement d'exécution Java, charge une classe spécifiée et appelle la méthodemain
de cette classe.- La commande
javaw
est identique àJava
, sauf que, avecjavaw
, aucune fenêtre de console n'est associée. Utilisezjavaw
lorsque don't voulez qu'une fenêtre d'invite de commande apparaisse.
javaws
commande , le " Java Web Start commande"
La commande
javaws
lance Java Web Start, qui est l'implémentation de référence du protocole JNLP (Java). Java Web Start lance Java applications/applets 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.
Le lanceurjavaws
dispose d’un ensemble d’options prises en charge dans la version actuelle. Toutefois, les options pourraient être supprimées dans une version ultérieure.
Voir aussi Notes de version du JDK 9 API, fonctions et options obsolètes :
Les technologies de déploiement Java sont obsolètes et seront supprimées dans une prochaine version.
Applet Java et fonctionnalité WebStart, y compris l'API de l'applet, le plug-in Java, le visualiseur d'applet Java, JNLP et Java Web Start y compris l'outiljavaws
sont tous obsolètes dans JDK 9 et seront supprimés dans une version ultérieure.
Java: Java exécuteur d'application associé à une console pour afficher le résultat/les erreurs
javaw: Exécuteur d'application (Java fenêtré) non associé à la console. Donc, pas d'affichage de sortie/d'erreurs. Peut être utilisé pour pousser silencieusement la sortie/les erreurs dans 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 machine virtuelle
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 dans laquelle les flux de sortie et d'erreur sont affichés.
à partir 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 souhaitez pas qu'une fenêtre d'invite de commande soit affichée. Le programme de lancement javaw affiche une fenêtre avec les informations d'erreur en cas d'échec.
Et javaws est pour Java applications de démarrage Web, applets ou quelque chose comme ça, 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 quoi que ce soit via System.out ou System.err, elle est écrite dans ces fichiers, comme avec l'utilisation de Java (sans w). En particulier, lors du démarrage de Java, le JRE peut écrire des erreurs de démarrage (classe introuvable) sur le canal de sortie d'erreur. À cet égard, il est essentiel de connaître les erreurs. Je suggère d'utiliser la redirection de console dans tous les cas si javaw est invoqué.
En face si vous utilisez
start Java .... 1>log.txt 2>err.txt
Avec la commande windows console start, la redirection de la sortie de la console ne fonctionne PAS avec Java et avec javaw également.
Explication, pourquoi il en est ainsi: Je pense que javaw ouvre un processus interne sur le système d’exploitation (adéquat avec 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 de console. Le comportement de Java.lang.Process est similaire. La machine virtuelle peut également utiliser cette fonctionnalité interne pour javaw.
Si vous utilisez 'start', 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é.