web-dev-qa-db-fra.com

Différence entre Java / javaw / javaws

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.

170
user705414

Voir la documentation pour:

  • commande Java1Commande/javaw2
    1. 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éthode main de cette classe.
    2. La commande javaw est identique à Java, sauf que, avec javaw, aucune fenêtre de console n'est associée. Utilisez javaw 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 lanceur javaws 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'outil javaws sont tous obsolètes dans JDK 9 et seront supprimés dans une version ultérieure.

192
Andrew Thompson

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

62
Venkataswamy

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.

9
Serge Bekenkamp

à 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

6
lfxgroove

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é.

0
Hartmut Schorrig