## java - El intérprete Java

### Síntasis de Utilización

>     java [ opciones ] nombredeclase <argumentos>
>     java_g [ opciones ] nombredeclase <argumentos>

### Descripción

> El comando java ejecuta los bytecodes Java creados por el compilador javac.

> El argumento nombredeclase es el nombre de la clase que se va a ejecutar. Debe estar totalmente cualificado e incluir su nombre de paquete en el nombre, por ejemplo:

>     java java.lang.String

Observa que todos los argumentos que aparecen después de nombredeclase en la línea de comandos son pasados al método main() de la clase.

java espera que los bytecodes de la clase se encuentren en un fichero llamado nombredeclase.class que ha sido generado al compilar el fichero fuente correspondiente con javac. Todos los ficheros de bytecodes java tienen la extensión .class que añada automáticamente el compilador cuando la clase es compilada. La clase debe contener un método main() definido de la siguiente forma:

    class Unaclase {
    	public static void main( String argv []) {
    	...
    	}
    }

java ejecuta el método main y luego sale a menos que éste cree uno o más threads. Si el método main() crea algún thread, java no sale hasta que haya terminado el último thread.

Normalmente, compilar tus ficheros fuente con javac y luego ejecutas los programas con java. Sin embargo, se puede utilizar java para compilar y ejecutar los programas cuando se utiliza la opción -cs. Cuando se carga una clase se compara su fecha de última modificación con la fecha del fichero fuente. Si el fuente ha sido modificado, se recompila y se carga el nuevo fichero de bytecodes. java repite este procedimiento hasta que todas las clases se han compilado y cargado correctamente.

El intérprete puede determinar su una es legítima a través de un mecanismo de verififación. Esta verificación asegura que los bytecodes que están siendo interpretados no violan las restricciones del lenguaje.

java_g es una versión no optimizada de java pensada para ser utilizada con depuradores como el jdb.

### Opciones

> -debug
>   Permite que el depurador de Java jdb se añada a esta sesón java. Cuando se especifica esta opción en la línea de comandos, java muestra una password que se debe utilizar cuando empiece la sesión de depurado.

> -cs, -checksource
>   Cuando se carga una clase compilada, esta opción hace que la fecha de modificación de los bytecodes sea comparada con la del fichero fuente. Si el fichero fuente ha sido modificado recientemente, es recompilado y se cargan los nuevos bytecodes.

> -classpath path
>   Especifica el path que utilizará java para buscar las clases. Sobreescribe el valor por defecto de la variable de etorno CLASSPATH. Los directorios estás separados por comas.

> -mx x
>   Selecciona el máximo tamaño de memoria reservada para la pila del recolector de basura a x. El valor por defecto es 16 megabytes de memoria. x debe ser mayor de 1000 bytes

>   Por defecto, x se mide en bytes. Pero puedes especifarlo en kb o Mb añadiéndole la letra 'k' para kilobytes o 'm' para megabytes.

> -ms x
>   Selecciona el tamaño inicial de la memoria reservada para la pila del recolector de basura a x. El valor por defecto es 16 megabytes de memoria. x debe ser mayor de 1000 bytes

>   Por defecto, x se mide en bytes. Pero puedes especifarlo en kb o Mb añadiéndole la letra 'k' para kilobytes o 'm' para megabytes.

> -noasyncgc
>   Desactiva la recolección de basura asíncrona. Cuando se activa la recolección de basura no tiene lugar a menos que la llame explícitamente o el programa sale de la memoria. Normalmente, la recolección de basura se ejecuta en un thread asíncrono en paralelo con otros threads.

> -ss x
>   Cada thread Java tiene dos pilas: una para el código Java y otra para el código C. La opción -ss selecciona el tamaño máximo de la pila que puede ser utilizada por el código C en un thread a x. Cada uno de los theads ejecutados dentro del programa que se paso a java tiene x como su tamaño de pila C. El valor por defecto es 128 kilobytes de memoria. x debe ser mayor de 1000 bytes

>   Por defecto, x se mide en bytes. Pero puedes especifarlo en kb o Mb añadiéndole la letra 'k' para kilobytes o 'm' para megabytes.

> -oss x
>   Cada thread Java tiene dos pilas: una para el código Java y otra para el código C. La opción -oss selecciona el tamaño máximo de la pila que puede ser utilizada por el código Java en un thread a x. Cada uno de los theads ejecutados dentro del programa que se paso a java tiene x como su tamaño de pila Java. El valor por defecto es 400 kilobytes de memoria. x debe ser mayor de 1000 bytes

>   Por defecto, x se mide en bytes. Pero puedes especifarlo en kb o Mb añadiéndole la letra 'k' para kilobytes o 'm' para megabytes.

> -t
>   Imprime un rastro de las instrucciones ejecutadas (sólo en java_g).

> -v, -verbose
>   Hace que java en el canal stdout cada vez que se cara un fichero class.

> verify
>   Ejecuta el verificador en todo el código.

> -verifyremote
>   Ejecuta el verificador para todo el código que es carga dentro del sistema a través de classloader. verifyremote es el valor por defecto para el intérprete.

> -noverify
>   Desactiva al verificación.

> -verbosegc
>   Hace que el recolector de basura impima mensajes cada vez que libere memoria.

> -DnombrePropiedad=nuevoValor
>   Redefine un valor de una propiedad. nombrePropiedad es el nombre de la propiedad cuyo valor se quiere cambiar y nuevoValor es el valor a cambiar. Por ejemplo, esta línea de comando:

>       java -Dawt.button.color=green ...

>   selecciona el color de la propiedad awt.button.color a verde. java acepta cualquier número de opciones -D en la línea de comandos.

Ozito