В соответствии с информацией, которую я смог собрать в среде исполнения .NET и Java, текущее состояние дел:
-
Современная Java VM способна выполнять непрерывную перекомпиляцию, что в сочетании с профилированием может привести к большим улучшениям производительности. Старые JVM использовали JIT. Дополнительная информация в этой статье: http://www.ibm.com/developerworks/library/j-jtp12214/ и особенно: Теория и практика Java: динамическая компиляция и измерение производительности
-
.NET использует JIT или NGEN для генерации собственного кода, но как только сгенерирован собственный код, дальнейших (runtime) оптимизаций не выполняются.
Отличия в сторону и без намерения эскалировать священные войны, означает ли это, что Java Hotspot VM - это одно поколение впереди .Net. Будут ли эти технологии, используемые на Java VM, в конечном итоге найти свой путь в .NET runtime?