Unidad 3 `Ambiente de ejecucion`

Anuncio
P.O.O. 1
Ambiente de ejecución
Java es un ambiente de ejecución y de programación orientada a objetos, concurrente, basado en clases
y compuesto de:
 Un lenguaje de programación
 Una especificación API
 Una especificación de máquina virtual
El entorno de ejecución de Java (JRE, Java Runtime Environment) es el ambiente de software en el cual
los programas compilados para una implementación de JVM típica pueden correr. El sistema de ejecución
incluye:
 El código necesario para ejecutar programas de Java, métodos nativos dinámicamente enlazados,
administración de memoria y manejo de excepciones.
 Una implementación de la JVM.
3.1
Compilador
Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto
nivel, a otro lenguaje de nivel inferior (típicamente lenguaje de máquina). De esta manera un programador
puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano, para luego
compilarlo a un programa más manejable por una computadora.
El compilador de java es JDK (J2SE) distribuido por SUN Microsystems y es necesario tener instalado
tanto el compilador (javac) como la JVM (java).
1: Con un editor de texto simple (incluso notepad sirve, aunque resulta poco aconsejabe) creamos un
archivo con el código java asignándole nombre con la extensión .java.
2: Abrimos una ventana DOS y cambiamos el path a la carpeta donde se encuentre el archivo:
C:> cd C:\ApuntesJava
Y compilamos con ‘javac’
C:\ApuntesJava>javac HolaMundo.java
Si no hay ningún error en el programa se producirá la compilación y el compilador almacenará en el mismo
directorio un fichero de nombre HolaMundo.class, con el código ejecutable correspondiente a la clase
HolaMundo.
En Java las mayúsculas y minúsculas son significativas.
En el ejemplo se utiliza la clase del API de Java System. Sin embargo el programa no tiene ningún
import. No obstante el compilador no detecta ningún error y genera el código ejecutable directamente. Esto
se debe a que la clase System está definida en el package java.lang, que es el único del que no es necesario
hacer el import, que es hecho implicitamente por el compilador. Para cualquier clase del API, definida fuera
de este package es necesario hacer el import correspondiente.
3.2
Ejecución
Los archivos .class son invocables directamente desde la línea de comandos (con la sintaxis java
nombreDeClase) si tienen un método main definido.
Se utiliza el comando ‘java’.
C:\ApuntesJava>java HolaMundo
Unidad 3
L.S.C. Lourdes E. Ramírez Fernández
-1-
P.O.O. 1
Se cargará la JVM, cargará la clase HolaMundo y llamará a su método main que producirá en la ventana
DOS la salida del programa (impresión en pantalla).
3.3
Argumentos de la línea de comandos
Una aplicación Java puede aceptar cualquier número de argumentos desde la línea de comandos. Los
argumentos de la línea de comandos permiten al usuario variar la operación de una aplicación.
Cuando llama a una aplicación, el usuario teclea los argumentos de la línea de comandos después del
nombre de la aplicación.
En el lenguaje Java, cuando se llama a una aplicación, el sistema de ejecución pasa los argumentos de la
línea de comandos al método main de la aplicación, mediante un array de Strings. Cada String del array
contiene un argumento.
Esta sencilla aplicación muestra todos los argumentos de la línea de comandos uno por uno en cada línea.
class Echo {
public static void main (String[] args) {
for (int i = 0; i < args.length; i++)
System.out.println(args[i]);
}
}
C:\> java Echo Bebe agua Caliente
Bebe
agua
Caliente
C:\ java Echo "Bebe agua Caliente"
Bebe agua Caliente
3.4
Máquina virtual
Una Máquina virtual Java (en inglés Java Virtual Machine, JVM) es un máquina virtual de proceso
nativo, es decir, ejecutable en una plataforma específica, capaz de interpretar y ejecutar instrucciones
expresadas en un código binario especial (el Java bytecode), el cual es generado por el compilador del
lenguaje Java.
El código binario de Java no es un lenguaje de alto nivel, sino un verdadero código máquina de bajo nivel.
La JVM es una de las piezas fundamentales de la plataforma Java. Actúa como un puente que entiende
tanto el bytecode, como el sistema sobre el que se pretende ejecutar.
La gran ventaja de la máquina virtual java es aportar portabilidad al lenguaje de manera que desde Sun
Microsystems se han creado diferentes máquinas virtuales java para diferentes arquitecturas y así un
programa .class escrito en un Windows puede ser interpretado en un entorno Linux. Tan solo es necesario
disponer de dicha máquina virtual para dichos entornos.
Unidad 3
L.S.C. Lourdes E. Ramírez Fernández
-2-
P.O.O. 1
3.5
Recolección de basura
El entorno de ejecución de Java tiene un recolector de basura que periódicamente libera la memoria
ocupada por los objetos que no se van a necesitar más.
El recolector de basura de Java es un barredor de marcas que escanea dinámicamente la memoria de
Java buscando objetos, marcando aquellos que han sido referenciados. Después de investigar todos los
posibles paths de los objetos, los que no están marcados (esto es, no han sido referenciados) se les conoce
como basura y son eliminados.
El recolector de basura funciona en un thread (hilo) de baja prioridad y funciona tanto síncrona como
asíncronamente dependiendo de la situación y del sistema en el que se esté ejecutando el entorno Java.
El recolector de basura se ejecuta síncronamente cuando el sistema funciona fuera de memoria o en
respuesta a una petición de un programa Java. Un programa Java le puede pedir al recolector de basura que
se ejecute en cualquier momento mediante una llamada a System.gc().
Nota: Pedir que se ejecute el recolector de basura no garantiza que los objetos sean recolectados.
Unidad 3
L.S.C. Lourdes E. Ramírez Fernández
-3-
Descargar