Ticker

6/recent/ticker-posts

Ejecución de prueba de un programa Java

Ejecución de prueba de un programa Java

Para la ejecución de prueba de un programa en Java se considera diferentes fases por la debe pasar una aplicación en java, es decir desde que esta en análisis a implementar por el programador, hasta su ejecución en un determinado sistema operativo. Para lo cual nos basaremos en la propuesta de Deitel que hace mención en su libro How to program in Java. 

Las fases de un programa en java son:

  1. Creación o Edición
  2. Compilación
  3. Carga del programa en memoria
  4. Verificación de Bytecodes
  5. Ejecución

1. Fase de Creación o Edición

Lo primero que realiza el programador una vez que ya cerrado el análisis acerca de la aplicación que desea desarrollar es empezar a escribir el código. Fase que se conoce como edición y el resultado de la misma es el código fuente. Este es un tipo de código entendible por personas ya que suele ser las palabras claves normalmente en ingles, sin embargo aún esta lejos de lo que es comprensible directamente por el ordenador.

Se puede escribir un programa en java usando algo tan simple como el block de notas de Windows u otro sistema operativo como tal; o simplemente podemos usar una herramienta más orientada al desarrollo, o sea una IDE (Integrated Development Environment), como puede ser Eclipse, IntelliJ, Sublime, entre otras.

El archivo que contiene el código fuente de un programa en java tendrá la extensión .java; es decir cuando en nuestro proyecto veamos archivos .java ya sabremos que estamos en el directorio de código fuente.

En el siguiente ejemplo se imprimirá los datos de salida en la consola:

Para ello debe crear un proyecto de tipo consola y crear el siguiente método y ejecuta en programa:

public class ClassTest01 {
       public static void main(String[] args) {
             System.out.println("Nuestro entorno de desarrollo para JAVA ya esta OK...\n"
                           + "Sin embargo aún no se podra ejecutar aplicaciones como JSF, WS u otros...\n"
                           + "Descarguemos Eclipse IDE for Enterprise Java Developers");
       }
}

Resultado de la ejecución de programa:

2. Fase de Compilación

A la hora del proceso de compilar, nuestro código fuente se convierte en códigos de bytes que seguidamente serán interpretados por la JVM.

A diferencia de muchos otros lenguajes, los códigos de bytes compilados, pueden ejecutarse en cualquier sistema (Linux, Windows, MacOS, etc) que tenga la JVM correspondiente. Esto nos brinda la flexibilidad de la portabilidad, lo cual es uno de los puntos fuertes del desarrollo en java.

Para compilar el código fuente, se realiza a través de la IDE (Eclipse, IntelliJ, etc) o simplemente por consola, con el comando javac (java compiler). 

Por ejemplo nuestro programa creado ClassTest01 se ejecutaría del siguiente modo:

javac ClassTest01.java

3. Fase de Carga del Programa en Memoria

Al ejecutar el programa en java con el comando java, entra en determinación un componente llamado cargador de clases, que es el encargado de carga las clases dinámicamente en la JVM, es decir a medida que se van necesitando. 

Recordar que la JVM es como una especie de computadora virtual, es decir que tiene su propia memoria, aunque esto signifique que a fin de cuentas se cargue en la memoria física. Lo primero que hará el cargador de clases es intentar cargar nuestro .class en memoria e ir cargando todas las .class de acuerdo a la referencia que tienen en nuestra aplicación. 

Todas las JVMs incluyen un cargador de clases, el cual es conocido como cargador de clases primordial.

4. Fase de Verificación de Bytecodes

A fin de asegurar que no se violan restricciones de seguridad, a medida que se van cargando las clases en memoria, el verificador de bytecodes examina los bytecodes para asegurar que sean válidos. Relativamente esto se realiza porque el sistema Java run-time no confía en el código que se está cargando.

Se realizan pruebas tales como que el formato del fragmento de código sea el correcto, así como también:

  • Que no se forjen punteros
  • Que no haya violaciones de acceso a la memoria
  • Que los objetos sean accedidos por lo que son (Por ejemplo, que un objeto System siempre sea usado como System y nada más)

5. Fase de Ejecución

En esta fase es donde la JVM ejecuta las acciones especificadas por los bytecodes cargados en su memoria. Como menciono anteriormente la JVM es como una especie de una computadora virtual que reside en la máquina física, es decir es donde se cargan los programas en java. 

Los archivos .class se cargan en la memoria virtual y es la máquina virtual la que se encarga de traducir estas instrucciones que ella puede entender a instrucciones que entiende el Sistema Operativo y hardware subyacente.

A fin de ganar eficiencia en el proceso de interpretar el código que la JVM puede entender a código que sea entendible por la computadora, las JVMs actuales utilizan una técnica conocida como compilación Just in Time o JIT (También se lo conoce como HotSpot compiler). Cuando se detecta que hay byte codes que se ejecutan con frecuencia el compilador JIT los traduce a lenguaje de máquina, con lo cual la próxima vez que la JVM encuentre estos bytecodes los ejecutará directamente sin necesidad de pasar por el proceso de interpretación, sumando eficiencia a la ejecución del programa en java.


Publicar un comentario

0 Comentarios