James Gosling inició el proyecto del lenguaje Java en Junio de 1991 para uso de sus proyectos. Inicialmente fue llamado Oak, luego Green y al final se renombró como Java.
Java es un lenguaje de programación de alto nivel desarrollado por Sun Microsystems y publicado en 1995. Java se ejecuta en una gran variedad de plataformas, tales como Windows, Mac OS, y en las versiones de UNIX.
Java posee diferentes versiones que pueden ser usadas dependiendo de la plataforma de desarrollo. Tales como Java SE (Standard Edition), Java EE (Enterprise Edition) and Java ME (Micro Edition). Java garantiza ser **escrito una vez, ejecutado donde sea**.
* **Orientado a objetos:** En Java, todo es un Objeto.
* **Plataforma independente:** A diferencia de muchos otros lenguajes de programación, incluyendo C y C ++, cuando Java es compilado, no se compila en la máquina específica de la plataforma, tampoco en la plataforma de código byte independiente. Este código byte se distribuye a través de Internet y es interpretado por la máquina virtual (JVM) en la que la plataforma se está ejecutando.
* **Simple:** Java está diseñado para ser fácil de aprender. Si entiendes el concepto básico de POO, Java te será fácil de dominar.
* **Seguro:** Con la característica de seguridad de Java que permite desarrollar sistemas de manipulación libres libres de virus. Técnicas de autenticación se basan en el cifrado de clave pública.
* **Arquitectura neutral:** El compilador de Java genera un formato de archivo de arquitectura neutral que hace que el código compilado sea ejecutable en muchos procesadores, con la presencia del sistema de ejecución de Java.
* **Portable:** Siendo arquitectónico-neutral y no tener aspectos dependientes de implementación. El compilador de Java está escrito en ANSI C con un límite portabilidad limpio, que es un subconjunto POSIX.
* **Robusto:** Java hace un esfuerzo por eliminar las situaciones propensas a errores haciendo hincapié principalmente en la comprobación de errores en tiempo de compilación y en tiempo de ejecución.
* **Multihilos (Multithreaded)**: Con la característica de multiproceso de Java es posible escribir programas que pueden hacer muchas tareas simultáneamente. Esta característica de diseño permite a los desarrolladores construir aplicaciones interactivas que se ejecutan sin problemas.
* **Interpretado:** Java byte code se traduce sobre la marcha para instrucciones nativas de la máquina y no se almacena. El proceso de desarrollo es más rápido y analítico ya que el enlace es un proceso incremental y ligero.
* **Alto rendimiento:** Con el uso de los compiladores Just-In-Time, Java permite un alto rendimiento.
* **Distribuído:** Java está diseñado para el entorno distribuido de internet.
* **Dinámico:** Java es considerado por ser más dinámico que C o C++ ya que está diseñado para adaptarse a un entorno en evolución. Los programas de Java pueden llevar una extensa cantidad de información en tiempo de ejecución que puede ser utilizada para verificar y determinar los accesos a los objetos en tiempo de ejecución.