본문 바로가기
flutter

플러터 - 크로스 플랫폼 앱 개발과 플러터

by 들풀민들레 2023. 3. 13.

 

본 글은 [Do it! 깡샘의 플러터&다트 프로그래밍] 의 내용을 발췌한 것입니다.

 

 

책의 모든 내용을 저자 직강으로 진행한 강의는 ssamz.com 에서 들으실 수 있습니다.

 

모바일 앱을 개발하는 기술은 여러 가지가 있습니다. 안드로이드와 iOS 앱은 각 플랫폼에서 제공하는 기술을 이용해 개발하지만 이 책에서 살펴보고자 하는 플러터Flutter는 크로스 플랫폼에서 동작하는 앱을 만드는 기술입니다. 즉, 안드로이드와 iOS는 물론이고 윈도우, macOS, 리눅스, 웹, 임베디드 등 여러 플랫폼에서 동작하는 앱을 같은 코드로 개발할 수 있습니다.
먼저 모바일 앱을 개발하는 기술을 살펴보고 플러터만의 특징과 이로운 점 등을 알아보겠습니다.

 

네이티브 앱 개발


모바일 앱 개발 분야에서 네이티브native라고 하면 플랫폼에 종속된 방법을 의미하는 용어로 통용됩니다. 모바일 운영체체인 안드로이드와 iOS처럼 각 플랫폼에 종속된 코드를 네이티브 코드라고 부릅니다. 이런 네이티브 코드를 사용하면 각 플랫폼에서 제공하는 기법으로 최적화된 앱을 개발할 수 있지만, 다른 플랫폼에서는 서비스할 수 없다는 단점이 있습니다.
안드로이드 앱은 안드로이드 런타임(Android runtime, ART)에서 동작하므로 앱을 개발할 때 안드로이드 런타임에서 제공하는 라이브러리를 이용하고 언어는 자바Java나 코틀린Kotlin을 사용합니다. 반면에 iOS 앱은 코코아 터치Cocoa Touch 환경에서 실행되므로 코코아 터치에서 제공하는 라이브러리를 이용하며 개발 언어는 오브젝티브– CObjective-C나 스위프트Swift를 사용합니다.

 

 

이처럼 앱을 개발하고 실행하는 환경은 플랫폼에 따라 다릅니다. 따라서 네이티브 방식으로 앱을 개발하면 해당 플랫폼에서만 동작하는 앱이 됩니다. 결국 안드로이드와 iOS 모두 서비스하려면 서로 다른 기술로 각 플랫폼에 맞는 앱을 개발해야 합니다. 개발자에게는 달갑지 않은 상황이죠. 이 때문에 크로스 플랫폼 앱 개발 기술이 나오게 되었습니다.

 

크로스 플랫폼 앱 개발


크로스 플랫폼 앱 개발은 한 가지 기술로 여러 플랫폼에서 동작하는 앱을 개발한다는 의미입니다. 그동안 많은 크로스 플랫폼 앱 개발 기술이 나왔지만 지금 실제 사용하는 기술은 3가지라고 할 수 있습니다. 아이오닉과 리액트 네이티브 그리고 플러터입니다.


아이오닉
웹 앱WebApp은 가장 먼저 나온 크로스 플랫폼 앱 개발 기술입니다. 웹 뷰WebView, 하이브리드 앱Hybrid App 방식이라고도 하는 웹 앱은 웹을 개발하는 기술을 그대로 이용해 크로스 플랫폼 앱을 개발하는 방식입니다. 아이오닉Ionic은 이러한 웹 앱 방식으로 개발하는 크로스 플랫폼 프레임워크입니다.

 

 

아이오닉으로 앱을 개발하면 HTML 파일이 만들어집니다. HTML 파일을 화면에 출력하려면 웹 브라우저가 있어야 하는데, 앱에 내장된 웹 브라우저(웹 뷰)가 이 역할을 수행합니다. 결국 앱이 실행될 때 내부에서 HTML 파일이 실행되는 구조입니다. 안드로이드와 iOS 앱은 다르지만 각 앱에서 실행하는 HTML 파일은 공통으로 작성할 수 있습니다.

 

리액트 네이티브
리액트 네이티브React Native는 페이스북에서 만든 자바스크립트 프레임워크인 React를 기반으로 하는 모바일 크로스 플랫폼 프레임워크입니다. 리액트 네이티브의 특징은 모바일 앱을 자바스크립트로 개발한다는 점입니다.

 

앱을 실행할 때 각 플랫폼의 자바스크립트 런타임이 자바스크립트 코드를 실행해 플랫폼별 네이티브 코드와 연동하는 구조입니다. 개발자가 네이티브 코드를 직접 작성하지는 않지만 화면과 이벤트 처리 등은 플랫폼에 종속된 네이티브 코드로 처리됩니다. 개발자는 자바스크립트 코드만 작성하면 되므로 안드로이드와 iOS 앱을 똑같이 작성할 수 있습니다.


플러터
플러터는 구글에서 만들어 2017년에 처음 발표했으며 현재 가장 인기 있는 크로스 플랫폼 개발 프레임워크로 자리매김하고 있습니다. 처음에는 푸크시아Fuchsia라는 구글의 운영체제에서 동작하는 애플리케이션을 개발하려고 만들었지만, 다른 운영체제와 호환성을 고려하다 보니 크로스 플랫폼 개발 프레임워크가 되었습니다.
플러터는 모바일 분야에서 발전했지만 지금은 모바일뿐만 아니라 웹과 윈도우, 리눅스, macOS용 애플리케이션도 플러터로 개발할 수 있습니다.

 

 

 

 

책의 모든 내용을 저자 직강으로 진행한 강의는 ssamz.com 에서 들으실 수 있습니다.