Java

Java es un lenguaje semi orientado a objetos similar a C++. Se podría decir que es un lengueje diseñado a partir de C++ pero eliminando características que pueden complicar bastante a los programadores no expertos. Por ejemplo, la asignacion de memoria es monitoreada por el sistema, y existe un garbage collector que se encarga de reasignar la memoria de objetos que ya no estén siendo referenciados.

Otra característica de Java es que está pensado para producir código multiplataforma. Cuando se compila una fuente de Java se genera un archivo binario (bytecode) que corre en una Maquina Virtual de Java (JVM de aqui en adelante). La JVM es similar a un PC a los ojos del codigo código binario java, y le provee un entorno de ejecución completo. Esta JVM permite que las aplicaciones puedan correr en forma independiente al sistema operativo siempre que haya una JVM especificamente diseñada para el.

El mito de los applets

Sun comenzó promocionando Java como una herramienta ideal para la web. Gracias a su característica multiplataforma a nivel de codigo binario, pretendia ser una buena extension cuando el HTML no era capaz de ofrecer más.

La idea de Java en la web consistía en que los usuarios podian descargar aplicaciones ya compiladas y estás se ejecutarian en cualquier sistema operativo gracias a la Java Virtual Machine. En este contexto aparecen los applets, pequeñas aplicaciones que se incrustaban en las paginas web para añadirle funcionalidad.

Todo esto que en papel suena bonito, en la realidad no funcionaba muy bien. Los applets fueron utilizados solo para agregar funcionalidad irrelevante en la web (principalmente animaciones), lo que hacia que las paginas fueran mas lentas en descargar completamente sin que ello implicara un beneficio a nivel de funcionalidad. Por otra parte, las aplicaciones no funcionaban tan rápido y la interfaz de usuario (cuando existia) no se integraba con el sistema operativo anfitrión.

Hoy en dia es muy extraño encontrar paginas web que usen applets.

Servlets y Java en el lado del servidor

Java no es solo applets. Hoy en dia existen poderosos servidores de aplicaciones que usan Java como plataforma de ejecución. Sin entrar en demasiados detalles, Java permite tener aplicaciones distribuidas funcionando en un administrador de transacciones que se encarga de activar componentes, comunicarlos y asegurarse de que actuen en forma consistente.

Una característica muy importante de los sevidores de aplicaciones J2EE es su escalabilidad. A nivel de aplicación es transparente la forma en que se distribuyen los componentes. Estos pueden distribuirse entre distintos servidores, incluso con distinta arquitectura.

Java Hoy

Afortunadamente Java ha progresado bastante desde sus primeras incursiones en forma de applets. A la libreria de clases fundamental se han agregado un conjunto de APIs promocionadas por grupos tan importantes como el Apache group. Este soporte a nivel de API's ha logrado bajar los esfuerzos necesarios para escribir aplicaciones complejas.

En cuanto a entorno de ejecución, se han perfeccionado las JVM's y existen diversos proveedores, quienes han ido compitiendo para proveer JVM's cada vez más rápidas y eficientes.