Dart 최종 수정일 2026-06-18 19:02 조회수 5
대시보드

Dart

기본 정보

  • 이름: Dart
  • 분류: 객체지향 프로그래밍 언어
  • 개발사: Google
  • 최초 공개: 2011년
  • 주요 용도: Flutter 앱 개발, 웹 개발, 서버 개발
  • 관련 주제: #Dart #Flutter #객체지향 #모바일개발

개요

Dart는 Google이 개발한 객체지향 프로그래밍 언어이다.

Flutter의 공식 개발 언어로 사용되며, 하나의 코드로 Android, iOS, Windows, macOS, Linux, Web 애플리케이션을 개발할 수 있도록 설계되었다.

간결한 문법과 높은 생산성을 제공하며, JIT(Just-In-Time)와 AOT(Ahead-Of-Time) 컴파일을 모두 지원하여 개발 속도와 실행 성능을 동시에 확보할 수 있다.


주요 특징

  • 객체지향 프로그래밍 지원
  • 정적 타입 지원
  • Null Safety 지원
  • JIT/AOT 컴파일
  • 비동기 프로그래밍 지원
  • Hot Reload 지원(Flutter)
  • 크로스 플랫폼 개발 가능

실행 구조

Dart Source

↓

Compiler

↓

Flutter Engine

↓

Android

iOS

Windows

macOS

Linux

Web

Hello World

void main() {

  print("Hello Dart");

}

변수

String name = "구름";

int age = 30;

double score = 99.5;

bool admin = true;

자동 타입 추론

var title = "Flutter";

final year = 2026;

const pi = 3.141592;

데이터 타입

기본형

  • int
  • double
  • bool
  • String

컬렉션

  • List
  • Set
  • Map

기타

  • dynamic
  • Object

Null Safety

String? nickname;

nickname = "Cloud";

Null이 허용되는 변수는 ?를 사용한다.


조건문

if (age >= 20) {

  print("성인");

} else {

  print("미성년자");

}

반복문

for

for (int i = 0; i < 5; i++) {

  print(i);

}

for-in

List<String> list = [

  "A",

  "B",

  "C"

];

for (var item in list) {

  print(item);

}

함수

int add(int a, int b) {

  return a + b;

}

화살표 함수

int add(int a, int b) => a + b;

간단한 함수를 한 줄로 작성할 수 있다.


클래스

class User {

  String name;

  int age;

  User(this.name, this.age);

}

객체 생성

User user = User(

  "구름",

  30,

);

생성자

class User {

  User();

}

Named Constructor도 지원한다.


상속

class Animal {

}

class Dog extends Animal {

}

믹스인(Mixin)

mixin Fly {

  void flying(){}

}

다중 상속 대신 기능을 재사용할 수 있다.


비동기 처리

Future

Future<String> load() async {

  return "Hello";

}

async / await

Future<void> run() async {

  await load();

}

Flutter 개발에서 매우 자주 사용된다.


컬렉션

List

List<int> numbers = [

  1,

  2,

  3

];

Map

Map<String, dynamic> user = {

  "name":"구름",

  "age":30

};

Set

Set<String> names = {

  "A",

  "B"

};

중복을 허용하지 않는다.


JSON

jsonDecode(response.body);

jsonEncode(data);

REST API 개발에서 자주 사용된다.


예외 처리

try {

}

catch(e){

  print(e);

}

패키지 관리자

Dart는 pub를 사용하여 패키지를 관리한다.

설치

dart pub add dio

Flutter에서는 flutter pub get 명령을 사용한다.


주요 라이브러리

  • dio
  • http
  • intl
  • freezed
  • json_serializable
  • equatable
  • riverpod
  • provider

JIT와 AOT

JIT

  • 개발 시 사용
  • Hot Reload 지원
  • 빠른 디버깅

AOT

  • 배포 시 사용
  • 빠른 실행 속도
  • 최적화된 바이너리 생성

주요 활용 분야

  • Flutter 앱 개발
  • 웹 애플리케이션
  • 서버 개발
  • CLI 프로그램
  • 자동화 도구

장점

  • 문법이 간결함
  • Null Safety 지원
  • 객체지향 설계
  • Flutter와 완벽한 호환
  • 높은 생산성
  • 빠른 실행 성능

단점

  • Flutter 외 사용 사례가 상대적으로 적음
  • 생태계가 JavaScript나 Python보다 작음
  • Dart 문법을 별도로 학습해야 함

실무 메모

실무에서는 다음과 같은 방식이 권장된다.

  • Null Safety 활성화
  • constfinal 적극 활용
  • Feature 기반 폴더 구조 적용
  • async/await 사용
  • freezed로 불변 객체 생성
  • json_serializable로 모델 자동 생성
  • dio로 API 통신
  • Riverpod 기반 상태 관리
  • Clean Architecture 적용
  • 테스트 코드 작성

Dart와 함께 사용하는 기술


대표 개발 도구

  • Visual Studio Code
  • Android Studio
  • IntelliJ IDEA
  • Dart DevTools

관련 문서


출처

  • Dart 공식 홈페이지
  • Dart Language Tour
  • Flutter 공식 문서