티스토리 뷰

아이폰과 안드로이드의 속도 경쟁은 결국 32bit와 64bit 운영체제의 논쟁으로까지 번지는 형국이다. 하지만 그 싸움에서 안드로이드 진영은 애플을 이길 수 없다. 그 이유는 안드로이드의 앱 구동 체계의 구조적 문제 때문이다.


안드로이드는 리눅스 운영체제의 일종이면서도 사용자가 사용하는 앱은 모두 Java 언어로 개발된다. Java로 개발된 앱의 소스파일은 바이트 코드로 컴파일되기 때문에 운영체제가 직접 실행하는 것이 불가능하다. 왜냐하면 Java에서 컴파일된 바이트코드는 java Run-time 이라고 하는 실행환경(가상의 운영체제)에서만 읽고 해석(Just-In-Time 컴파일)이 가능하기 때문이다. 그리고 이러한 역할을 수행하는 것이 안드로이드에서 지원하는 앱구동 환경인 달빅(Dalvik)이다.


하지만 iOS는 앱이 기계어로 컴파일되어 저장소에 파일로 저장되어 있다가 사용자가 앱을 실행하면 곧바로 메모리에 올려져 운영체제에 의해 실행된다. 즉 안드로이드 처럼 앱과 운영체제의 중간에 존재하는 달빅과 같은 JIT 컴파일러가 필요없다. 이런 차이점은 바로 안드로이드의 앱 개발환경이 Java 이고 iOS의 앱 개발환경이 Object-C라고 불리는 C언어 환경이기 때문에 발생하는 차이다. iOS의 오브젝트C는 C언어로 작성된 앱의 소스파일을 아이폰의 운영체제인 iOS가 직접 읽어 메모리에 적재(loading)하고 곧바로 실행할 수 있도록 기계어코드(목적코드 혹은 Object-Code)로 만들어 저장소에 저장된다.


이 두가지 앱 구동 환경을 이해하기 쉽게 표시하면 아래그림과 같다.





간단한 그림의 표현만으로도 "안드로이드 스마트폰이 메모리도 더 크고 CPU도 더 빠른데 왜 아이폰보다 느린지"를 이해할 수 있을 것이다.


안드로이드와 애플의 64bit 전쟁.


앞에서 살펴본 스마트폰의 운영체제와 앱구동환경의 차이로 인해 최근 논란이 되고 있는 64bit 지원 논쟁에서 애플은 64bit 지원에 대해 자신감을 보이고 있는 반면 안드로이드를 만드는 구글은 멈칫하며 주저하는 미묘한 입장차이를 보이고 있기도 하다.


애플은 iOS와 오브젝트C 개발환경 그리고 CPU까지 모두 스스로 만들고 있으며 64bit CPU (AP : Application Processor라고도 부름)개발과 64bit iOS개발, 그리고 64bit 오브젝트C의 개발이 모두 하나의 작업처럼 진행될 수 있기 때문에 현재의 기술로서 64bit를 지원하는 것은 그리 어려운 일이 아니다. 게다가 32bit 오브젝트C로 개발된 앱의 64bit 포팅도 충분히 가능하다.


하지만 구글의 입장은 매우 복잡하다. 


리눅스 운영체제부터 64bit로 전환해야 하고 그 위에서 구동되는 Java는 Oracle에서 만들고 있으며 앱의 개발환경은 또 다른 곳에서 개발되고 있고 앱의 구동환경인 달빅의 64bit 포팅도 여러가지 문제로 인해 쉽지 않은 입장이다. 


여러 자유(?)진영의 합작품인 안드로이드가 64bit 지원이라는 복병을 만나 잠시 주춤하는 모습을 보이고 있다. 어찌보면 구글은 아이폰의 대항마였던 안드로이드를 만들면서 가장 쉬운길이었던 두가지의 선택, 즉 운영체제로서 리눅스를 선택한 것과 개발환경 및 앱 운영환경으로 가장 범용적이고 많은 개발자를 확보할 수 있었던 Java를 선택한 댓가를 64bit 환경의 지원이라는 과제 앞에서 치르고 있는지도 모르겠다.


어쩌면 구글은 64bit 문제로 인해 장기적으로는 안드로이드를 버리는 계획을 내부적으로 수립하고 있을지도 모른다. 그리고 그 대안으로 크롬(Chrome) OS를 밀어줄 것이 확실시 된다.


Dalvik vs ART(Android Run-time)


하지만 구글은 당장 안드로이드를 버릴 수 없기 때문에 현실적인 판단을 할 수 밖에 없다. 그 결과로서 구글은 안드로이드의 앱 구동에 대한 부정적인 이미지를 벗기위해 성능개선에 매달렸고 새로운 앱 구동환경 즉 런타임환경을 새롭게 만들었다.


구글은 최근에 출시한 넥서스5에서 Dalvik을 대체할 새로운 앱의 구동환경으로 내놓은 ART가 그것이다. 보다 빠른 앱의 구동을 지원하는 ART는 이 포스트를 올리는 현재시간 기준으로 넥서스5에서만 사용이 가능하다.



구글이 나름대로 안드로이드의 성능개선을 위해 많은 노력을 하고있긴 하지만 언제까지 지원을 아끼지 않을지는 알 수 없다. 그리고 "리눅스-Java-앱"의 3계층 구조 자체를 뜯어고치지 않는 이상 아이폰의 성능을 쫒아가는 것은 거의 불가능하다고 보여진다.  하지만 그러기엔 너무 먼길을 왔다. 아마도 그래서 구글이 크롬을 밀어줄 것 같다는 생각은 더욱 확실해진다.

'Life > IT' 카테고리의 다른 글

기계식 키보드 스위치 종류  (0) 2018.03.26
Gear S3 Design  (0) 2017.05.29
Gear S3 시계화면 추천  (0) 2016.12.16
[앱추천] 촛불시위 어플  (0) 2016.11.29
기어 S3 프론티어 개봉&리뷰  (0) 2016.11.16
댓글

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음



Total
Today
Yesterday
최근에 달린 댓글