Principales características de Java

Posted by

¿Qué es Java?

Java es un lenguaje de programación orientado a objetos, creado a principios de los 90’s por Sun Microsystems, empresa que luego fue comprada por Oracle Corporation. Y bueno, el resto de la clase de historia se lo dejamos a Wikipedia. ¿Sas?

En la actualidad  las versiones de Java que aún tienen soporte son a partir de la cinco, y tenemos tres ediciones principales: Java ME (Micro Edition), Java SE (Standard Edition) y Java EE (Enterprise Edition).

Java ME está orientado a dispositivos móviles con pocos recursos: Celulares (Pero no los Android), PDA’s, electrodomésticos, etc; Java SE es la chida y Java EE es la más chida, ya que cada una a su vez ofrece las funcionalidades de la edición más abajo, tal como se muestra en la imagen:

 Ediciones java

Principales características

Codificación, compilación y ejecución

La codificación se realiza en archivos con extensión “.java”, y luego procedemos a compilarlos.

El compilador verifica que las clases estén, cómo decirlo, “bien programadas”, es decir que no haya errores en la sintaxis o declaración de nuestro código. A los errores que ocurren en esta etapa se les llama “Errores de compilación”.

Si nuestro código no contiene errores de compilación se generará un nuevo archivo con el mismo nombre pero con extensión “.class”, que es el que contiene los bytecode que interpreta la JVM para después pasarlo a lenguaje máquina… Sí, ese de unos y ceros.

En los IDE’s modernos (NetBeans, Eclipse, etc.) la compilación se realiza de forma automática mientras codificamos. Sin embargo, podemos invocar al compilador desde la consola de nuestro sistema operativo con el comando javac (desde luego, debe estar previamente configurado) y el nombre del archivo, ejemplo:

javac MiCodiguito.java

Cuando compilamos nuestra clase, también se realiza la compilación de todas aquellas clases que nuestra clase principal esté usando, e incluso de aquellas clases que usa la clase que nuestra clase está usando. Algo enredoso ¿verdad?, pero no, se refiere a que si nuestra clase “MiCodiguito” está usando otra clase llamada “MiCodiguito2” y esta a su vez usa una clase “MiCodiguito3”, con solo invocar el comando de arriba se realizará la compilación de las tres clases.

Y posteriormente se ejecuta con el comando “java” seguido del nombre del archivo. Ejemplo:

java MiCodiguito

O con la opción “Run” de nuestro IDE.

La JVM

Uno de los principales atractivos del lenguaje es la portabilidad del código. Como su lema lo dice “Write Once, Run Anywhere” (Escríbelo una vez, córrelo en cualquier lugar).

Cuando se programa una aplicación en Java no importa el S.O. en que se haga, pues la JVM (Java Virtual Machine, o como se dice en castellano, la Máquina Virtual de Java) se encargará de que pueda ejecutarse en cualquier otro entorno (Windows, Mac OS, Linux, Solaris, Android (Aunque android usa su propia máquina virtual) e incluso el inmortal teléfono Nokia capaz de sobrevivir a una hecatombe mundial.).

Pero eso no es todo, recordemos que la JVM no genera un código intermedio, sino directamente el lenguaje máquina, esto permite que no solo se instale en el S.O., también puede implementarse en los navegadores o si nos gusta ser hardcores, directamente en el hardware.

Hay algo llamado JRE (Java Runtime Evironment) que es un set de librerías que permiten que la JVM se ejecute en la PC y así poder correr nuestros programas.

La JVM tiene tres tareas principales:

1.- Cargar el código

  • Carga todas las clases necesarias para la ejecución de programa.
  • Mantiene las clases del sistema.
  • Evita la suplantación de clases

2.- Verificar el código

  • Se asegura de que el código se apegue a las especificaciones de la JVM.
  • Que el código no viole la integridad del sistema.
  • Que el código no cause un desbordamiento de pila (Stack overflows) o un subdesbordamiento (underflow).
  • Que los tipos de parámetros para todas las operaciones del código sean correctos.
  • Que no ocurran conversiones ilegales.

3.- Ejecutar el código

Emm… Pues ejecuta el código.

 

El recolector de basura

En java, cuando creamos un objeto, este se almacena en un espacio de memoria y usualmente se crea un variable que apunta a dicho objeto. Sin embargo si a esa variable se le asigna una referencia a otro objeto, se dice que el primer objeto ha quedado huérfano, es decir, ya no hay ninguna variable que requiera su valor. He aquí donde entra el recolector de basura o Garbage Collector.

Su función es identificar aquellos objetos que han quedado huérfanos y liberar el espacio de memoria que los contiene, y así, dicho espacio puede ser asignado a otra tarea.

Garbage collector

El Garbage Collector es como la perrera que recoge de la calle los perros sin dueño… para luego sacrificarlos – @Darel.

El ejemplo citado es cruel, pero especifica bien cuál es su misión. Además, el Garbage Collector no ha matado ningún perro… hasta ahora.

Para finalizar, en la siguiente imagen veamos el proceso desde la codificación hasta la ejecución de un programa.

Compilacion JVM

Hasta aquí el post, comparte que opinas acerca de Java. ¿Lo has usado?, ¿Qué te parece su rendimiento? ¿Qué opinas de las funcionalidades de la JVM?,  ¿Prefieres otro lenguaje de programación?

Saludos y hasta la próxima.

Comments