Coram Deo

[Flutter] 플러터 특징 / 플러터 컴파일 방식 / 플러터 장단점 본문

Flutter

[Flutter] 플러터 특징 / 플러터 컴파일 방식 / 플러터 장단점

탁탁슝 2024. 7. 3. 12:18

Flutter 란?

구글에서 개발한 모바일/웹/데스크톱 크로스 플랫폼 개발 프레임워크

주로 모바일 애플리케이션을 위한 프레임워크로, 하나의 코드베이스Android와 iOS에서 동작하는 네이티브 애플리케이션을 개발할 수 있도록 설계되었다.

 

사용이유

  1. 크로스 플랫폼 개발
  2. 고성능
  3. 풍부한 위젯
  4. Hot Reload
    •  빠르고 쉽게 실험하고, UI를 빌드하고, 기능을 추가하고, 버그를 수정하는 데 도움이 된다. 핫 리로드는 업데이트된 소스 코드 파일을 실행 중인 Dart 가상 머신(VM) 에 주입하여 작동한다 . VM이 새 버전의 필드와 함수로 클래스를 업데이트한 후, 플러터 프레임워크는 자동으로 위젯 트리를 다시 빌드하여 변경 사항의 효과를 빠르게 볼 수 있도록 한다.
  5. 디자인적으로 성능이 우수함

Flutter를 사용하면 좋은 경우

  1. 스타트업이나 중소기업
  2. 프로토타이핑 및 MVP 개발
  3. 일관된 UI가 중요한 프로젝트

작동 방식

Flutter는 Dart 언어로 작성된 코드를 ARM 코드로 컴파일하여 네이티브 성능을 제공한다.

주요 구성 요소

- Dart

- Flutter 엔진

- Flutter 프레임 워크

 

컴파일 방식

플러터의 컴파일 방식은 AOT(Ahead of Time)컴파일과 JIT(Just in Time) 컴파일을  둘다 사용함

 

1. AOT 컴파일

  • 코드를 미리 컴파일하여 네이티브 머신 코드로 변환하는 방식
  • 앱이 실제로 배포될 때 사용되는 방식
  • 장점
    • 빠른 실행속도 (네이티브 머신 코드로 컴파일되므로 실행 속도가 빠름)
    • 최적화된 성능 (최적화된 네이티브 코드로 컴파일되기 때문에 성능이 높음)
    • 보안성 (소스 코드가 사용자에게 노출되지 않음)
  • 단점
    • 긴 컴파일 시간 (미리 컴파일하기 때문에 컴파일 시간이 길어질 수 있음)
    • 큰 바이너리 크기 (최적화된 네이티브 코드로 인해 앱의 크기가 커질 수 있음)
  • 플러터는 AOT 컴파일을 사용하여 애플리케이션을 iOS와 Android에 배포한다.
  • (최종 사용자에게 최적의 성능을 제공하기 위해)

 

2. JIT 컴파일

  • 애플리케이션이 실행될 때 코드가 실시간으로 컴파일되는 방식
  • 개발 중에 주로 사용됨
  • 장점
    • 빠른 피드백 루프 (코드변경 시 빠르게 테스트 할  수 있어 개발 속도가 빠름)
    • Hot Reload (코드 변경 사항을 즉시 반영할 수 있어 개발자가 효율적으로 작업할 수 있음)
  • 단점
    • 실행 속도 (실행중에 컴파일되기 때문에 AOT 컴파일보다 느릴 수 있음)
    • 메모리 사용량 (런타임에 컴파일하기 때문에 더 많은 메모리를 사용할 수 있음)
  • 플러터는 개발 중에 JIT 컴파일을 사용하여 개발자가 빠르게 코드를 수정하고 테스트할 수 있도록 한다.
  • Hot Reload 기능은 JIT 컴파일의 대표적인 장점으로, 변경 사항을 즉시 반영하여 개발 생산성을 높인다.

 

전체 컴파일 과정

1. 개발 단계

  • 개발자는 Dart 코드를 작성한다.
  • Dart VM(가상 머신)이 JIT 컴파일을 통해 코드를 실행한다.
  • Hot Reload를 통해 실시간으로 변경 사항을 반영한다.

2. 배포 단계

  • 애플리케이션이 배포될 준비가 되면 Dart 코드는 AOT 컴파일을 통해 네이티브 코드로 변환된다.
  • 이 네이티브 코드는 각 플랫폼(iOS, Android)용으로 빌드되어 앱 스토어에 배포된다.

결론적으로 플러터는 개발 중에는 JIT 컴파일을 사용하여 빠른 피드백과 생산성을 제공하고, 배포 시에는 AOT컴파일을 사용하여 최적화된 성능을 제공한다. 이 두 가지 컴파일 방식을 적절히 활용함으로써 개발자와 최종 사용자 모두에게 최상의 경험을 제공하는 것이 플러터의 큰 장점이다.

 

특징

  • 위젯 기반: 모든 것이 위젯으로 구성되어 있어 유연하고 일관된 UI를 설계할 수 있음
  • 풍부한 라이브러리: 다양한 사전 제작된 위젯과 패키지를 통해 개발 생산성을 높일 수 있음
  • 반응형 UI: Flutter는 선언적 방식으로 UI를 설계하여 상태 변화에 따라 UI가 자동으로 업데이트됨
  • Customizable: 위젯을 커스터마이즈하거나 새로 만들 수 있는 유연성