HISTORIA:
Nació al final de los años 70, cuando Bill Joy quiso crear un
lenguaje que reuniera lo mejor de los lenguajes MESA y C. Eligió el C++ como entorno de
desarrollo pero se dio cuenta de que el C++ era - y es - demasiado complicado. La idea
pasó de empresa en empresa, hasta que el 5 de Diciembre de 1990, en la empresa Sun,
se comenzó el proyecto, llamado Oak, esta vez en C. Pasaron los años, y en 1994 el
proyecto tomó forma como lo que hoy conocemos como el lenguaje Java.
DEFINICIÓN:
Java es un lenguaje de programación orientado a objetos puro, en el
sentido de que no hay ninguna variable, función o constante que no esté dentro de una
clase. Se accede a los miembros dato y las funciones miembro a través de los objetos y de
las clases. Por razones de eficiencia, se han conservado los tipos básicos de datos, int,
float, double, char, etc, similares a los del lenguaje C/C++.
Los tipos de programas más comunes que se pueden hacer con Java son
los applets (se ejecutan en el navegador de la máquina cliente) y las aplicaciones
(programas que se ejecutan directamente en la JVM). Otro tipo especial de programa se
denomina servlet que es similar a los applets pero se ejecutan en los servidores Java.
El lenguaje Java es a la vez compilado e interpretado. Con el
compilador se convierte el código fuente que reside en archivos cuya extensión es .java,
a un conjunto de instrucciones que recibe el nombre de bytecodes que se guardan en
un archivo cuya extensión es .class. Estas instrucciones son independientes del
tipo de ordenador. El intérprete ejecuta cada una de estas instrucciones en un ordenador
específico (Windows, Macintosh, etc).
Cada interprete Java es una interpretación de la Máquina
Virtual de Java (JVM). Esta es el entorno en el que se ejecutan los programas Java, su
misión principal es la de garantizar la portabilidad de las aplicaciones Java. El
intérprete Java específico ejecuta las instrucciones que se guardan en los archivos cuya
extensión es .class. Las tareas principales de la JVM son las siguientes: Reservar
espacio en memoria para los objetos creados, liberar la memoria no usada (garbage
collection), asignar variables a registros y pilas, llamar al sistema huésped para
ciertas funciones, como los accesos a los dispositivos, vigilar el cumplimiento de las
normas de seguridad de las aplicaciones Java.