Dart란 구글에서 제작한 프로그래밍 언어로, 멀팃 플랫폼 상에서 동작하는 앱을 만들기 위해 고안되었다.
- UI 제작에 최적화가 잘 되어있다.
- 매우 빠르고, 많은 플랫폼에 컴파일이 가능하다.
- 개발자 경험이 뛰어나다.
플랫폼별 컴파일
Dart Web
Dart로 작성한 코드를 JavaScript로 변환해주는 컴파일러
Dart Native
디바이스(모바일, 데스크톱, 서버, 임베디드 등)를 대상으로 하는 프로그램의 경우 Dart Native를 이용한다. 여기에는 순수 Dart 인터프리터와 JIT(Just-In-Time) 컴파일러, AOT(Ahead-Of-Time) 컴파일러가 모두 포함되어 있다. 두 가지 컴파일러로 인해 개발과 배포 두 가지 경우 모두 편리하다.
AOT (Ahead-Of-Time)
- 프로그램 실행 전에 전체 코드를 기계 코드로 변환하는 컴파일러이다.
예를 들어 C, C++, Rust, Go로 작성한 프로그램을 완성한 뒤 컴파일을 할 때에는 아키텍처를 지정해야한다. 이 때 완성된 프로그램이 Windows에 배포할 C++ 프로그램이라면, 이 프로그램의 코드를 Windows 바이너리(기계어)로 컴파일해야 한다. 이 때 AOT 컴파일러가 프로그램의 C++ 코드를 기계어로 변환한다.
IOS, Android, Windows, Mac과 같은 아키텍처를 위해 컴파일 하는 것은 시간이 많이 소요된다. 컴파일러는 많은 최적화를 수행하고 프로그래밍 언어로 만든 코드를 기계어로 변환하기 때문이다. 하지만 이렇게 배포하기 전 AOT로 컴파일을 하면, 디바이스에서 실행 속도가 빠르며 메모리 사용량을 줄여준다.
따라서 배포를 위해 컴파일 할 때는 AOT 컴파일러를 사용하는 것이 좋다. 그러나 UI를 만들거나 개발 모드일 때는 AOT가 최적의 방법이 아니다. 단기간에 빠르게 변경사항을 반영해야 하는데, AOT 컴파일러는 시간이 많이 소요되기 때문이다. 이 때 사용하는 것이 JIT 컴파일러이다.
JIT (Just-In-Time)
- 개발 단계에서 Dart VM 가상머신이 제공하는 컴파일러로, 프로그램을 실행하면서 코드를 실시간으로 변환한다.
Dart Native에서는 Dart VM을 사용하는데 개발자가 작성한 코드의 결과를 바로 화면에 나타내도록 한다. 다만 가상머신에서 작동하기 때문에 조금 느리다. 따라서 개발중일 때만 사용하는 것이다.
UI 수정이나 개발 단계에서는 프로그램을 빨리 반복하고 실행해야 한다. 하지만 이렇게 일부분을 변경할 때마다 결과를 확인하기 위해 전체 프로그램을 컴파일해야 한다면 개발 경험이 저하되므로 이러한 점을 극복하기 위해 사용한다.
'✍️ What I Learned' 카테고리의 다른 글
[TIL] 웹사이트의 호스팅과 배포 (0) | 2024.01.17 |
---|---|
[TIL] FormData, data-* (0) | 2024.01.15 |