개발자/SupaBase && Flutter

01. (Dart 개념_노마드코더 강의) Flutter가 Dart를 선택한 이유

푸루닉 2024. 10. 23. 17:17
  • dart 는 두 개의 컴파일러를 가지고 있다(JIT, AOT)

  • AOT 컴파일러 (Ahead-of-time)
    네이티브(arm, x86, x64), 웹(js)
    시스템에 맞게 최적화된 바이너리를 생성하므로 컴파일에 많은 시간이 걸린다.
    최종 배포시 사용.

  • JIT 컴파일러
    dart VM 사용
    코드의 결과를 바로 보여준다. (ms 단위?)
    가상머신에서 동작중이라 조금 느리지만 많은 디버깅 옵션도 지원.
    개발중에만 사용하며 배포에는 사용하지 않음.

  • null safety 특성을 가진다.
    c나 java에서 null 참조하면 오류 발생.

  • flutter, dart 둘 다 google 에서 개발 한 것이다 즉 flutter 의 성능 향상을 위해 dart 를 변경 하는 것도 가능하다.

  • flutter 가 처음 나왔을 때 AOT 컴파일러 는 없었다. flutter 팀의 요청에 의해 dart 팀에서 개발 한 것.

  • AOT 컴파일이란?

    • 코드 실행 전 미리 컴파일하는 방식을 의미한다. 즉, 소스 코드를 실행하기 전에 기계어로 변환하여 성능을 높이는 방식
    • Flutter에서 AOT 컴파일
      • 앱이 배포되기 전 모든 코드를 기계어로 변환해서 실행속도가 매우 빠름 Flutter가 안드로이드와 iOS같은 모바일 앱에서 네이티브 성능을 발휘할 수 있는 이유이기도 함.
  • JIT 컴파일

    • 프로그램을 실행할 때 필요한 코드만 그때그때 실시간으로 컴파일하는 방식
    • Flutter에서는 Hot Reload 기능에 해당
  • 네이티브 성능

    • 앱이 기지에 맞춰 최적화되어 마치 그 기기용으로 직접 작성된 것처럼 작동하는 것을 의미함. 즉, 빠르고 부드러운 실행이 가능해져서 사용자가 앱을 사용할 때 딜레이나 끊김 없이 자연스러운 경험을 할 수 있음.