이번 시간에는 Flutter라는 것을 알아보는 시간을 가져보겠습니다.
1. Flutter란?
Flutter는 그러니까 구글에서 개발한 오픈 소스 모바일 애플리케이션을 말하는데,
Mobile World Congress 2018 에서 최초 베타 릴리스를 발표하면서 새롭게 소개된
Cross Flatform Mobile App(크로스 프랫폼 앱 개발 프레임워크)개발 프레임워크 입니다.
또한 개발자가 ios(아이폰)과 Android(안드로이드) 두 OS간의 고품질 기본 인터페이스를 제작하는데
도움을 주는 Cross Flatform FrameWork(크로스 플랫폼 프레임워크)라고 할 수 있습니다.
기존의 UI를 모두 버리고 자체적인 UI 렌더링을 하기 때문에 IOS 에서는 meterial 디자인과
ripple애니메이션을 볼 수 있고 Android에서 cupertino 디자인을 볼 수 있습니다.
마치 화면 전체를 2D 그래픽 API로 fillRect(캔버스에 사각형을 그리듯) 하고 drawText drawImage해서
앱을 만드는 것처럼 Flutter 엔진이 Skia 기반으로 렌더링 해줍니다. 웹 개발시에는 HTML을 싹다 무시하고
flash 나 canvas로 만드는 것 과 동일합니다.
2.Dart란?
Dart또한 구글에서 만든 프로그래밍 언어로 플러터를 작성하는데 사용된 언어입니다.
다트는 구글이 server side(서버 사이드) 및 front-end(프론트 엔드) 코드를 작성하는데 기존의 JS보다는
좀 더 나은 언어를 원했기 때문에 만들어 진 것 같습니다.
구글은 자바스크립트를 직접 사용할지 말지에 대한 일련의 결정 후에 의미적으로 자바스크립트와의 맞는 언어를 만들어나가기로 결정했습니다.
다시 말하자면 다트에서 작성되는 모든 코드들은 자바스크립트로 컴파일 할 수 있으며, 이것이 구글이 Java를
사용하지 않고도 새로운 언어를 개발해나가는 이유라고 볼 수 있습니다.
3. Flutter에서 Dart를 사용하는 이유는?
만약 내가 다른 기술 환경에서 개발자의 업무를 하면서 플러터를 접한다면 이 플러터는 자바스크립트가 아닌
Dart(다트)를 사용하는 것에 대한 의문점이 생길 것입니다.
개발자의 기본적인 언어가 JS라고 한다면 그에 기반한 여러 언어들이 있었는데 왜 Dart는 JS기반과 다른 거야?
라고 의문점이 생길 것 입니다.
플러터가 JS계열을 택하지않고 Dart기반인 이유에는 그만한 이유가 있습니다.
Dart(다트)는 오늘날 가장 많이 사용되는 언어 25개에 포함되지 않는 인기 없는 언어라고 할 수 있습니다.
"다트가 이렇게 인기없는데 고작 구글 자사 언어이기 때문에 사용되었다구?" 라는 의문점이 들지만
그런 의문점에도 그만한 이유가 있다고 할 수 있는데 먼저,
- 다트는 JIT(Just In Time)컴파일과 AOT(Ahead Of Time)컴파일을 모두 지원한다.
- AOT 컴파일러는 다트코드를 효율적인 native 코드로 변환해준다. 이것은 플러터를 가장 빠르게 만들지만 거의 모든 프레임워크가 다트로 작성되었음을 의미하는 바이다.
즉 개발자가 모든것을 커스터마이징 할 수 있다는 뜻 - 다트의 옵션으로 JIT 컴파일러는 hot-reloading(핫 리로딩)을 가능케 한다. 빠른 개발과 반복은
플러터 사용의 대한 즐거움 중 하나, 텍스트 편집기에 코드를 저장하면 시뮬레이터상에서
앱이 1초 이내에 업데이트 된다.
- AOT 컴파일러는 다트코드를 효율적인 native 코드로 변환해준다. 이것은 플러터를 가장 빠르게 만들지만 거의 모든 프레임워크가 다트로 작성되었음을 의미하는 바이다.
- 다트는 객체 지향 언어이다. 이것이 다트만으로 시각적 사용자 경험(UX)를 쉽게 작성 할 수 있게 해주면서,
markup language(마크업 언어)는 필요하지 않다. - 다트는 생산적이고 예측이 가능한 언어이며, 배우기 쉽고 가장 친숙하다.
만약 동적언어(dynamic langague)를 사용해 왔든 정적언어(static language)를 사용해 왔든 쉽게 시작할 수 있다.
4. Flutter의 장점과 단점
1. 장점
- IOS 및 Android용 단일 코드 기반 언어이다.
소프트웨어 개발 프로세스에 이미 익숙하다면 이 프로세스가 상당히 복잡하고 시간이 많이 소요될 수 있음을 예상할 수 있다. 특히 안드로이드 및 IOS용 모바일 애플리케이션을 개발할 경우
이 두개의 플랫폼의 대한 기술도 다른데,
예를 들어 Android(안드로이드)는 Java or Kotlin IOS(아이폰)은 Swift or Objective-C를 사용한다. 따라서 프로젝트 작업을 위해서라도 두개의 별 도 팀이 필요할 수 있다. - 더욱 빠른 코딩 과 성능 향상
우리는 이미 Flutter의 프로그래밍 언어인 Dart를 알아보았다. 네이티브 코드로 직접 컴파일되므로 앱과 플랫폼 사이에 추가 브릿지는 필요하지 않다.
이렇게 하면 앱 시작 시간이 빨라지면서 성능도 동시에 향상된다.
Flutter의 개발자는 초당 60프레임을 약속하며,
이 속도는 최신 화면에서 표시되는 부드럽고 선명한 화면의 속도 - 사용자 인터페이스
사용자가 직접 정의할 수 있는 내장 UI 구성 요소의 푸웁한 카탈로그를 제공한다. 두 가지 위젯 세트가 있는데, 머터리얼 디자인 위젯 (Android) or Cupertino(IOS 스타일) 위젯으로 앱의 모양과 느낌을 플랫폼별로 다르게 만들 수 있다.
또한 Flutter가 이전 버전의 Android 및 IOS에서 실행될 때에는 최신 운영 체제인 만큼 무리 없이 작동 한다.
2. 단점
- Native API를 Dart에서 직접 호출이 불가능 하다.
이 부분에서 거의 발목을 잡을 일이 없다고 할 수 있지만, 플러그인을 직접 서야하는 불편함이 존재 - 임베디드 안드로이드 뷰에서는 키보드 생성을 지원하지 않는다.
2020년 쯤에 발생한 이슈로 현재는 해결되었을을 예상한다. - 코드를 고치려면 새버전을 배포해야 한다.
- Flutter는 Air-bnb 의 Lotti를 지원하지 않는다.
Flutter에서만 지원하지 않고 Android, IOS, React-Native에서는 지원하고 있다.
로티는 어플리케이션에 Fancy 한 애니메이션을 넣어주는 라이브러리이다. - C/C++ 라이브러리 호출이 되지 않는다.
C/C++ 라이브러리 호출이 Dart에서는 되지 않는다. 직접 플러그인을 써야하고 ,없다면 만들어야 한다.
마치며
이번 시간에는 React-native외에 언어인 플러터에 대해 알아보았습니다.
이렇게 보니까 복잡하면서도 간단하게 보이는 것 같네요 ㄷㄷㄷ,
갈수록 모바일 디바이스의 성능이 더욱 좋아지고 있고, 더욱 할 수있는 부분이 많아짐에 따라서
개발자들의 역략이 가장 중요한 부분이 될 것 입니다.
한마디로
그래도 Flutter를 공부해보는 것도 좋다
라고 말하고 싶네요 React-Native , Kotlin, Swift등 다양한 모바일 언어가 있지만
결국 선택은 여러분의 몫입니다. 여러분이 어떤 언어로 개발하던 간에
그에 대한 열정과 센스만 있다면 다른 언어를 배울때도 막힘이 없으실 겁니다.
참고 자료
OKKY | 누구 제발 플러터의 단점 좀 말씀해주실 분?
단점을 찾을래야 찾을 수가 없고 조만간 네이티브 앱 개발자들 전부 플러터로 넘어갈 것 같은데 부디 단점 좀 설명해주실분?
okky.kr
Flutter란?
본 문서는 Fluter Example의 내용을 원저작자의 동의하에 번역한것 입니다. 원 저작자 Eric Windmill에게 감사를 전합니다. 이해하는데 불필요한 문장은 과감하게 버렸습니다. 오 번역에 대해서 의견 주
jaceshim.github.io
Flutter란?
1️⃣ What is Flutter? Mobile World Congress 2018에서 Flutter의 최초 베타 릴리스를 발표하였고 Google에서 새롭게 선보이는 모바일 UI 프레임워크이며, 개발자가 iOS와 Android 모두를 위한 고품질 기본 인..
dev-youngjun.tistory.com
'모바일개발 > Flutter' 카테고리의 다른 글
[Flutter] Flutter 설치하기 - linux (0) | 2023.01.02 |
---|---|
[Flutter] 플러터 시작하기 (0) | 2022.02.24 |