Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

From http://stackoverflow.com/questions/4544588/difference-between-iphone-simulator-and-android-emulator

The difference between emulators and simulators is that emulators mimic the software and hardware environments found on actual devices. Simulators, on the other hand, only mimic the software environment; they otherwise have access to all of the host system's hardware resources such as disk space, memory and processor speed.

Apple always harps on the importance of device testing because iPhone Simulator does not emulate an iPhone processor, disk drive, memory constraints and whatnot. You hardly ever get memory warnings unless your Mac is struggling to manage resources itself, unless you simulate (again) memory warnings from the Simulator's menu item.

Though android emulator emulates the ARM processors and certain hardware, it still doesn't do a good job of matching the CPU performance.

Being an emulator it can match Memory consumption well, it can emulate certain simple devices well but fails when the devices gets complicated for example mobile GPU and HW media decoders. And as the emulation logic works on translating each ARM instruction to X86 instruction and executing its a performance hog and by design not cycle accurate.

My Question: Why Android created emulator rather simulator?

share|improve this question

2 Answers 2

up vote 11 down vote accepted

Nobody but Google knows why they made that decision, but here's my best guess:

Android is an open platform, so there are a lot of different hardware configurations out there. Being able to emulate different hardware configurations is a big boon for developers, in that it greatly reduces the need to have actual devices to test on. This keeps the costs down for developers, so encourages them to develop for Android.

Trying to match performance without using the actual hardware is a fool's game in this context - PCs have different specs too! It's also of not of concern to many (I would guess most) developers.

share|improve this answer

My guess is that even if Android apps have to be written in Java, they're allowed to include extra code written in any language and compiled to machine language with any compiler you wish. To run those, you have to emulate a phone CPU.

(Yes, now there is Android for x86, but it's somewhat of a fringe platform.)

iOS, on the other hand, allows only Objective C, and compiled only with XCode. it doesn't sound so hard to include two compilation targets in the SDK: one for devices and one for the simulator.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.