Mi manca qualcosa di base qui. A che serve compilare da una lingua di origine in bytecode (java) o in linguaggio intermedio (.NET) e poi eseguirli dall'interno della JVM o CLR?Perché è necessario/utilizzare il codice gestito (su nativo)?
C'è una diminuzione delle prestazioni (anche se lieve o grande) dell'uso del codice gestito, ma quali sono i vantaggi? So che ci sono la garbage collection e la gestione della memoria, ma anche così non sarebbe meglio semplicemente compilare il codice sorgente in modo nativo, senza bisogno di questo livello intermedio?
Inoltre (sto aggiungendo questo qui poiché è direttamente correlato alla domanda) - Apparentemente le app di Windows 10 Universal sono compilate con .NET Native che compila il codice macchina nativo. Sono curioso di sapere perché questo non è stato fatto prima con tutti i programmi .NET.
Un grande vantaggio di bytecode è la possibilità di eseguirlo comunque è stata implementata la VM.L'ambito di applicazione per questo è limitato in Windows perché si sta veramente prendendo di mira solo una manciata di architetture (atom, x86 ecc.) – Sammy
. Native .NET NON si limita semplicemente a "compilare codice macchina", ma essenzialmente jit in anticipo, in modo che non sia necessario essere ingaggiato più tardi. Questo è ancora convertito nello stesso identico codice macchina che sarebbe stato durante il jit; la tua ipersemplificazione eccessivamente semplificata ha fatto sembrare che tu pensassi che magicamente sia diventato C++ nativo. – Krythic
@Krythic vedo. Ma quelli non sono la mia scelta di parole, stavo citando il link che avevo menzionato ([Native .NET] (https://msdn.microsoft.com/en-us/vstudio/dotnetnative.aspx)). –