티스토리 뷰

에뮬레이터(Emulator) 시뮬레이터(Simulator)

둘 다 실제 하드웨어를 사용할 필요없이 애플리케이션을 테스트할 수 있도록 만들어주는 비슷한 목적을 가지고 있다. 하지만, 두 용어는 확연히 다르므로 구분해서 사용해야 한다. 시뮬레이터(Simulator)는 100%실제 환경에 가깝도록 만들어져서 실제상황과 유사하게 동작하도록 테스트환경을 만든다. 하지만, 단지 실제 플랫폼과 유사할 뿐이다. 그리고 실제 코드도 시뮬레이터가 아닌 실제 장치에서 실행되도록 만들어지는데, 왜냐하면 시뮬레이터는 코드 레벨에서만 호환성을 가지고 있기 때문이다. 시뮬레이터 코드는 종종 윈도우의 DLL 파일들과 실제 장치에서 사용되는 API처럼 만들어진 리눅스의 라이브러리들을 기반으로 데스크톱에서 하나의 소프트웨어 프로그램처럼 실행된다.

 반면, 에뮬레이터(Emulator)에서는 프로젝트의 타깃 호환성이 바이너리 레벨이다. 우선 빌드 환경에서 사용될 타깃(Target) CPU(보통은 'x86/Simulator)를 선택한다. 에뮬레이터에서 작성되는 코드는 에뮬레이터뿐만 아니라 실제 기기에서도 동작한다. 물론 특정 기기와 에뮬레이터가 완전히 똑같을 수는 없을 것이다. 예를 들어 네트워크 환경도 실제 모바일 기기들은 GPRS, EDGE혹은 EVDO와 같은 무선 네트워크 망을 통해서 실행되겠지만, 에뮬레이터에서는 사용하는 개발 환경(데스크톱 또는 노트북)의 네트워크 인터페이스에 종속적이다. 에뮬레이터는 실제 장비에서 실행되는 거의 유사한 환경을 제공하기 때문에 많은 분야에서 선호하는 것이 사실이다.

 현재 released bada SDK 1.2.1 는 Simulator 기반 개발환경이다.

좀더 간략히 정리하자면,

 에뮬레이터는 현재 사용중인 시스템 안에 다른 시스템을 완벽하게 재현한것이다. 그렇기 때문에 모바일전용CPU인 ARM계열 CPU의 명령어를 해당 CPU에 맞도록 변환시켜 실행하기 때문에 실제 모바일폰으로 바이너리 파일을 다운로드해도 이상없이 잘 동작한다.
 또한 에뮬레이터는 실제 기기와 유사한 테스트가 가능하다. 하지만 초기 구동 시간이 매우 오래 걸린다는 단점과 구동 후 속도도 느리다는 단점이 있다.

 시뮬레이터는 대상 시스템을 추상화한 것이기 때문에 PC의 CPU에 맞는 명령어를 사용하며 속도가 빠르다는 장점이 있지만 정확한 기기의 상태를 재현할 수 없기 때문에 시뮬레이터에서는 빠르고 정확하게 동작할 수 있지만 실제 타깃보드에서는 느리거나 또는 에러를 발생할 수도 있다.

참고: 언로킹 안드로이드 개발자 가이드 by Frank Ableson 외 2인


댓글
03-29 20:24
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday