본문 바로가기

Flutter

Flutter는 무엇인가?

반응형

한마디로 말하자면 Flutter는 Cross-Platform Framework입니다.

Google에서 만든 것으로, 하나의 코드 Base로 Android/ ios/ Desktop App 까지 개발할 수 있습니다.

플러터뿐만 아니라 기존 크로스 플랙폼 프레임워크를 향한 도전들이 있습니다. 간단하게 말해서는 바로 브릿지를 사용하는 방식인데요.

초기 크로스플랫폼 모델인 PhoneGap, Apache Cordova, Ionic 등은 JavaScript 와 WebView 기반으로 만들어져 네이티브와 소통하기 위해 브릿지를 사용했습니다. 마찬가지로 엄청난 인기를 누리고 있는 리액티브 패턴을 이용한 ReactJS 도 네이티브 영역의 OEM 위젯과 소통하기 위해 결국 브릿지를 이용하고 있죠. 그래서 구글에서 나온게 Flutter이라고 할 수 있습니다.

Flutter는 Dart라는 컴파일 프로그래밍 언어를 이용해 브릿지로 생기는 성능 문제를 피하고 있다고 합니다. 근데 사실 Dart 언어는 2018년 codementor에서 선정한 배우기 어려운 최악의 프로그래밍 언어 순위 1위를 차지했습니다. 이유를 찾아보면 모바일 애플리케이션과 IoT 디바이스라는 사용처가 정해져 있긴 하지만, 채택하는 사람은 없어 커뮤니케이션 참여가 적다고 해서 그렇다고 하네요. 그러나 2019 년에서는 순위가 훨씬 낮아졌고 구글이 Flutter을 엄청 밀고 있기 때문에 순위는 점차 변할 수 있을 것이라고 생각해요.

그래서 왜 구글은 어려운 Dart를 사용했을 까?

1.Dart는 JIT를 지원한다

JIT 뭔가 싶은가요? Just-In-Time Compile을 의미합니다. 프로그램 실행 전 처음 한번 컴파일하는 대신, 프로그램을 실행하는 시점에 필요한 부분을 즉석으로 컴파일하는 방식을 의미합니다. 따라서 플러터의 인기 기능인 Hot Reload를 가능하게 합니다. 개발 중에 1초 안에 코드를 다시 로드하고 계속 실행할 수 있다는 큰 장점을 제공합니다.

아래 Hot Reload 기능 이미지를 첨부한다.
(출처 Flutter 공식 페이지, https://flutter.dev/docs/development/tools/hot-reload)

Image

 

2. Dart는 AOT도 지원한다.
AOT는 Ahead-of-time 컴파일러를 의미합니다. 런타임 이전에 컴파일을 실행시키는 거죠. 아니 앞에서 JIT를 지원한다는 데 어떻게 AOT를 하는가 싶죠? 개발 중에는 JIT 컴파일러를 이용해서 빠른 개발을 하고 출시할 때는 AOT로 컴파일합니다. 따라서 JIT의 단점인 실행 속도가 느려지는 것을 보완할 수 있죠.

 

3. OOP 언어이다. (객체 지향)

 

4. 단일 스레드

일반적으로 Java, Kotlin, Object-C 등등 여러 개 동시 실행 스레드를 지원하는 프로그래밍 언어는 선점 기법을 사용해 스레드를 전환합니다. 이렇게 되면 선점하기 위해 경쟁조건이 발생하고 운영체제 시간에 배웠던 교착상태, 기아상태를 유발할 수 있는데요. Dart는 스레드 간 메모리 공유를 하지 않고 채널을 통해 메시지를 전달하여 통신합니다.

5. GC

Lock 없이 객체 할당 가비지 수집이 가능합니다. generation garbage collection and allocation scheme을 사용하기 때문이라고 하네요.

대표적으로 앞서 얘기한 5가지 이유로 Dart를 이용한다고 해요.

이어서 플러터의 장점에 대해서 마저 이야기해보면 Flutter는 기존에 존재하는 Android/ iOS 위젯을 사용하지 않고 자체 Skia 엔진을 이용해 UI를 그린다고 해요. 따라서 Material 위젯과 Cupertino 위젯을 제공하여 안드로이드에서는 아이폰 디자인의 앱을 손쉽게 만들 수 있고, 아이폰에서는 안드로이드 디자인 앱을 손쉽게 만들 수 있답니다.

 

참고자료

더보기

https://medium.com/@dan_kim/%EB%B2%88%EC%97%AD-flutter%EB%8A%94-%EC%99%9C-%ED%98%81%EB%AA%85%EC%A0%81%EC%9D%B8%EA%B0%80-967c1dfcc5a9

 

[번역] Flutter는 왜 혁명적인가?

이 글은 What’s Revolutionary about Flutter를 번역한 글입니다. 조금 더 쉽게 읽히는 글을 위해 약간의 의역이 섞여 있습니다.

medium.com

https://medium.com/@dan_kim/%EB%B2%88%EC%97%AD-flutter%EB%8A%94-%EC%99%9C-%ED%98%81%EB%AA%85%EC%A0%81%EC%9D%B8%EA%B0%80-967c1dfcc5a9

 

[번역] Flutter는 왜 혁명적인가?

이 글은 What’s Revolutionary about Flutter를 번역한 글입니다. 조금 더 쉽게 읽히는 글을 위해 약간의 의역이 섞여 있습니다.

medium.com

https://beomseok95.tistory.com/315

 

Flutter(플러터)가 Dart(다트)언어를 사용하는 이유

Flutter(플러터)가 Dart(다트)언어를 사용하는 이유 오랜만의 포스팅으로 돌아왔습니다! 이 글에서는 Flutter가 Dart언어를 어째서 사용하는지 이유에 대하여 알아보도록 하겠습니다. Flutter(플러터)와 Dart(다트..

beomseok95.tistory.com

http://www.itworld.co.kr/news/108761

 

일부러 배울 필요는 없는 프로그래밍 언어 5가지

해커랭크(HackerRank)의 최근 조사에 따르면, 고(Go), 파이썬, 스칼라, 코틀린, 루비는 프로그래머들이 다음에 배우고 싶은 개발 언어 톱 5에 올랐다. 그렇다면, 개발자들이 배우지 말아야 할 개발언어는 무엇일까?코딩 교육 및 마켓플레이스 플랫폼인 코드멘토(CodeMentor)는 최근 개발자들이 시간을 들여 배울 가치가 없다고 주장하는 개발언어의 순위를 공개했다. 코드멘토의 조사는 커뮤니티의 참여, 구직 시장, 해당 언어를 사용하

www.itworld.co.kr

https://alexband.tistory.com/52

 

Flutter 란 무엇인가? RN 과 뭐가 다르지?

작년에 사이드 프로젝트 앱 개발을 위해 크로스플랫폼 프레임워크를 한참 찾아봤습니다. 후보에 오른게 NativeScript 와 React Native 그리고 Ionic 이었죠. 사실 가장 웹 개발자가 바로 접근하기엔 위 3개가 가..

alexband.tistory.com

 

 

반응형