나는 1년 이상 Flutter를 이용해서 개발을 해왔다. 하지만 최근에 과연 Dart라는 언어에 대해서 잘 알고 있나라는 의문이 생겼다.
딱히 Yes라는 답이 나오질 않아, 노마드 코더에 있는 Dart 강의를 통해 가볍게 문법을 리마인드하는 시간을 가졌다.
강의를 들어가기에 앞서 Flutter 프레임 워크가 왜 Dart를 채택하는지에 대한 설명을 들었는데 처음 알게된 사실이라 기록을 해두려고 한다.
https://dart.dev/overview Dart 공식문서
Dart Compiler
Dart는 두 개의 컴파일러를 가진다. Dart Web은 Dart 코드를 Javascript 코드로 변환해주고, Dart Native는 Dart Native는 Dart 코드를 여러 CPU의 아키텍쳐에 맞게 변환시켜준다. 예를 들어 대부분의 모바일 폰에서 사용하는 ARM64나 리눅스, 윈도우, 맥 등으로 컴파일이 가능하다는 것이다.
Dart Compile 방식
AOT(Ahead Of Time) :
- 배포할 때 아키텍쳐를 지정
- 지정한 아키텍쳐의 바이너리로 컴파일 한 후에 배포(컴파일을 먼저하고 배포)
- 최적화 할 게 많고 코드를 기계어로 바꿔야하기 때문에 시간이 오래걸림
JIT(Just In Time) :
- Dart VM이 컴파일하며, 나의 코드를 바로 화면에 반영
- 실행 중에 컴파일을 하기 때문에 속도가 느리다.
디버그 모드로 앱 빌드를 하면 속도가 느린건 알고 있었지만 왜 그런가에 대해서는 생각해보지 않았는데, 이번 기회를 통해 그 이유를 알게 되었다.
JIT 방식으로 컴파일하기 때문이고, 이 때문에 hot reload 기능의 사용이 가능하다.
'Dart' 카테고리의 다른 글
Dart의 동시성 정리 - Isolate (0) | 2023.11.17 |
---|---|
Dart 3 업데이트 문법 (1) | 2023.11.13 |