앱에도 관심이 많아서 궁금한 단어들을 찾아보았다.
안드로이드 앱의 경우 코틀린(Kotlin)과 자바(Java) 언어를 활용하여 Google에서 제공하는 안드로이드 SDK*를 이용하여 개발하고, iOS의 경우 스위프트(Swift)와 Objective-C 언어로 애플에서 제공하는 iOS SDK를 이용하여 네이티브 앱 개발이 가능합니다.
각각의 os에 맞게 개발하는 앱을 네이티브앱이라고 함
네이티브 앱은 안드로이드와 iOS 각 모바일 OS 기반의 API로 개발하는 앱을 말합니다. 속도가 빠르고 안정적인 데다, 다양한 퍼포먼스를 구현할 수 있어 사용자 경험의 질을 높이는 데 유리하죠. 모바일 OS에서 제공하는 기능인 블루투스, 위치기반 서비스, 앱 결제 등에 자유롭게 접근이 가능하고, 디바이스 전체에 액세스 할 수 있어 주소록, 캘린더 등의 고유 정보도 활용할 수 있습니다.
그럼 네이티브 앱의 단점은 무엇일까요? 네이티브 앱은 안드로이드와 iOS의 호환이 불가능하여 앱을 각각 따로 제작해야 해서 개발 비용이나 시간이 2배로 소요됩니다. 유지 보수 또한 2배로 소요되죠. 또, 수정이나 업데이트가 있는 경우, 변경 후 각 앱 스토어의 심사를 통과해야 해서 늦게 반영될 수도 있습니다.
크로스 플랫폼 앱은 한 가지의 개발 언어와 프레임워크로 안드로이드, iOS 네이티브 앱을 만드는 개발 방식입니다. 네이티브 코드가 아닌 다른 개발 언어로 코드를 작성 후 각각의 OS가 이해할 수 있는 코드로 컴파일 한 후, 각각의 OS의 엔진으로 실행하는 방식이에요. 대표적으로는 플러터(Flutter), 리액트 네이티브(React Native), 자마린(Xamarin)이 있습니다.
네이티브 앱으로 안드로이드와 iOS 앱을 개발하기 위해서는 각각의 스펙에 맞는 개발자 인력이 필요합니다. 비용과 시간 또한 2배로 소요되죠. 반면, 크로스 플랫폼 앱은 한 가지의 코드로 2가지 플랫폼 앱을 모두 개발할 수 있다는 점에서, 개발 시간과 비용을 줄일 수 있어요.
기존 네이티브 앱이 가지고 있는 동적인 요소 퍼포먼스를 100% 구현할 수 없는 단점이 있습니다. 일반적으로 네이티브 앱에 비해 성능이 떨어져 느린 경우도 있고, 라이브러리가 다양하지 않아 기능 구현이 어렵기도 해요. 뿐만 아니라, 안드로이드와 iOS OS에 새로운 기능이 추가되면 네이티브 앱은 즉시 사용 및 업데이트가 가능하지만, 크로스 플랫폼 앱은 사용에 있어 업데이트 지연이 발생할 수 있어요.
초기 앱 시장은 네이티브 앱 위주로 돌아갔지만 개발자 특성상 효율을 중시하기 때문에 결국에는 크로스플랫폼이 발전되어서 정착되어질 것 같다.