Flutter in Action - 플러터 소개

Gavri·2022년 10월 3일
0

Flutter

목록 보기
2/14

Flutter 소개

Flutter 는 Google에서 출시하고 오픈 소스로 제공하는 크로스 플랫폼 개발 프레임워크이며 Dart 언어를 통해 개발이 가능합니다.
아래에서는 플러터 기술 전체의 주요 기능을 소개합니다.

크로스 플랫폼 자체 UI 엔진

Flutter 자체 드로우 엔진을 활용해 성능, IOS/Android에서 일관성있는 UI 두가지를 보장합니다.

Flutter의 하위 레이어는 Skia를 2D 렌더링 엔진으로 사용하며 Skia는 Google의 2D 그래픽 처리 기능 라이브러리로 글꼴, 좌표 변환 및 비트맵을 포함하여 모두 효율적이고 간결한 성능을 제공합니다. Skia는 크로스 플랫폼이며 매우 친숙한 API를 제공합니다.현재 Google Chrome 브라우저와 Android 모두 Skia를 2D 드로잉 엔진으로 사용합니다.

고성능

  • Dart 언어로 개발 되어 컴파일시 실행 속도의 향상을 통해 높은 프레임 속도에서도 뷰 데이터 계산이 빠르다는 장점이 있습니다.
  • 자체 렌더링 엔진을 사용하여 레이아웃 데이터를 다트언어로 직접 제어하므로 브릿지 기능이 필요없습니다. (슬라이딩,드래그 같은 과정에서 재밍현상이 없음)

다트 언어의 장점

  1. 높은 개발 효율성

    • JIT 기반의 빠른 개발 주기 : 플러터는 개발시에는 런타임 언어와 동일한 환경에서 작동하기에 개발 시간을 크게 절약합니다.
    • AOP 기반 배포 패키지 : 플러터 애플리케이션 성능을 보장하기 위해 퍼블리싱 시 AOT를 통해 효율적인 기계어 코드를 생성할 수 있습니다.
  2. 고성능
    Flutter는 매끄럽고 충실도가 높은 UI 경험을 제공하도록 설계되었습니다. 이를 달성하기 위해 Flutter는 각 애니메이션 프레임에서 많은 코드를 실행할 수 있어야 합니다. 이는 프레임을 떨어뜨리는 주기적인 일시정지 없이 고성능을 제공하는 언어를 의미하며 Dart는 AOT를 지원하며 현시점에서 JavaScript보다 더 잘할 수 있습니다.

  3. 빠른 메모리 할당
    기능적 스트림을 사용하므로 기본 메모리 할당자에 크게 의존합니다. 따라서 사소한 작업을 효율적으로 처리하는 메모리 할당자를 갖는 것이 중요할 것이며 Flutter는 이 기능이 없는 언어에서 효율적으로 작동하지 않을것 입니다.

  4. null 세이프티
    정적 타입을 통해 안정성있는 개발을 지원합니다.(정적 타입의 경우 컴파일시 예기치 않은(타입) 에러 부분을 미리 감지할 수 있습니다.)

  5. Dart Community

플러터 프레임워크 구조

플러터 프레임워크 구조는 프레임워크,엔진,임베딩 3구조로 나눌수 있으며 해당 내용에 대해 간략히 소개하겠습니다.

프레임 워크 계층

  • Widgets 레이어 : Flutter에서 제공하는 기본 구성 요소 라이브러리의 집합입니다. 기본 구성 요소 외에도 Material 및 IOS 디자인 사양을 각각 구현하는 Material,Cupertino 두 가지 비주얼 스타일 구성 요소 라이브러리도 제공합니다.
  • Rendering 레이어 : Dart UI 레이어에 추상 레이아웃 레이어로, 렌더링 가능한 객체로 구성된 렌더링 트리를 구축합니다. 렌더링 객체가 동적으로 업데이트 되면 변경된 사항을 찾아 업데이트를 진행하며, 각 렌더링 개체의 위치와 크기를 결정하는 것 외에도 좌표 변환 및 그리기를 수행합니다.
  • Foundation 및 Animation, Painting, Gestures : Flutter 패키지에 해당하는 일부 Google 비디오의 Dart UI 레이어로 병합됩니다. dart:io 플러터 엔진은 애니메이션,제스처 및 그리기 기능을 제공하는 기본 UI 라이브러리입니다.

엔진 레이어

Skia 엔진 , Dart 런타임, 텍스트 조판 엔진 등 주로 C++로 구현되어 있으며, 코드가 dart:ui 라이브러리 호출은 엔진 레이어로 이동한 다음 실제 드로잉 및 디스플레이를 구현합니다

임베딩 레이어

Embedder, 임베딩 레이어. Flutter의 최종 렌더링 및 상호 작용은 해당 플랫폼의 운영 체제 API에 따라 달라지며 임베딩 레이어는 주로 특정 플랫폼에 Flutter 엔진을 설치하는 역할을 합니다.

Android - Java, C++
iOS,MacOS - Objective-C Objective-C++
Windows,Linux : C++

Flutter 코드는 임베딩 레이어를 통해 모듈방식으로 기존 앱에 통합하거나 앱 본체로 사용할 수 있습니다.

profile
모든건 기록으로

0개의 댓글