티스토리 뷰

flutter란?

이번에 크로스 플랫폼인 Flutter를 사용해 앱 개발을 진행하고 있습니다. 그래서 더 깊게 알기 위해 내용을 정리하며 앞으로 포스팅하고자 합니다~

 

처음에 앱 개발이라고 하면 막연하고, 내가 시도조차 안 할 분야라고 생각했었어요. 그동안 제가 할 수 있는 것에 제한을 두고 가둬왔던거 같아요. 플러터로 개발을 시작하면서 배운 것이 정말 많아요. 역시 실제 서비스를 해봐야 머릿속에만 쌓여있는 지식이 되지 않고 체득이 되네요. 각자 플러터를 시작하게 된 이유는 다르시겠지만, 처음 열정 그대로 같이 개발했으면 좋겠습니다. 파이팅이에요~

 

혹시 플러터를 설치하여 바로 사용하고 싶으신 분들은 아래 링크로 가시면 됩니다!

 

[Flutter]#1. flutter 설치하기(Install Flutter)

저번 포스팅에서는 플러터로 개발하기 첫단계로 플러터에 대해서 알아보았습니다. 지난 포스팅을 못보신 분들은 먼저 보고 오시는걸 추천합니다! #0. Flutter(플러터)란?(플러터로 앱개발하기 첫��

puzzle-puzzle.tistory.com

 

What is Flutter?

구글에서 개발한 크로스 플랫폼 개발 프레임워크로, 오픈소스 모바일 SDK 개발자가 동일한 코드 베이스에서 네이티브처럼 보이게, 안드로이드 및 IOS 애플리케이션을 구축하는 데 사용합니다. 2015년부터 도입해 2018년 12월 정식 출시 전까지 베타 버전으로 운영하였습니다.(웹도 있어요! 그리고 구글의 새로운 운영체제 Fuchsia의 기본 개발 키트이기도 합니다.)

 

또한, 마치 화면 전체를 2D 그래픽 API로 fillRect 하고 drawText, drawImage를 이용하여 앱을 만드는 것처럼 Flutter엔진이 Skia 기반으로 렌더링 해줍니다. 웹 개발에서 HTML을 모두 무시하고 전체를 flash나 canvas로 만드는 것과 같습니다.(Flutter는 모든 것이 Widget입니다!)

 

Github 언어 사용량 증가율

또한 Flutter에서 사용하는 Dart언어는, Github에서 언어 사용량 증가 1위를 보이면서 가파르게 성장하고 있습니다. 

 

Dart는 Google이 JavaScript를 대체하기 위해 2011년 개발한 언어입니다. 하지만 단순히 대체하기보다는 모바일, 앱, 웹, 명령어 스크립트, 서버 프로그래밍 등 Dart 언어를 통해 만들 수 있습니다.

 

Dart 프로젝트의 목적은 구조적이지만 유연하고, 다양한 종류의 기기에서 돌아가게 만드는 것입니다. 또한 객체지향이며 실행 중인 앱에서 즉시 결과를 볼 수 있게 hot reload을 포함하고 있습니다. 그리고 AOT 컴파일로 네이티브 코드를 생성하기 때문에 모든 플랫폼에서 빠른 속도를 제공합니다.

 

Dart 2.5 SKD에서는 Dart-C 인터롭용 dart:ffi는 외부 함수 인터페이스로 호스트 OS에서 C 기반 시스템 API를 호출하거나 C 기반 시스템 라이브러리를 호출할 수 있습니다. 외부 함수 인터페이스는 Dart에서 C 코드 호출에 더 나은 지원을 요청하는 개발자에게 응답합니다.

 

Benefits of Flutter

시간, 비용 절감

플러터는 크로스 플랫폼 개발 툴로써 같은 코드로 IOS 및 안드로이드 앱을 구축할 수 있습니다. 이러한 기능은 개발 시간을 단축하며 빠르게 완성할 수 있습니다.

 

Excellent performance

아래의 두 가지 기능은 빠른 앱 시작 시간과 성능 문제를 해결합니다. 기존 React Native 혹은 Hybrid App의 경우 네이트브 브릿지를 통한 통신이 불가피했지만 Flutter는 직접 컴파일합니다.

 

Dart Language

  • Dart언어

    • Dart 언어로 쓰인 코드는 네이트브 코드로 컴파일합니다.

      • 구글이 server side, front-end 코드를 작성하는데 Javascript보다 더 나은 언어를 만들기 위해 탄생했습니다.

      • 객체지향 언어입니다. 이러한 부분이 Dart만으로 시각적 사용자 경험(UX)을 쉽게 작성하게 해 주며 markup language는 필요하지 않습니다.

      • JIT(Just In Time) 컴파일과 AOT(Ahead Of Time) 컴파일을 모두 지원합니다.

        • AOT컴파일러는 Dart 코드를 효율적인 native 코드로 바꾸어줍니다.

        • JOT컴파일러는 hot-reloading을 가능하게 합니다.

      • Dart에 대한 자세한 이야기는 나중에 따로 다루도록 하겠습니다.

    • OS에 최적화된 앱을 만들기 위해서는 Native 코드를 사용할 수밖에 없어서 Dart 언어와 섞어서 사용합니다. Android는 Kotlin, IOS는 Switf를 이용하며 Dart에서 구현할 수 없는 기능도 구현 가능합니다.

  • 플러터는 자체 위젯을 가지고 있기 때문에 OEM 위젯에 접근할 필요가 없습니다. 결과적으로 앱과 플랫폼 간의 통신이 줄어들어 효과적입니다.

Hot reload

Hot reload

Hot relaod는 에뮬레이터, 시뮬레이터, 하드웨어의 코드에 적용된 사항을 즉시 볼 수 있고 변경된 코드는 1초 이내 반영되어 다시 로드됩니다. 이러한 기능은 새로운 기능을 쉽게 추가하고, 버그를 쉽게 고칠 수 있습니다. 개발 과정에 속도를 가속할 수 있는 기능입니다.

 

프레임워크 구조 설계 자체가 이 기능을 위해 특화되어 있습니다. Hot restart까지 사용하면 프로젝트를 닫기 전까지 디버깅을 중지할 필요가 없습니다.

  • Dart의 옵션인 JIT컴파일을 이용합니다.

 

Material and Cupertino

플러터는 Android, iOS의 대표 디자인 시스템을 기본적으로 제공합니다.

 

호환성

개발자들은 다른 버전의 OS에서도 문제없이 개발이 가능합니다. 예를 들어 IOS의 버전이 높아져도 정상적으로 작동할 수 있습니다.

 

오픈소스

플러터는 오픈소스 기술로 활성적인 커뮤니티와 문서가 존재합니다. 또한 Dart와 Flutter는 무료로 사용할 수 있습니다.

 

 

공식 홈페이지를 참고하여 더 자세한 내용을 얻을 수 있습니다.

 

Flutter - Beautiful native apps in record time

Flutter is Google's UI toolkit for crafting beautiful, natively compiled applications for mobile, web, and desktop from a single codebase. Flutter works with existing code, is used by developers and organizations around the world, and is free and open sour

flutter.dev

유튜브 채널도 있어요!

 

Flutter

Welcome to the official Flutter YouTube channel. Subscribe to stay up to date with best practices about the Flutter SDK. See real code examples, and watch en...

www.youtube.com

 

이상으로 소개를 마치고 다음 편에서는 아키텍처 등 더 자세하게 포스팅하도록 하겠습니다~

 

반응형