안드로이드는 리눅스 커널을 근간으로 만들어졌으며, 이를 더욱 발전시켜 자바 애플리케이션 실행을 위한 가상
머신을 최적화 시켰다. 커널과 가상 머신 모두 안드로이드에게는 핵심 기능이다. 안드로이드 스택의 리눅스 커널 컴포넌트는 안드로이드 폰들을
위한 다양한 하드웨어 선택할수있는 이점을 제공하여 신속한 개발과 이식성을 보장하고 있다. 안드로이드의 자바 개발 환경이 핵심인데
자바 소프트웨어 개발자와 자바 개발에 필요한 편리한 개발 환경을 제공함으로써 개발자들이 쉽게 점근할수있다.
접근하기 어려운 환경을 제공하는 모바일 플랫폼은 개발자들이 줄어 결국 애플리케이션 수도 감소하게 된다. 결국, 어느이상 발전하기어렵다.
리눅스 커널 기반 설계
왜 리눅스인가? 리눅스커널과 같이 안정적인 가능을 제공하는 플랫폼을 사용하면 안정성과 신뢰성 확보와 더불어 강력한 기능을 안드로이드에서
구현할수있다.오픈소스를 사요하기때문에 뛰어난 개인 사용자나 기업들의 능력으로 안드로이드 오픈소스 플랫폼을 진보시킬수있다.
오픈소스라는 것은 급격한 변화가 일어나느 모바일 세계에서 특히 중요하다.
모바일 시장의 급격한 변화는 일반 PC 시장마저 멈춰 있는 것처럼 느려 보이게 만들 정도이다. 물론 리눅스 커널은 핵심 플랫폼으로서의
검증이 끝났다. 휴대폰에서는 음성통화가 핵심기능이기 때문에 성능보다는 신뢰성이 더욱 중요하다.
휴대폰을 사용하는 사용자 대부분은 보통 음성 통화의 품질과 신뢰성을 가장 중요하게 생각한다.
하지만 편리하고 첨단 기능이 포함된 폰을 구입하고 싶어하는 것 또한 사실이다. 이러한 모든 조건을 기능적으로 동시에 만족하게 할수있는 것이
바로 리눅스이다.휴대폰의 빠른 교체에 대한 대응 역시 리눅스 기반의 안드로이드 플랫폼 스택이 여러가지 이점을 갖고 있다.
기본적으로 하드웨어 추상화 계층 을 제공함으로써 하드웨어가 변경되었다 할지라도 상위계층의 내용은 바뀌자 않아도 된다.
물론 카메라와 같은 물리적인 하드웨가 존재하지 않는 핸드셋에서 카메라를 사용하는 애플리케이션을 실행했을때 적적한 이벤트를 띄워서
에러 메시지를 보여주는 예외처리와 같은 사용자 배려 부분도 필요하다. 새로운 액세서리들이 등장하게 되면 리눅스 차원에서 드라이버를
작성해서 바로 해당 하드웨어를 지원할 안드로이드 핵심 애플리케이션 뿐 아니라 일반 사용자 애플리케이션 모두 자바로 작성되고 컴파일 되어
바이트코드로 변환된다. 바이트코드는 가상 머신으로 알려진 인터프리터에 의해 런타임에 실행된다.
달빅(Dalvik)가상머신 기반 실행환경
달빅 가상머신은 효율성과 리치 프로그래밍 환경의 필요성, 지적 재산권 관련 제약문제 해결의 필요성을 다룬 대포적 사례이며, 혁신적인 결과라고
할수있다. 안드로이드의 자바 환경은 리치 애플리케이션 플랫폼을 제공함과 동시에 뛰어난 접근성을 보장한다. 또한, 모바일폰과 같이 메모리
사용에 제한이 있는 곳에서의 애플리케이션 성능은 당연 최고라고 할수있다. 하지만 현재의 이슈는 이것뿐만이 아니다.
안드로이는 J2ME 플랫폼이 아니다. 안드로이드가 좋다 나쁘다는 일단 제쳐놓고, 자바 가상머신의 라이선를 Sun Microsystems 에서 갖고있다는
것이 문제다. 안드로이드의 최상위 레벨의 코드 환경은 자바이다. 애플리케이션들도 자바 바이트코드로 컴파일된 후 약간 비슷하다고도 할수있는
Dex File 형태로 변환되는 자바 코드로 작성된다. 이파일들은 논리적으로 자바의 바이트코드와 같지만 안드로이드 의 라이선스 정책으로부터
자유롭고 구글, 그리고 다른 오픈소스 커뮤니티에서 자유롭게 수정할수잇는 가상 머신에서 실행될수 있다.
아직은 안드로이드의 자바 사용과 관련하여 오픈 핸드셋 얼라이언스와 Sun사의 관련 다툼에 대해 서 이야기하는 것은 너무 앞서가는 것이다.
모바일 애플리케이션 개발자의 관점으로 봤을때 안드로이드는 자바 기반의 개발 환경이다. 하지만 실제 실행이 되는 런타임 환경은
자바의 가상머신과는 차이가 있다. 이것이 안드로이드와 순수 자바 환경 그리고 라이브로리들 문제에 대해서 구분 지어 설명하는 이유다.
중요한것은 달빅이 프로세스, 메모리, 파일시스템 등을 관리하는 리눅스 커널 위에서 안드로이드 애플리케이션을 적절히 실행되도록
만들어주는 가상머신이라는 것이다.
'앱개발 > 안드로이드' 카테고리의 다른 글
안드로이드 활성화 (0) | 2013.11.30 |
---|---|
안드로이드 애플리케이션 개발 시작 (1) | 2013.11.29 |
안드로이드 스택(Stack) (0) | 2013.11.29 |
안드로이드란 무엇인가? (0) | 2013.11.29 |
안드로이드 플랫폼 (0) | 2013.11.29 |
댓글