Java permite escribir
programas de interfaz gráfica o textual. También se pueden correr programas de manera incorporada o incrustada en los navegadores web de Internet en forma de Java applets, aunque no llegó a popularizarse como se esperaba en un principio.
Los programas
en Java generalmente son compilados a un lenguaje intermedio llamado bytecode, que luego son interpretados por una máquina virtual (JVM). Esta última sirve como una plataforma de abstracción entre la máquina y el lenguaje permitiendo
que se pueda "escribir el programa una vez, y correrlo en cualquier lado". También existen compiladores nativos de Java, tanto
software libre como no libre. El compilador GCC de GNU compila Java a código de máquina con algunas limitaciones al año 2002.
Con la evolución
de las diferentes versiones, no sólo se han producido cambios en el lenguaje, sino que se han producido cambios mucho más
importantes en sus bibliotecas asociadas, que han pasado de unos pocos cientos en Java 1.0, a más de tres mil en Java 5.0.
En particular, se han añadido APIs completamente nuevas, tales como Swing y Java2D.
El lenguaje mismo
se inspira en la sintaxis de C++, pero su funcionamiento es más similar al de Smalltalk que a éste. Incorpora sincronización y manejo de tareas en el lenguaje mismo (similar a Ada) e incorpora interfaces como un mecanismo alternativo a la herencia múltiple de C++.
Una de las grandes
potencias del lenguaje de programación Java es la total portabilidad de sus programas gracias a su afamada "máquina virtual".
Esto adquiere una importancia aún mayor en Internet donde existen tipos de computadoras muy dispares.