본문 바로가기

Personal Posting/Flutter

Dart for Flutter - 시작

생각만하고 실행은 하지 못했던 Flutter 공부를 시작했다.

모바일 또는 임베디드 개발에도 도움이 될 Flutter는 현재 옮긴 팀의 업무에도 도움이 될 것이라 판단이 되며,

추후 Flutter를 팀원들이 숙달할 수 있게 서포팅을 할 수 있게 스터디 및 내용 정리를 하기로 했다.

우선 Flutter를 하기 위해 기본적으로 숙지해야할 Dart 언어에 대해 정리해본다.

 

Dart 언어의 특징

우선 두개의 컴파일러를 가지고 있다.

Dart web : 프로그래밍한 Dart 코드를 JS로 변환. JS로 변환한다는 것은 곧 Web Framework에서 실행할 수 있다는 의미이다.

Dart Native : 여러 CPU 아키텍처에 맞게 변환 (ARM32, ARM64, X86 64... 즉, 대부분의 플랫폼에 맞는 결과물을 만들 수 있다는 의미이다.)

 

Dart와 Flutter에서는 JIT과 AOT 방식을 채택하고 있다.

JIT (Just in Time) :

인터프리터언어 (JS, Python 등) 에서 주로 사용되며 프로그램이 실행하는 동안 실시간으로 코드를 컴파일하여 실행하는 방식을 말한다. Dart에서는 Dart VM을 사용하여 내가 프로그래밍한 코드의 결과를 바로 화면에 보여준다. 가상머신을 돌림으로 인해 속도면에서 시간이 걸리기 때문에 개발 중일 때 JIT 방식이 사용된다. 개발이 완료되면 AOT방식으로 변경한다.

AOT (Ahead of Time) :

C, C++, Go 등의 언어에서 사용되는 방식이며, 프로그램을 실행하기 전에 해당하는 빌드 아키텍쳐 지정 후 컴파일하여 바이너리를 생성 및 실행한다. 이 방식은 실행시간이나 메모리사용면에서 오버헤드가 적다는 장점은 있지만 컴파일 시간이 오래걸리며 마이너한 수정(예: UI 변경)에도 재컴파일을 해야하기 때문에 비효율적인 단점이 있다.

 

Flutter에서는 AOT컴파일러를 사용하여 앱 실행 속도와 성능을 향상시키고 있으며, Dart 언어는 JIT컴파일러를 기본으로 제공하고 있다.

 

Dart 테스트 코딩

PC에 Dart 및 Flutter 환경 세팅이 되지 않은 경우, 아래의 페이지에서 간단하게 Dart를 코딩해 볼 수 있다.

https://dartpad.dev 

 

DartPad

 

dartpad.dev

 

이제 앞으로 공부할 Dart 및 Flutter에 대해 정리해보려고 한다.