운영체제란(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을 권장하는 이유로는 언어의 간결성, 구글과 오라클의 자바 소송 등 여러가지 이유가 있습니다. 국내 개발자들에게는 Android 앱의 개발 툴인 Android Studio와 kotlin을 개발한 개발사가 Jetbrain이라는 점이 크게 작용한 것 같습니다. 익숙했던 IDE를 변경하지 않아도 되며, Jetbraind의 제품을 사용하던 Java 개발자들은 어렵지 않게 코틀린을 학습할 수 있습니다.
하이브리드 앱은 네이티브 앱과 웹을 합친 방식입니다. 네이티브 앱이라는 형태는 갖추고 있지만 그 안의 내용물은 웹사이트라고 생각하면 됩니다. 이 또한 네이티브 앱과 마찬가지로 특정 플랫폼만을 타겟으로 할 수 있습니다.
크로스 플랫폼 앱은 단일 코드로 다양한 플랫폼들에서 사용 가능한 어플리케이션을 만들 수 있습니다. Flutter, React Native, Xamarin 등을 이용해서 만들 수 있습니다.
개발툴 | 네이티브 | 하이브리드 | 크로스플랫폼 |
---|---|---|---|
개발비용 | 하 | 중 | 상 |
플랫폼 확장성 | 중 | 중 | 상 |
성능 | 상 | 하 | 중 |
기기의 사용성 | 상 | 하 | 중 |
위의 그림에서 가장 큰 차이는 OEM Widgets과 Bridge입니다. 네이티브 앱과 리액트네이티브 앱에서는 OEM Widgets을 이용해서 화면을 그리고 있습니다. Widget이란 화면을 그리는 하나의 단위이며 각기 플랫폼에는 사용할 수 있는 Widget들이 정의돼 있습니다. 그런데 Flutter는 각 플랫폼의 widgets들을 거치지 않습니다. Flutter가 사용하는 skia엔진은 각 스크린의 픽셀들을 완전히 제어할 수 있기 때문에 픽셀 단위로 렌더링을 실행해버립니다. 이러한 특징 때문에 flutter가 react-navie보다 뛰어난 성능을 보일 수 있습니다.