본문 바로가기

안드로이드

모바일 앱 종류

네이티브 앱

네이티브 앱은 모바일 기기에 최적화되어 있는 모바일 앱으로, 안드로이드와 iOS와 같은 각 플랫폼에 특정 프로그래밍 언어를 사용하여 만들어진 앱을 말합니다.

 

안드로이드 앱의 경우 코틀린(Kotlin)과 자바(Java) 언어를 활용하여 Google에서 제공하는 안드로이드 SDK를 이용하여 개발하고, iOS의 경우 스위프트(Swift)와 Objective-C 언어로 애플에서 제공하는 iOS SDK를 이용하여 네이티브 앱 개발이 가능합니다.

 

 

안드로이드 플랫폼 아키텍처

과거에는 자바가상머신(JVM) 위에서 앱이 동작 했지만 현재는 이를 대신하여 안드로이드 런타임(ART)을 사용합니다. Android 버전 5.0(API 레벨 21) 이상을 실행하는 기기의 경우, 각 앱이 자체 프로세스 내에서 자체 안드로이드 런타임(ART) 인스턴스로 실행됩니다.

 

ART의 주요 기능

  • AOT(Ahead-Of-Time) 및 JIT(Just-In-Time) 컴파일
  • 최적화된 가비지 컬렉션(GC)
  • Android 9(API 레벨 28) 이상에서 앱 패키지의 DEX(Dalvik Executable) 형식 파일이 더욱 간소한 기계 코드로 변환됨
  • 전용 샘플링 프로파일러, 상세 진단 예외 및 크래시 보고, watchpoint를 설정하여 특정 필드를 모니터링할 수 있는 기능을 비롯한 향상된 디버깅 지원 기능

앱 설치, 실행 과정

  • 앱을 설치하면 설치파일의 일부가 리눅스 커널에서 실행 할수 있는 파일 형태로 컴파일 됩니다. 이런 구조를 AOT 라고 합니다.
  • 앱을 실행하면 호출되는 파일 중에서 컴파일 되지 않았던 파일이 컴파일 됩니다. 이 구조를 JIT 라고 합니다.
  • 안드로이드는 AOT와 JIT라는 2개의 컴파일 형태를 같이 사용하여 효율성을 높이고 있습니다.

 

하이브리드 앱

기본 기능은 HTML 등의 웹 표준 기술을 기반으로 구현하고, 패키징은 아이폰, 안드로이드 등 모바일 운영 체제(OS)별로 구현하는 앱(App)

 

하이브리드 앱 모바일 웹과 기존 네이티브 앱의 장점을 모두 가지고 있습니다. 하이브리드 앱을 만들려면 먼저 HTML, 스타일 시트, 자바스크립트 등 웹 표준 기술을 사용하여 웹 페이지를 구현합니다. 그 다음 안드로이드나 아이폰 개발 환경에서 웹 브라우저로 해당 웹 페이지들을 로딩하여 OS 환경에 맞게 빌드하여 만듭니다.
즉, 웹 앱을 네이티브 앱처럼 변환해서 사용할 수 있게 하는 기술로 웹 개발 기술을 모든 OS에서 사용할 수 있으며 같은 코드를 모바일 운영 체제별로 다르게 패키징할 수 있습니다. 네이티브 앱처럼 앱 스토어와 플레이 스토어에 배포할 수 있고 업데이트가 생기면 다시 내려받아야 합니다.

 

 

웹 앱 

웹 표준 기술을 기반으로 개발하여 웹서버에 저장해 두고 웹브라우저가 설치된 단말에서 다운로드하여 실행하는 앱.
웹 표준 기술을 활용하여 웹 브라우저만 설치되어 있으면 특정 OS에 상관없이 동작합니다.

 

단말 플랫폼 개발 언어에 따라 별도로 애플리케이션을 개발하는 네이티브 앱과 달리 웹 앱 웹 브라우저에서 실행되어 한 번 개발을 하면 HTML5 표준 기반 웹 브라우저가 탑재된 다양한 단말 플랫폼에서 실행할 수 있다. 하나의 소스가 여러 플랫폼에서 실행되기 때문에 개발 기간이 짧고 개발비도 적게 듭니다. 개발자는 실시간으로 앱을 유지․보수할 수 있습니다.

반면 웹 앱은 모든 리소스를 매번 웹 서버에서 다운로드해야 하기에 네이티브 앱보다 실행 속도가 느리며 인터넷 연결이 되어 있어야 애플리케이션을 실행할 수 있습니다. 모바일 기기의 모든 기능을 사용할 수 없고 특히 푸시 알림 기능을 사용할 수 없습니다. 앱 마켓에 올려 배포하거나 판매할 수 없습니다.

 

크로스 플랫폼 앱

크로스 플랫폼 앱은 한 가지의 개발 언어와 프레임워크로 안드로이드, iOS 네이티브 앱을 만드는 개발 방식입니다.

 

네이티브 코드가 아닌 다른 개발 언어로 코드를 작성 후 각각의 OS가 이해할 수 있는 코드로 컴파일 한 후, 각각의 OS의 엔진으로 실행하는 방식입니다. 대표적으로는 플러터(Flutteri), 리액트 네이티브(React Native), 자마린(Xamarin)이 있습니다.

 

 

IT 서비스 기업에서 다룬 크로스 플랫폼 이야기

지식iN 앱을 Flutter로 개발하는 이유: https://d2.naver.com/helloworld/3384599

 

 

참조

"인프런 네이티브 앱 vs 크로스 플랫폼 앱"

https://www.inflearn.com/pages/infmation-49-20220607

 

"정보통신용어사전 하이브리드 앱 설명"

http://terms.tta.or.kr/mobile/dictionaryView.do?subject=%ED%95%98%EC%9D%B4%EB%B8%8C%EB%A6%AC%EB%93%9C+%EC%95%B1 

 

 

TTA정보통신용어사전_모바일

한국정보통신기술협회(TTA)는 정보통신 기술 발전과 타 분야와의 기술 융합에 따라 무수히 생성되는 정보통신용어를 해설하고 표준화하여, 전문가뿐만 아니라 비전문가들도 올바르게 활용할 수

terms.tta.or.kr

 

"안드로이드 플랫폼 아키텍처 공식문서"

https://developer.android.com/guide/platform?hl=ko