Diferencia entre 'java', 'javawv y' javaws '


184

¿Cuál es la diferencia entre java, javawy javaws?

Encontré en Windows que la mayoría de Java se comenzó a usar javaw.


2
Esto se debe a que Windows tiene este molesto hábito de iniciar un Terminal real (que ni siquiera debería llamarse un "Terminal" ...) en primer plano cada vez que inicia un programa java -cp .... Como casi nadie quiere eso, javawes la opción de hacer desaparecer esa molesta ventana.
Matthieu

Respuestas:


212

Ver documentación para:

  • javacomando 1 / javawcomando 2
    1. La javaherramienta lanza una aplicación Java. Lo hace iniciando un entorno de tiempo de ejecución Java, cargando una clase específica e invocando el mainmétodo de esa clase .
    2. El javawcomando es idéntico a java, excepto que javawno hay una ventana de consola asociada. Úselo javawcuando no desee que aparezca una ventana de símbolo del sistema.
  • javawscomando , el " comando Java Web Start "

    El javawscomando inicia Java Web Start, que es la implementación de referencia del Java Network Launching Protocol (JNLP). Java Web Start lanza aplicaciones / applets Java alojados en una red.

    Si se especifica un archivo JNLP, javawsse iniciará la aplicación / applet Java especificada en el archivo JNLP.

    El javawsiniciador tiene un conjunto de opciones que son compatibles con la versión actual. Sin embargo, las opciones pueden eliminarse en una versión futura.

    Consulte también las Notas de versión de JDK 9 API, características y opciones obsoletas :

    Las tecnologías de implementación de Java están en desuso y se eliminarán en una versión futura Las funcionalidades
    Java Applet y WebStart, incluida la API Applet, el complemento Java, el Java Applet Viewer, JNLP y Java Web Start, incluida la javawsherramienta , están en desuso en JDK 9 y se eliminará en una versión futura.


69

Java: ejecutor de aplicaciones Java que está asociado con una consola para mostrar resultados / errores

JavaW: ( Java con ventana ) ejecutor de aplicaciones no asociado con la consola. Por lo tanto, no se muestran resultados / errores. Se puede utilizar para enviar silenciosamente la salida / errores a los archivos de texto. Se utiliza principalmente para iniciar aplicaciones basadas en GUI.

javaws: ( inicio web Java ) para descargar y ejecutar las aplicaciones web distribuidas. De nuevo, no hay consola asociada.

Todos son parte de JRE y usan la misma JVM.


Entonces, si he instalado JRE, ¿ javawdebería estar en mi RUTA? (No lo es)
endolito

@endolith, la instalación de Java en Windows, en mi experiencia, no agrega nada a la variable PATH. Si solo instaló JRE, probablemente tendrá que agregar el directorio JRE / bin a PATH manualmente; si ha instalado JRE y JDK, agregaría JDK / bin a PATH en su lugar.
mcduffee

9

java.exe está asociado con la consola, mientras que javaw.exe no tiene tal asociación. Por lo tanto, cuando se ejecuta java.exe , se abre automáticamente una ventana de símbolo del sistema donde se muestran los flujos de salida y error.


6

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

El comando javaw es idéntico a java, excepto que javaw no tiene una ventana de consola asociada. Use javaw cuando no desee que se muestre una ventana de símbolo del sistema. El lanzador javaw muestra una ventana con información de error si falla.

Sospecho que javaws es para aplicaciones Java Web Start, applets o algo así.


El enlace está roto: "La página solicitada no existe o podría haberse movido".
Peter Mortensen

1

He comprobado que la redirección de salida funciona con javaw:

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

Significa que si la aplicación Java imprime algo a través de System.out o System.err, se escribe en esos archivos, como también con el uso de Java (sin w). Especialmente al inicio java, el JRE puede escribir errores de inicio (clase no encontrada) en la tubería de salida de error. A este respecto, es esencial saber acerca de los errores. Sugiero usar la redirección de consola en cualquier caso si javawse invoca.

En contrario si usas

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

Con el startcomando de consola de Windows , la redirección de salida de la consola no funciona javani conjavaw .

Explicación de por qué es así: creo que eso javawabre un proceso interno en el sistema operativo (adecuado usando la clase java.lang.Process) y transfiere una redirección de salida conocida a este proceso. Si no se proporciona una redirección en la línea de comando, no se redirige nada y el proceso interno iniciado javawno tiene salidas de consola. El comportamiento de java.lang.Process es similar. La máquina virtual también puede usar esta función interna javaw.

Si usa 'inicio', la consola de Windows crea un nuevo proceso para que Windows ejecute el comando después del inicio, pero desafortunadamente este mecanismo no utiliza una redirección dada para el subproceso iniciado.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.