Dart 언어는 AOT, JIT 두 가지 컴파일 모드를 지원한다.
나는 개인적으로 해당 컴파일 방식이 매우 Cool 하다고 생각함 !
이렇게 컴파일러를 분리한 이유는 개발자 친화적인 방식으로 개발 환경의 편의성을 늘려주기 위함에 있는 것 같다 :)
내가 Dart 언어를 사용하면서 가장 크게 좋다고 느꼈던 부분 중 하나이기 때문에 내용을 작성해보기로 했다.
1. JIT (Just-In-Time) 컴파일러:
- 실행 시간 컴파일:
- JIT 컴파일러는 애플리케이션이 실행 중일 때 코드를 컴파일한다. 따라서 개발자가 코드를 수정하고 다시 실행할 때 마다 최신 코드로 빠르게 반영된다. (매우 매우 매우 Cool!)
- 인터프리터와 컴파일러 혼합:
- 코드를 인터프리터로 빠르게 실행하면서, 동시에 컴파일을 진행하여 최적화된 코드로 전환한다.
- 빠른 반응성:
- 개발 시에 코드 수정이 빈번하게 일어나는 상황에서 빠른 반응성이 필요한 경우에 적합하다.
- 개발 시에 코드 수정이 빈번하게 일어나는 상황에서 빠른 반응성이 필요한 경우에 적합하다.
2. AOT (Ahead-Of-Time) 컴파일러:
- 빌드 시간 컴파일:
- AOT 컴파일러는 애플리케이션을 실행하기 전에 미리 코드를 컴파일한다. 따라서 애플리케이션이 실행 중일 때는 더 이상 컴파일이 필요하지 않다. (기존 컴파일 방식)
- 효율적인 실행:
- AOT로 컴파일된 코드는 빠른 실행 속도를 제공하며, 최적화된 기계어 코드를 생성하여 메모리 사용량을 줄인다.
- 저전력 장치 및 모바일 환경:
- AOT 컴파일은 모바일 애플리케이션 및 저전력 장치에서의 성능을 향상시키는 데 도움이 된다.
Dart에서는 주로 Flutter 프레임워크를 통해 AOT 컴파일러를 사용하여 모바일 애플리케이션을 빌드하고, 개발 단계에서는 JIT 컴파일러를 사용하여 빠른 개발 피드백을 얻을 수 있도록 고안되었다.
iOS 개발을 하며 물론 SwiftUI의 Preview도 있지만 Dart만큼 부드럽고 매끄럽게 진행되지 않았기 때문에 Flutter + Dart로 개발을 할 때, 매우매우매우 좋은 개발환경을 경험하였다.
실기기 혹은 시뮬레이터(iOS, Android)를 돌릴 때, 바로바로 변경 내용이 보여지는게 신기하여 원리를 찾아보았는데 Flutter & Dart 팀의 개발자 친화적 성향을 엿볼 수 있는 좋은 기회였다고 생각한다.
'Flutter > Basic Knowledge' 카테고리의 다른 글
[Dart] Stream 이란? (2) | 2024.01.22 |
---|---|
[Dart] Asynchronous & Future (0) | 2024.01.12 |
[Dart] 단일 상속과 Mixin (0) | 2024.01.10 |
[Dart] Garbage Collection 이란? (1) | 2024.01.10 |
[Dart] Dart 란? (0) | 2024.01.10 |