Dart 언어의 3가지 핵심 특징: 플랫폼 호환성, 컴파일 방식, Null Safety

Belle Kim·2025년 7월 16일
post-thumbnail

Dart 언어의 강력한 특징

1. 다양한 플랫폼에서의 컴파일 지원 (Web & Native)

Dart는 다양한 플랫폼을 대상으로 코드를 컴파일할 수 있는 언어이다. Dart Web을 사용하면 코드를 JavaScript로 변환해 웹 브라우저에서 실행할 수 있고, Dart Native를 사용하면 ARM 및 x64 같은 다양한 CPU 아키텍쳐에서 실행 가능한 네이티브 머신 코드로 컴파일할 수 있다.

2. 두가지 방식의 컴파일러 지원 : JIT(just-in-time) 및 AOT(ahead-of-time)

Dart는 JIT(just-in-time)와 AOT(ahead-of-time) 컴파일을 모두 지원한다.

  • AOT: 앱 실행 전에 미리 코드를 기계어로 변환하는 방식으로, Dart 코드를 미리 컴파일해서 완성된 형태의 실행파일(바이너리)을 만드는 것.
  • JIT: 개발을 하는 도중, 코드의 변경사항을 즉시 컴파일할 수 있게 하여 변경 사항을 바로 확인할 수 있는 핫 리로드(Hot reload)를 가능하게 한다.

AOT는 컴파일이 완료된 후 앱의 실행 속도가 빠르다는 장점이 있지만, 코드를 조금만 수정해도 전체 소스코드를 다시 빌드해야 하므로 시간이 오래 걸리고 번거로울 수 있다. 반면 JIT는 전체 코드를 다시 컴파일하지 않고도 UI와 같은 수정 사항을 빠르게 반영하여 확인할 수 있어 개발 과정에서 유용하다. 다만, AOT에 비해 실행 속도나 메모리 효율은 떨어질 수 있다.

3. Null Safety 기능

Dart는 변수나 객체가 null 값을 가질 수 있는지를 명시적으로 선언할 수 있는 Null Safety 기능을 제공한다. 기본적으로 모든 변수는 non-nullable(null 값을 가질 수 없음)이며, null을 허용하려면 변수 타입 뒤에 ?을 붙여 nullable로 명시하면 된다.

String name = 'Belle'		// null을 허용하지 않음
String? nickname = null;	// null을 허용함

Null Safety 덕분에 컴파일 타임에 null 관련 오류를 미리 감지할 수 있어, 런타임에서 발생할 수 있는 예기치 못한 null 참조 오류를 예방할 수 있다. 이 기능은 특히 안정성과 유지보수 측면에서 유용하며, 개발자가 실수로 null 값을 참조해 발생할 수 있는 앱 크래시를 줄이는 데 도움을 준다.


## Reference - [Dart Overview - The platforms](https://dart.dev/overview) - [Sound null safety](https://dart.dev/null-safety)
profile
기획, 개발, 디자인. 그 사이를 넘나드는 유목민

0개의 댓글