운영체제란(Operating System)?
- 하드웨어를 관리 및 운영하는 시스템 소프트웨어를 의미합니다.
IOS의 원래 이름은 iPhone OS였습니다. 그러다가 IPad, Apple TV 등 다양한기기들에서도 iPhone OS를 사용하면서 IOS라는 명칭으로 변경되었습니다. 개발적인 관점에서 IOS는 Apple에서 개발하는 기기들에만 특화된 독점적인 운영체제이기 때문에 다양한 기기들을 고려하지 않는다는 측면에서 소프트웨어 개발 비용을 낮출 수 있다는 장점이 있습니다. 하지만 Apple의 기기들을 제외하고는 개발한 소프트웨어를 사용할 수 없다는 단점이 있습니다.
Android의 가장 큰 특징은 오픈소스 운영체제라는 것입니다. Android는 커널과 SDK(Software Development Kit), IDE(Integrated Development Environmen)까지 무료로 풀려있기 때문에 개발자들에게 다양한 도전의 기회를 제공합니다.
Window | Mac | |
---|---|---|
Android Studio | O | O |
Xcode | X | O |
비용 | X | O |
https://www.chosun.com/economy/int_economy/2022/01/12/3ETNDWYEFBCBNCIVSWGVGLWZCU/
APP의 개발 방식은 네이티브(Native), 하이브리드(Hybrid), 크로스 플랫폼(Cross Platform)로 나눌 수 있습니다.
앱 이란?
앱(App)은 어플리케이션(Application)의 약자입니다. 일반적으로 국내에서 앱이라 하면 스마트폰에서 사용할 수 있는 프로그램으로 이해하고 있습니다. 하지만 어플리케이션은 특정한 기능을 수행하도록 설계된 응용프로그램을 의미하지 스마트폰에서만 사용할 수 있는 소프트웨어를 말하는 것이 아닙니다.
네이티브 앱은 Android Studio와 Xcode를 이용해서 특정 플랫폼만을 타겟으로 개발한 앱을 말합니다. 특정 플랫폼만을 타겟으로 한다는 것은 하나의 코드로 개발한 앱을 특정 플랫폼에서만 출시해서 사용할 수 있다는 것을 의미합니다. Android Studio에서 개발한 Android 앱은 Google의 Play Store에서만 사용 가능하며, Xcode에서 개발한 IOS 앱은 Apple의 App Store에서만 사용할 수 있습니다. 개발 언어로는 Android는 Java와 Kotlin, IOS는 Object-C와 Swift를 사용할 수 있습니다. 현재 추세로는 IOS에서는 Object-C는 거의 사용하지 않고, 대부분 Swift를 사용합니다. Android에서는 아직까지는 Java가 더 많이 사용됩니다. 하지만 Kotlin이 Java와 완벽 호환 가능한 언어이고, Google에서 Kotlin을 사용을 권장하고 있어서 kotlin 사용이 증가하고 있습니다. 구글이 kotlin을 권장하는 이유로는 언어의 간결성, 구글과 오라클의 자바 소송 등 여러가지 이유가 있습니다.
하이브리드 앱은 네이티브 앱과 웹을 합친 방식입니다. 네이티브 앱이라는 형태는 갖추고 있지만 그 안의 내용물은 웹사이트라고 생각하면 됩니다. 단일 코드이며 즉각적으로 변경이 가능하다는 장점이 있습니다. 하지만 성능 측면에서는 다른 방식에 비해 부족한 모습을 보입니다. 또한 카메라, 위치추적 같은 기기에 내장된 기능들을 사용하기 위해서는 네이티브 코드로 개발을 해야합니다.
크로스 플랫폼 앱은 단일 코드로 다양한 플랫폼들에서 사용 가능한 어플리케이션을 만들 수 있습니다. Flutter, React-Native, Xamarin 등을 이용해서 만들 수 있습니다. Flutter는 구글, React-Native는 Facebook/Meta에서 개발했습니다. 크로스 플랫폼 또한 네이티브 코드로 개발을 진행해야 하는 경우들이 있습니다. Flutter와 RN의 코드로 구현하기 어렵거나 기능이 불안정한 경우들이 있기 때문입니다.
개발툴 | 네이티브 | 하이브리드 | 크로스플랫폼 |
---|---|---|---|
개발비용 | 상 | 하 | 중 |
성능 | 상 | 하 | 중 |
기기의 사용성 | 상 | 하 | 중 |
위의 그림에서 가장 큰 차이는 OEM Widgets과 Bridge입니다. 네이티브 앱과 리액트네이티브 앱에서는 OEM Widgets을 이용해서 화면을 그리고 있습니다. Widget이란 화면을 그리는 하나의 단위이며 각기 플랫폼에는 사용할 수 있는 Widget들이 정의돼 있습니다. 그런데 Flutter는 각 플랫폼의 widget들을 거치지 않습니다. Flutter가 사용하는 skia엔진은 각 스크린의 픽셀들을 완전히 제어할 수 있기 때문에 픽셀 단위로 렌더링을 할 수 있기 때문입니다. 이러한 특징 때문에 flutter가 하이브리드 앱이나 React-Navie보다 뛰어난 성능을 보일 수 있습니다.