viernes, 17 de julio de 2020

FASES DE UN PROGRAMA "Holamundo.java"

A continuación se explicará las fases por las que pasa un programa en java, desde la cabeza del programador, hasta la ejecución en un sistema.  Esta explicación estará basada en un ejemplo similar que propone Deitel en su libro “How to program in Java”.

Las fases de un programa en java son las siguientes:

  • Fase de Creación o Edición
  • Fase de Compilación
  • Fase de Carga del programa en memoria
  • Fase de Verificación de Bytecodes
  • Fase de Ejecución

1.     Fase de creación o edición

Lo primero que hace un programador una vez que ya tiene en mente la aplicación que desea desarrollar es empezar a escribir el código. Esto es lo que se conoce como fase de edición y el resultado de la misma es el código fuente.

Podemos escribir un programa en java usando algo tan simple como el editor de texto en Windows; vi, vim o gedit en GNU/linux; o bien podemos usar una herramienta más orientada al desarrollo, o sea una IDE, como puede ser Eclipse, Netbeans, Sublime, entre otras.

El archivo que contiene el código fuente de un programa en java tendrá la extensión .java.

Un ejemplo simple de una aplicación que imprima algo en consola es la siguiente:

El nombre del archivo .java debe coincidir con el nombre de la clase (class), en este caso Holamundo.java

2.     Fase de compilación

Una vez el programador baja su idea a un código fuente, es hora de compilar el mismo. Este proceso convierte nuestro código fuente en códigos de bytes que más tarde 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 les da la característica de portabilidad a los mismos, lo cual es uno de los puntos fuertes de java.

Para compilar el código fuente, puede hacerse a través de IDE o por consola, con el comando javac (java compiler). Para el ejemplo sería:

javac Holamundo.java

Si todo va bien, la salida de esto es un archivo Holamundo.class, el cual contiene los bytecodes de la aplicación.

3.     Fase de Carga del programa en memoria

Cuando se ejecuta el programa en java con el comando java, entra en juego un componente llamado cargador de clases. Este, carga las clases dinámicamente en la JVM. Cabe recordar que la JVM es como una especie de computadora virtual. Lo primero que hará el cargador de clases es intentar cargar nuestro .class en memoria e ir cargando todos los .class a los que el programa (en el ejemplo Holamundo.class) haga referencia. Las clases a las que la aplicación haga referencia pueden encontrarse localmente en el disco duro o bien remotamente.

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. Esto se realiza por que 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

Esta es la fase donde la JVM ejecuta las acciones especificadas por los bytecodes cargados en su memoria.

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.

Como se observa en la imagen, la JVM actúa como una capa intermedia entre su lenguaje “máquina” (entendible por la JVM) y el sistema subyacente. Esto hace que el código compilado sea independiente de la plataforma en la cual se va a ejecutar.

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

Referencias

  • Deitel, H. M. (2005). Java How to Program in Java. Prentice-Hall.

  • Osorio, V. (23 de Agosto de 2010). Lo Que Andabas Buscando. Recuperado el 15 de Julio de 2020, de http://virginia-ingsystem10.blogspot.com/2010/08/proceso-de-compilacion-en-java.html

  • SITEOWNER. (18 de Julio de 2015). KNOW DIMENSION. Recuperado el 16 de Julio de 2020, de http://knowdimension.com/blog/lenguajes/programando-en-java-de-la-escritura-a-la-ejecucion/#:~:text=Las%20fases%20de%20un%20programa,Carga%20del%20programa%20en%20memoria

  • Un Aprendiz De Programación. (2012). Obtenido de http://unaprendizprogramacion.blogspot.com/2015/08/fases-de-un-programa-en-java.html

 

 

 

 

 

 


No hay comentarios:

Publicar un comentario

FILOSOFÍA DE SISTEMAS

Según lo indicado por (Arnold Cathalifaud & Osorio, 1998) donde tuvo en cuenta la definición proporcionada por Bertalanffy, la filoso...