Dart 개요

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 상호 호출 지원

내장 핵심 라이브러리 외 구글 공식에서 다수의 보조 패키지를 관리합니다:charactersintlhttpcryptomarkdown. 커뮤니티 서드파티 개발자들은 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로 컴파일할 수 있습니다:

  1. 개발용 컴파일 모드:증분 JS 컴파일러로 핫 리로드를 지원해 빠른 디버깅 및 반복 개발 가능;
  2. 배포용 JS 컴파일:최적화 압축, 데드 코드 제거를 진행해 용량이 적고 실행 효율 높은 JS 출력;
  3. WasmGC 배포 컴파일:고성능 WebAssembly GC 코드로 컴파일되어 실행 속도가 크게 향상됩니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다