2 minute read

모바일 앱 종류

애플리케이션(Application)

특정 업무를 수행하기 위해 만든 프로그램, 스마트 기기에서 돌아가는 응용 프로그램

웹(Web)

기기에 상관없이 브라우저를 통해 이용.

  • 반응형 웹: 브라우저 크기에 맞게 자동으로 페이지 크기가 변경
  • 적응형 웹: PC, Phone, 태블릿 등 화면 사이즈 별로 각각 페이지 개발
  • 모바일 웹: 모바일 기기의 화면 크기에 맞게 디자인된 웹

웹앱(Web Application): 모바일 앱의 모습을 한 웹사이트

모바일 웹보다 더 앱(native)처럼 디자인 된 웹. SPA를 사용.

  • 장점

    • 플랫폼에 상관없이 한 종류의 코드로 개발
    • 수정된 소스 코드를 서버에 반영하면 즉시 적용 가능
    • 배포 검수 불필요(?)
  • 단점

    • 기기를 제어할 수 없어 카메라, 저장소, GPS 등을 사용 불가
    • 화면에 보이는 모든 영역을 서버에서 불러와 네이티브 앱보다 속도가 느림

네이티브 앱(Native): 플랫폼별 애플리케이션 맞춤 제작

애뮬레이션이나 호환 모드의 사용 등 외적인 지원 없이, 특정 하드웨어나 OS에서 그대로 실행되는 것.
각각의 다른 운영체제에서 각각 다른 프로그래밍 언어로 다른 개발툴을 이용해서 어플리케이션을 만드는 것.
Android: java나 kotlin언어를 사용해 android studio에서 개발
IOS: objectC나 swift언어를 사용해 xcode에서 개발

  • 장점

    • 폰이 갖고 있는 파워만큼 파워를 낼 수 있음
    • 각각의 운영체제에서 추구하는 룩앤필을 잘 살릴 수 있음
    • 플랫폼에 최적화된 성능 뿐만 아니라 문자, 메시지, 현재위치, 음성인식, 지문 인식 등등 운영체제에서 제공하는 다양한 API들을 사용할 수 있음
  • 단점

    • 2개의 플랫폼 언어를 배워야함

크로스 플랫폼 앱(Cross Platform): 같은 소스 코드로 android와 ios를 한 번에

네이티브 코드가 아닌 다른 프로그래밍 언어로 코딩을 한 후, 나중에 ios/android가 모두 이해할 수 있는 코드로 변환해 두 운영체제에서 동작하는 앱을 만들는 것

예를 들어 리액트 네이티브, flutter, xamrain 등이 있음.
리액트 네이티브는 리액트 코드로 작성되고 자바스크립트 코드로 컴파일 됩니다. 그리고 ios/android가 이를 각자의 자바스크립트 엔진으로 실행시키는 것 flutter dart를 사용하고 c,c++로 컴파일됨.
xamrain은 C#을 사용하고 intermediate language(IL)로 컴파일.

  • 장점

    • 하나의 코드로 2개의 플랫폼에서 모두 사용 가능
    • 다양한 배경(백엔드, 자바 개발자 등)의 개발자를 끌어모아 라이브러리, 튜토리얼, 커뮤니티 등 관련 사이트가 발전
  • 단점

    • 네이티브가 아니기 때문에 퍼포먼스 이슈가 발생할 수 있음
    • 네이티브의 룩앤필과 성능 잘 살릴 수 없음
    • 사용이 불가한 네이티브 api가 있음
    • 네이티브에서 업데이트가 기능을 크로스 플랫폼에서 업데이트가 될 때까지 기다려야함
    • 크로스 플랫폼에만 의존하려는 문제가 생길 수 있음
    • 디버깅이 까다로움

하이브리드 앱(Hybrid): 네이티브 앱의 장점 + 웹 앱의 장점

웹 기술을 그대로 활용하거나 또는 최대한 많이 활용할 수 있는 앱으로 웹 뷰를 사용
웹 뷰는 웹 브라우저에서 이 페이지를 표기하는 부분만 나타내는 심플한 UI 컴포넌트, 네비게이션이 없는 브라우저의 윈도우를 말함
네이티브 api 이용 불가했지만 apache cordova(전 phonegap)라는 프레임워크를 이용해 기존의 웹뷰를 감싸고, 네이티브와 다리 역할을 해 api 사용할 수 있게됨

  • 장점

    • 네이티브 앱에 대한 지식이 덜 필요함
  • 단점

    • UI를 직접 하나씩 만들어야함
    • 폰의 강력한 기능을 사용할 수 없음(예를 들어 한드코어한 비디오 프로세싱)
    • 네이티브 룩앤필 따라가기 힘듬
    • 배포시 cordova 또한 묶이기 때문에 사이즈가 커지고, 다리 역할 때문에 메모리 부분이나 성능에서 문제
    • 웹뷰에서 동작하기 때문에 api의 사용제한이 있음
참고 사이트

네이티브, 크로스플랫폼, 하이브리드-노마드코더
네이티브, 하이브리드, 클로스 플랫폼-드림코딩
모바일웹, 웹 앱, 네이티브앱, 하이브리드앱-착한 코딩
모바일 앱의 종류 네이티브, 웹앱, 크로스 플랫폼, 하이브리드-혼공블로그

Categories:

Updated: