[Dart] Dart란? (flutter가 dart를 선택한 이유, 주요 기능)

임승민·2023년 6월 27일
0

Dart

목록 보기
1/3
post-thumbnail

Dart는 구글이 개발한 프로그래밍 언어이며 주로 플러터 앱 개발에 사용되는 언어이다.

왜 Dart인가

왜 많고 많은 언어중에 flutter는 Dart를 선택했을까?

초기 플러터 팀은 12개 이상의 언어중 UI 구축 방식이 일치하는 dart를 선택했다.

dart는 아래의 기준에서 높은 점수를 받았다.

  1. 개발자 생산성
    1. 플러터는 동일한 코드 베이스로 개발해 개발 속도를 높인다.
    2. 플러터는 dart로 구축되어 가독성, 접근 가능성을 높여 코드 생산성을 유지한다.
  2. 객체 지향
    1. 객체 지향 언어는 UI 프레임워크를 구축한 오랜 경험이 있다.
    2. 객체 지향 개발 경험이 있다면 플러터를 쉽게 배울 수 있다.
  3. 예측 가능한 고성능
    1. 화면 끊김 현상 없이 고성능과 예측 가능한 성능을 제공하는 언어가 필요하다.
  4. 빠른 할당
    1. 플러터는 기본 메모리 할당자에 의존하여 작은 객체의 할당, 해제를 효율적으로 하여 메모리 사용량을 최소화한다.
    2. 위의 기능을 제공하는 언어에서 효율적으로 작동한다.
  • 기본 메모리 할당자: 프로그램에서 메모리를 동적으로 할당/ 해제하는 작업을 관리하는 시스템의 일부

dart의 주요 기능

이제 dart의 주요 기능들에 알아보자!

  • 두 가지 컴파일 지원(JIT, AOT)
  • Hot Reload
  • 초당 60 프레임의 애니메이션
  • 통합 레이아웃

두 가지 컴파일 지원

Dart는 JIT과 AOT 두가지 컴파일을 지원한다.

JIT(Just In Time): 프로그램을 실행하는 동안 기계어를 생성한다.

AOT(Ahead Of Time): 프로그램을 실행하기 전에 기계어를 생성한다.

두가지를 사용해 얻을 수 있는 이점은 아래와 같다.

  • 개발과 디버깅 동안 JIT 컴파일러를 사용해 실시간으로 코드 수정사항을 확인할 수 있다.
  • AOT 컴파일러를 사용해 미리 실행파일을 컴파일하여 변환 과정 없어 빠른 실행 시간, 성능 향상을 얻는다.

따라서 Dart는 JIT을 통한 빠른 개발 주기, AOT를 통한 빠른 실행 속도 두 가지 이점을 제공한다.

핫 리로드

핫 리로드는 앱 개발 중 코드 변경을 바로 적용해 앱을 빠르게 리로드하는 기능이다.

일반적으로 수정한 코드를 적용하기 위해 앱을 다시 빌드하여 실행하는 단점이 있지만 핫 리로드를 사용하면 코드를 수정해도 다시 빌드할 필요 없이 실시간으로 수정 사항 확인이 가능하다.

이처럼 수정 코드를 실시간 반영하여 개발 생산성 향상으로 개발과 디버깅 시간을 단축할 수 있다.

초당 60프레임의 애니메이션

플러터의 Skia 그래픽 엔진은 하드웨어 속도를 높여 애니메이션 그리기와 처리를 최적화해서 초당 60프레임의 애니메이션을 구현한다. 이를 통해 jank는 최소화되고 사용자들에게 부드러운 애니메이션을 제공한다.

따라서 플러터의 그래픽 엔진, dart의 JIT, AOT를 통한 성능 최적화로 초당 60프레임의 애니메이션 구현이 가능하다.

  • Jank: 사이트 혹은 앱이 주사율에 맞추지 못해 버벅거리거나 잠시 정지한 상태를 사용자가 보는 것.

통합 레이아웃

dart로 플러터가 별도의 프로그램, 추가 템플릿, 레이아웃 언어 없이 레이아웃을 구성할 수 있다.


이외에도 “선제적 스케줄링, 타임 슬라이싱 및 공유 리소스”, “할당 및 가비지 수집” 등 몇가지 주요 기능들이 존재하지만 이는 추후에 다루도록 하겠다.

References

https://docs.flutter.dev/resources/faq#why-did-flutter-choose-to-use-dart

https://hackernoon.com/why-flutter-uses-dart-dd635a054ebf

https://beomseok95.tistory.com/315

0개의 댓글