[Flutter] Flutter에 대해

안정우·2024년 1월 12일
0

Flutter

목록 보기
1/6

Flutter란?

Flutter(플러터)는 고성능, 고품질의 iOS, Android 앱과 웹을 단일 코드 베이스로 개발할 수 있는 Google의 Mobile UI Framework이다.

단일 코드 베이스로 개발을 할 수 있다는 것은, iOS & Android 에서 작동하는 앱을 한 번에 만들 수 있다는 것이다.

보통 하나의 앱을 만들기 위해서 iOS와 Android를 위한 2개의 코드(Java, Swift)가 필요하지만, Flutter는 하나의 코드 베이스로 크로스 플랫폼 개발을 가능하게 한다.



Framework란?

Frame(틀)과 Work(일)의 합성어로, 어떠한 목적을 달성하기 위해 복잡하게 얽혀있는 문제를 해결하기 위한 구조이다. 소프트웨어 개발에 있어 하나의 뼈대 역할을 한다.

UI Framework

UI란 User Interface의 줄임말로, 사용자와 애플리케이션이 커뮤니케이션을 할 수 있도록 도움을 주는 매개체 역할을 한다.

매체의 역할을 하는 종류는 다양하게 존재하는데,
휴대폰 화면의 터치 이벤트, 리모콘의 버튼 이벤트 등이 있다고 볼 수 있다.



Flutter의 특징

구글이 지원하는 무료 오픈소스이며, 네이티브앱으로 컴파일이 가능하여 네이티브 수준의 성능을 자랑(AOT 지원 / Skia엔진 보유)한다.

  • 플러터의 모든 것은 위젯이기 때문에 위젯에 대해서만 개념을 숙지하면 쉽게 개발 가능하다.

  • Dart라는 프로그래밍 언어를 사용(Kotlin, Swift, Java, Typescript를 알고 있으면 쉬움)한다.

  • Dart를 네이티브 코드로 컴파일하여 앱에 빌드가 가능하며, 앱 개발시 핫 리로드라는 특수 기능이 있는 가상 머신 (VM)을 사용한다.

  • 코드를 업데이트하고 다시 배포하지 않고도 코드를 저장하면 변경 사항을 실시간으로 확인 가능하다.

  • AOT와 JIT 지원

    AOT(Ahead of time) : 프로덕션 모드
    Dart언어로 개발한 코드를 휴대폰에 빌드하기 전에 해당 핸드폰의 기계어 코드(네이티브 코드)로 사전 컴파일하여 코드를 빌드한다.

    -> 즉, 네이티브 성능을 낼 수 있음.

    Dart Code -> iOS Native Code(사전 컴파일) -> iOS
    Dart Code -> Android Native Code(사전 컴파일) -> Android
  • JIT(Just in time) : 개발 모드

    런타임에서 실행할 수 있는 중간언어로 변환 후 Dart의 가상머신(VM)을 통해서 중간언어를 실시간으로 번역한다.

    AOT에 비해 런타임시 실행이 느리기에, 이 방식은 개발 모드에서만 사용한다.

    Dart Code(코드 생성) -> Dart 가상머신이 이해할 수 있는 중간언어로 변환(컴파일) -> Dart가상머신 -> 실행(해당 휴대폰에 맞게 컴파일 및 실행)


Dart란?

구글이 멀티 플랫폼 상에서 동작되도록 하는 앱을 위해 디자인된 프로그래밍 언어이다. 기본적으로 C언어의 문법과 거의 같으며 Java, C#, Javascript와 같은 기능적 스트럭처를 추가한 언어로, 언급된 언어보다 간결하고 강력한 기능을 지원한다. 모바일, 데스크톱, 서버, 웹 앱 용도에 사용된다.

Dart는 DVM(Dart VM)상에서 동작하거나 네이티브 컴파일링을 통해 모바일, 데스크톱, 웹 브라우저, 서버 플랫폼 상에서 어플리케이션 실행을 지원하고 있다. Dart 프로젝트의 목적은 구조적이지만 유연하고 프로그래머들에게 자연스럽고 다양한 종류의 기기에서 동작되도록 하는 것이다. 구글에서 2017년 발표한 크로스플랫폼 앱 프레임워크인 Flutter가 이 언어를 사용하고 있다.


Dart의 특징

  • C#, Javascript, Java 어떤 언어든 숙지가 되어 있다면 배우기 쉬움.
  • Type을 지원하는 언어.
  • Type 추론을 지원함.
  • 단일 스레드로 비동기 방식 지원.
  • UI에 최적화된 언어.
  • 동시성을 지원하지만 완벽하게 격리됨(isolate)을 보장함.
  • 스프레드 연산자를 지원.
  • 배열은 없고 컬렉션만 존재.
  • Skia 엔진 보유.
  • 2D 그래픽 라이브러리(엔진)

일반적인 React의 경우는,

    1. CSS로 버튼을 만듦.
    1. Android / IOS 에서 버튼과 동일한 것을 찾아냄.
    1. 해당 버튼을 휴대폰에 그림.
    1. 이러한 것들을 브릿지(Bridge)라 함.

하지만 Flutter의 경우

    1. 버튼을 만듦.
    1. 자체 내장되어 있는 Skia 엔진 이라는 곳에서 바로 그리고 휴대폰에 저장.




다음 포스팅

Dart 기본 문법에 대해 작성 예정



참고한 곳

0개의 댓글