Java es un lenguaje "emulado". Tu te haces tu programa y lo compilas para un micro que no existe. La famosa máquina virtual de java, no es más que un emulador de ese micro ficticio. En cualquier ordenador (windows, linux, mac, etc), instalas el emulador (la máquina virtual) y puedes correr el programa "ejecutable" java.
Su principal ventaja es precisamente esta, que una vez hecho y compilado funciona en cualquier ordenador sin necesidad de recompilar, independientemente del micro y sistema operativo de ese ordenador. Unicamente debe tener instalada la máquina virtual java.
Otra ventaja grande de este lenguaje (aunque otros lenguajes también la tienen) es que lleva un montón de librerías standard para realizar montones de cosas (gráficos, sonidos, comunicaciones por red, etc, etc).
Su principal pega es que es un lenguaje lento y que consume muchos recursos. Cualquier aplicación grande en java requiere un ordenador potente y es más lenta que su equivalente en un lenguaje nativo (C, C++, etc).
Se bueno.