Um den Unterschied zwischen einem Simulator und einem Emulator zu verstehen, denken Sie daran, dass ein Simulator versucht, das Verhalten eines echten Geräts zu imitieren. Zum Beispiel simuliert der iOS Simulator das echte Verhalten eines tatsächlichen iPhone/iPad-Geräts. Der Simulator selbst verwendet jedoch die verschiedenen auf dem Mac installierten Bibliotheken (wie z.B. QuickTime) zur Durchführung seiner Darstellung, so dass der Effekt genauso aussieht wie bei einem echten iPhone. Darüber hinaus werden Anwendungen, die auf dem Simulator getestet werden, in x86-Code kompiliert, der vom Simulator verstanden wird. Ein echtes iPhone-Gerät hingegen verwendet ARM-basierten Code.
Im Gegensatz dazu emuliert ein Emulator die Funktionsweise eines echten Geräts. Anwendungen, die auf einem Emulator getestet werden, werden in den tatsächlichen Bytecode kompiliert, der vom realen Gerät verwendet wird. Der Emulator führt die Anwendung aus, indem er den Bytecode in eine Form übersetzt, die vom Hostcomputer, auf dem der Emulator läuft, ausgeführt werden kann.
Um den feinen Unterschied zwischen Simulation und Emulation zu verstehen, stellen Sie sich vor, Sie versuchen einem Kind zu erklären, dass es gefährlich ist, mit Messern zu spielen. Um dies zu simulieren, tun Sie so, als ob Sie sich mit einem Messer schneiden und stöhnen vor Schmerz. Um dies zu emulieren, schneiden Sie sich tatsächlich.