Perché i Mac non possono eseguire le migliaia di applicazioni di Windows?

Come la maggior parte dei sistemi operativi moderni, il software che gira su di essi dipende da una considerevole quantità di infrastrutture e servizi che il sistema operativo fornisce.

OS X non esegue applicazioni Windows nativamente per la stessa ragione per cui Linux non lo fa e Windows non esegue applicazioni OS X o Linux: overhead. Per eseguire le applicazioni straniere, avreste bisogno di fornire tutte le librerie e i servizi OS della piattaforma straniera. Questo richiederebbe memoria aggiuntiva, RAM, risorse di CPU, aggiungerebbe complessità, e incorrerebbe in enormi costi di ingegneria - tutto per un prodotto che probabilmente eseguirà solo una parte del software della piattaforma straniera. Nel caso particolare di Windows, le librerie del nucleo del sistema operativo sono così scarsamente documentate e piene di vari bug che le applicazioni di Windows si basano sul fatto di essere just-so, che sarebbe un compito enorme implementare quella massa di spaghetti (in confronto, Linux è completamente open source, e il kernel OS X e molti dei suoi framework sono anche open-source).

Questo non vuol dire che non ci sia stato uno sforzo. Il progetto Wine mira a reingegnerizzare le API WIN32 per rendere possibile l'esecuzione di binari di Windows su altre piattaforme. Hanno lavorato diligentemente dal 1993 su questo compito. Potete scaricarlo per OS X o ottenere una versione ben confezionata per OS X da CodeWeavers. Il problema è che non è ancora completo e mentre esegue un sacco di software per Windows. L'API WIN32 è ed è sempre stata un orribile pasticcio - tanto che una delle maggiori caratteristiche di Windows 8 è una deprecazione delle tradizionali API della piattaforma Windows in favore della nuova piattaforma WinRT.

I software per macchine virtuali come VirtualBox, Parallels Desktop, e VMWare Fusion non fanno alcun tentativo di emulare o tradurre le applicazioni Windows nell'ambiente OS X, invece fanno qualcosa che è tecnicamente molto più semplice: simulano l'hardware di un computer nel software. In effetti, la simulazione di un intero computer è un compito molto più semplice da portare a termine, e permette di installare qualsiasi software che si desidera nel computer simulato, eseguire più simulazioni allo stesso tempo, salvare lo stato della simulazione su disco, rimuoverlo dalla memoria e richiamarlo in un secondo momento -- ogni sorta di cose interessanti. Questo è il modo più comune per eseguire applicazioni Windows su altri sistemi operativi perché, da un punto di vista ingegneristico, è molto più facile, funziona molto bene, ed eseguirà qualsiasi software proprio come verrebbe eseguito sull'hardware fisico.