Java fue diseñado para cubrir algunas de las deficiencias de sus antecesores como el recolector de basura, un mecanismo de limpieza y compactación de la memoria que deja de utilizarse para cerrar procesos en la computadora. Al hacer estas acciones de manera automática libera al programador de las tareas de limpieza del desorden que pueden producir las omisiones de gestión de los recursos de la computadora.
Para que un programa pueda ejecutarse en una computadora necesita codificarse en un archivo de texto (código fuente), “compilarlo” y convertirlo al código máquina que pueda ser ejecutado por el procesador de la computadora.
Un compilador revisa todo el código para verificar si está bien construido el programa respecto al léxico y a la sintaxis. El léxico corresponde a las tókens (elementos de léxico) que puedes utilizar:
- Símbolos
- Palabras reservadas.
- Reglas para construir identificadores.
- Reglas para construir números constantes.
- Reglas para construir constantes alfanuméricas.
Así como las reglas de sintaxis para construir “oraciones” o sentencias del lenguaje. Sin embargo, el problema es que los programas se desarrollan para determinado procesador o sistema operativo, cuando se quiere llevar a una computadora de otra arquitectura hay que recompilar el programa, a veces hacer cambios en la codificación en el código fuente y generar un nuevo archivo binario que pueda entender la computadora. Con la idea de evitar esto, surgen los intérpretes, que leen una línea a la vez y la ejecutan en el momento que lo requieren. Después de ejecutar una instrucción compilan la siguiente y la ejecuta y así continúan hasta terminar. Los problemas de esta estrategia es que hay que contar con el código fuente, teniendo la posibilidad de perder la propiedad intelectual, o que falle el programa porque no se revisó completamente desde un principio y la ejecución es más lenta. Java al descubrir estas carencias, generó una estrategia de “precompilar” el código fuente “.java” a uno “.class” que contiene un código intermedio “byte code” que se interpreta en una máquina virtual (de Java) en el sistema operativo distinto. Obteniendo lo mejor de ambas estrategias.
Máquina Virtual de Java
Para poder ejecutar programas desarrollados en Java, debe instalarse el Entorno de Ejecución de Java (JRE, Java Runtime Enviroment) que incluye el conjunto de librerías con la máquina virtual de Java y los componentes que permiten la compilación y ejecución de los programas. Esta instalación también incluye el Kit de Desarrollo de Java (JDK —Java Development Kit), que es un conjunto de herramientas del lenguaje que permite el desarrollo de aplicaciones.
¿Cómo funciona?
Todos los programas en Java en código fuente tienen la extensión “.java”, al compilarse generan otro archivo con extensión “.class” en código intermedio o “bytecode”, que puede ser distribuido e interpretado por la Máquina Virtual de Java en distintos sistemas operativos, mecanismo por el cual los programas se vuelven multiplataforma.
Imagen basada en Amed, A. & Bhanu, P. (2016). Foundatios of Software Engineering. Boca Ranton. CRC Press. ISBN: 978-1-4987-3759-3. Clasificación QA76.758 .A398 2015. 475 pp.
El JDK puede descargarse desde el sitio oficial de Java así como el entorno de desarrollo adecuado a tu sistema operativo.