Yo: Un programa multiplataforma es un programa que funciona en cualquier plataforma sin necesidad de portarlo.
Tú: Decis, que son multiplataformas aquellos que no necesitan de nada para correr bajo las distintas plataformas, que yo sepa Java para correr bajo windows necesita una maquina virtual, pero eso si es multiplataforma no?
1º Pregunta: ¿Qué tiene que ver instalar una máquina virtual con portar un programa?
2º La capacidad multiplataforma de Java se ve muy limitada por la disponibilidad de la máquina virtual.
Aparte de eso:
Programas realizados en .Net: Programas que pueden correr tanto bajo Windows como bajo Linux.
¿Sin portar? La mayoría no (es decir, los desarrollados en Windows), por varias razones:
1º El uso de GDI/Systems.Windows.Forms.
2º La escasa madurez de Mono/DotGNU.
Es decir (otra vez te lo digo), te atan a una plataforma.