본 내용은 드림코딩 by 엘리님의 모바일 앱 개발의 현재와 미래 강의를 토대로 작성하였습니다.
1. Native
- 애뮬레이션이나 호환 모드의 사용 등 외적인 지원 없이, 특정 하드웨어나 OS에서 그대로 실행되는 것
- 각각의 다른 운영체제에서 각각 다른 프로그래밍 언어로 다른 개발툴을 이용해서 애플리케이션을 만들어 나감
- 각각의 운영체제에서 추구하는 룩앤필을 잘 살릴 수 있음
- 플랫폼에 최적화된 성능 뿐만 아니라, 문자, 메시지, 현재 위치, 음성 인식, 지문 인식, AR, VR 등등 운영체제에서 제공하는 다양한 API들을 사용
- 개발 소요가 큼
- 유지, 보수, 관리의 어려움
- 일의 중복성
Android
- 안드로이드 스튜디오 개발환경에서 안드로이드 운영체제가 제공하는 API를 활용하여 안드로이드 애플리케이션 개발
- JAVA, Kotlin
iOS
- Mac OS에서 Xcode를 사용하여 Mac OS가 제공하는 API를 활용하여 iOS 애플리케이션 개발
- Objective C, Swift
2. Hybird App
- 웹 기술을 그대로 사용하거나 최대한 많이 활용할 수 있는 하이브리드 앱
- 안드로이드, iOS 각각에서 지원하는 WebView 활용
- UI 컴포넌트
- 웹 브라우저에서 페이지를 표기하는 부분만 나타냄
- 지정한 URL만 표시할 수 있음
- 애플리케이션과 묶어서 배포
- 네이티브 API 사용 불가능
- CORDOVA
- 웹뷰를 한 단계 감싸면서 네이티브와 다리 역할을 해 주면서 네이티브 API 사용할 수 있도록 도와줌
- 네이티브적 지식이 필요
- WebView의 한계
- CORDOVA와 함께 배포해야하므로 애플리케이션의 사이즈가 커질 수 있음
- 성능상 문제
3. 크로스 플랫폼 앱
- 하나의 프로그래밍 언어로 두 운영체제에서 동작하는 앱을 만드는 것을 말함
- 중복적인 일을 피하기 위함
- 네이티브의 룩앤필, 성능을 살릴 수 없음
- 사용할 수 없는 네이티브 API가 있음
- 애플리케이션이 지나치게 크로스플랫폼에 의존
- 버그 해결의 어려움
- 에어비앤비, 페이스북의 예시
React Native
- JavaScript
- 모바일 API를 이용해서 모바일 UI를 업데이트
- JavaScript -> Engine -> Native APIs
- 배포시에 JavaScript 코드와 이를 모바일 API로 번역할 수 있는 엔진과 함께 배포
- 실시간으로 JavaScript 코드를 모바일 API를 이용해서 업데이트할 수 있음
Xamarin
- C#
Flutter
- Dart
- Android, iOS, 리눅스, 윈도우
- canvus라는 UI 컴포넌트를 이용해서 자체적으로 자신의 코드를 이해하여 화면에 그려 줌
- 번역의 과정이 필요 없음
Reference
'programming study > Etc' 카테고리의 다른 글
기초 JS, CS 상식 - 정규표현식 (0) | 2022.11.21 |
---|---|
정규표현식(4) (0) | 2021.11.20 |
정규표현식(3) (0) | 2021.11.19 |
정규표현식(2) (0) | 2021.11.18 |
정규표현식(1) (0) | 2021.11.17 |