Dart는 구글에서 개발한 프로그래밍 언어로, 마찬가지로 구글 주도로 개발된 Go 언어와 동일하게 구글 주력 언어입니다.
2011년 구글에서 공개했으며 V8 엔진 핵심 엔지니어인 Lars Bak, Kasper Lund가 개발했습니다.
초기에는 JavaScript를 대체하는 웹 개발용으로 사용되었으나 후에 Flutter 프레임워크 유일 언어로 자리 잡았고 클라이언트 크로스 플랫폼(모바일, 웹, 데스크톱)을 핵심 장점으로 내세웁니다.
구글 내부 유튜브, GCP, 인프라 등 다수의 핵심 서비스에서 광범위하게 사용되고 있으며 클라이언트 생태계와 분리된 거대한 커뮤니티 생태계를 갖추고 있습니다.
가장 중요한 장점은 단일 코드로 안드로이드, iOS, 맥OS, 리눅스, 윈도우 등 여러 플랫폼용 앱을 생성할 수 있다는 점입니다.
전체 포지셔닝
Dart는 클라이언트 환경에 최적화된 크로스 플랫폼 개발 언어로 고효율 멀티 단말 개발 경험 구현을 목표로 하며 유연한 런타임으로 앱 프레임워크를 지원합니다. 해당 언어는 Flutter의 하위 기반이며 코드 포맷팅, 정적 분석, 단위 테스트 등 개발 도구 기능을 기본 탑재하고 웹, 모바일, 데스크톱 등 다중 플랫폼으로 컴파일 및 배포할 수 있습니다.
기술 특징
개발 과정에서 핫 리로드를 지원합니다.
배포 단계에서는 다중 플랫폼용 고품질 애플리케이션을 빌드할 수 있습니다.
타입 안전성
- 정적 강타입(sound typing): 타입 일치를 강제하되 타입 추론으로 타입 어노테이션 생략 가능;
dynamic동적 타입을 지원하며 런타임 검증과 결합해 유연한 동적 코딩 환경을 제공합니다.
완전 널 안전성(sound null safety)
변수는 기본적으로 null을 허용하지 않고 명시적 선언을 한 변수만 null 값을 저장할 수 있습니다. 정적 분석을 통해 런타임 널 포인터 예외를 원천 차단하며 널 불허 변수는 실행 중 영구적으로 널이 아님이 보장됩니다.
내장 라이브러리, 비동기 호출, 널 허용/불허 타입, 화살표 함수, 제너레이터, 스트림, 게터 등 문법 기능을 지원
풍부한 Dart 표준 라이브러리
- dart:core:모든 Dart 프로그램 필수 라이브러리로 기본 내장 타입, 컬렉션 및 핵심 범용 기능 제공
- dart:collection:확장 컬렉션으로 큐, 연결 리스트, 해시 맵, 이진 트리 등 고급 컨테이너 포함
- dart:convert:데이터 인코딩/디코딩 도구로 JSON, UTF-8 등 포맷 상호 변환 지원
- dart:math:수학 상수, 연산 함수, 난수 생성 도구
- dart:async:비동기 프로그래밍 기반으로 Future, Stream 등 핵심 비동기 클래스 제공
- dart:typed_data:고효율 고정 길이 바이너리 배열(8비트 부호 없는 정수 등), SIMD 숫자 타입
- dart:io:웹 환경 외 전용 라이브러리로 파일, 소켓, HTTP 등 IO 작업 기능 제공
- dart:ffi:C 언어 스타일 외부 함수 인터페이스로 C 코드와 상호 호출 구현
- dart:isolate:병렬 처리 분리 스레드로 일반 스레드와 달리 메모리를 공유하지 않고 메시지로만 통신
- dart:js_interop / package:web:웹 환경 전용으로 HTML 요소 조작, 브라우저 DOM, JS 상호 호출 지원
내장 핵심 라이브러리 외 구글 공식에서 다수의 보조 패키지를 관리합니다:characters、intl、http、crypto、markdown. 커뮤니티 서드파티 개발자들은 XML, 윈도우 시스템 연동, SQLite, 데이터 압축 등 기능을 지원하는 수천 개의 확장 패키지를 공개했습니다.
Dart 실행 플랫폼
Dart는 다중 컴파일 기술을 통해 멀티 단말 실행을 지원합니다:
1. 네이티브 플랫폼(모바일 / 데스크톱)
JIT(즉시 컴파일) 탑재 Dart 가상머신, AOT(사전 컴파일) 컴파일러 두 가지 컴파일 시스템을 내장하며 기계어를 생성할 수 있습니다.
2. 웹 플랫폼
개발용/배포용 두 가지 컴파일 방식을 제공하며 Dart 코드를 JavaScript 또는 WebAssembly로 변환할 수 있습니다.
Flutter는 Dart 플랫폼 기반 대표 크로스 단말 UI 툴킷으로 완전한 개발 도구 및 화면 라이브러리를 포함하며 iOS, 안드로이드, 맥OS, 윈도우, 리눅스, 웹 앱 개발에 활용 가능합니다.
Dart 네이티브 컴파일(JIT + AOT)
- 개발 단계(JIT):가상머신 증분 컴파일로 핫 리로드 지원, 실시간 성능 모니터링, 완전 디버깅 툴 탑재로 반복 개발 효율이 매우 높음;
- 배포 출시(AOT):ARM /x64 네이티브 기계어로 컴파일되어 앱 시작 속도가 안정적이고 빠름;
- 런타임에 완성도 높은 메모리 관리 기능 탑재:세대별 가비지 컬렉션, 빠른 객체 할당을 지원하며 동시에 Dart 완전 타입 안전 규칙을 엄격히 적용합니다.
Dart 웹 컴파일(JS / WasmGC)
Dart 코드를 JS로 변환해 크롬 V8 엔진 등 브라우저에서 실행하거나 WebAssembly로 컴파일할 수 있습니다:
- 개발용 컴파일 모드:증분 JS 컴파일러로 핫 리로드를 지원해 빠른 디버깅 및 반복 개발 가능;
- 배포용 JS 컴파일:최적화 압축, 데드 코드 제거를 진행해 용량이 적고 실행 효율 높은 JS 출력;
- WasmGC 배포 컴파일:고성능 WebAssembly GC 코드로 컴파일되어 실행 속도가 크게 향상됩니다.