본문 바로가기

무언가 만들기 위한 지식/Java/Android

Three Kinds of Android Application(개발방식에 따른 3가지 어플리케이션 종류)


안드로이드는 크게 3가지의 어플리케이션 개발방식으로 나뉜다고 한다.
(Google I/O에서 구글 플랫폼 총괄 Dan Morrill의 발표에 따르면...)

바로 실제 세미나를 바로 보자.



 1. Managed Code 방식

Dalvik VM에서 동작하는 Java기반으로 프로그램을 작성하는 방식이다.
달빅은 Memory-protected, garbage-collected, lifecycle-managed의 특징을 갖는데, 이 기반위에 제공되는 Framework나 Library를 활용하여 달빅 위에서 활용하는 방식이다.

이방식은 개발의 편의성과 실제 가장 많이 사용되는 개발방식이기는 하지만,
자바언어의 특성상, 속도저하와 Garbage Collection의 예측불능의 문제가 있다.
(언제 메모리를 반납할지 모르기 때문에 문제가 됨)


 2. Ajax(Web) Apps

웹서버에 JavaScript와 Ajax등으로 웹페이지를 작성하고 안드로이드의 브라우저를 통해서 수행하는 방식이다.
Webkit 코어와 SquirrelFish JavaScript 엔진을 사용하고 있으며 Ajax로도 복잡한 어플리케이션이 가능하다.

웹어플리케이션의 특성상 항상 브라우저를 통해 수행되어야 하므로 백그라운드 서비스가 블가능하고 시스템이나 프레임워크 내의 접근이 불가능 하다. 또한 UI를 구성하는 랜더링 속도가 브라우저를 거치기 때문에 느린편이다.
그러므로 UI의 속도가 중요하지 않고 범용적이고 간단하게 만들 수 있는 어플리케이션 개발에 적합하다.


 3. Native Code

이 방식은 달빅 애플리케이션으로 실행은 하고 달빅 내에서 C/C++으로 구성된 동적 라이브러리를 로드하여 JNI(Java Native Interface)형태로 함수를 호출하는 방식이다.
이번에 Donut Branch에는 NDK가 포함되어 있어 C/C++코드를 손쉽게 .so형태의 라이브러리로 생성할수 있게 되었다.

이 방식의 가장 큰 장점은 속도 개선이다. 반응속도가 중요하거나 대용량의 데이터를 다루는 경우, 하드웨어를 다룰 경우에는 Native 언어로 구현해야한다.
이러한 점은 성능을 향상할 수 있지만, 달빅내에서 돌아가는 것이 아니기 때문에 메모리 제어등 부분에서 프로그램작성시 신경을 써주어야 한다.



참고 : Embedded World 2009.08 & http://code.google.com/p/hdict