Conversando hoy con el autor de JSpeccy, me comentaba lo siguiente acerca de Java y .NET:
Java tuvo JIT en 1997, primero en Windows, en la época de Java 1.1
En 1998 salió Java 1.2, que ya llevaba JIT en todas las plataformas, y traduce directamente de bytecode a la máquina donde esté funcionando.
A estas alturas, el JIT de Java 8 son 4 compiladores (o 4 fases de compilación, cada una más agresiva que la anterior).
.NET 1.0 salió en 2002, así que le lleva un poco de ventaja.
El .class son bytecodes, eso siempre es así, pero esos bytecodes se traducen directamente a código máquina en el momento de funcionar (eso es un JIT).
Para colmo, aunque los Applets de Java tuvieron una época bastante mala, hace más de dos años que no hay ningún "exploit in the wild". De hecho, en los dos últimos años de la competición Pwn2Own no se ha encontrado ningún agujero nuevo.
Esta es la última actualización de este martes de M$:
LINKY esto el último agujero calificado como crítico en la VM de .NET:
LINKNadie que maneje Win puede hablar de "bujeros"
La VM de Java se actualiza cada tres meses, en enero, abril, julio y octubre, no cada mes, y M$ saca actualización cada mes, eso SI es tener que actualizar 5000 equipos sin saber si arrancarán todos después de actualizar ni saber si alguna aplicación dejará de funcionar.
Vulnerabilidades encontradas en el Pwn2Own de 2015:
LINKTodos los problemas de Java venían por los applets, la JRE no es intrínsecamente insegura, y a pesar de eso, en cada actualización de Java se corrigen problemas detectados aunque no exista exploit conocido.
Pero vamos, te advierto que alguien que dice que Java no tiene JIT, va a ser difícil de convencer de nada.
Por cierto, con Java 8 puedes ejecutar todos los programas Java que existen, sean de la versión que sean, para .NET hay 10 versiones 10 de la VM, todas incompatibles entre ellas de una manera u otra.
Por si hay dudas con las fechas....
https://en.wikipedia.org/wiki/.NET_Framework_version_history
https://en.wikipedia.org/wiki/Java_version_history
Y por cierto, .NET salió cuando M$ perdió un juicio con Sun por intentar jibarizar Java.