Dart 란
Dart 란 Google이 개발한 오픈소스 프로그래밍 언어로 2011년에 처음 공개되어 어떤 플랫폼이든 빠른 앱 개발을 위해 클라이언트에 최적화된 언어이다.
많은 프로그래밍 언어들이 존재하는 이유는 제각각 추구하는 방향성이나 목표가 있기 때문인데 다트는 앱 프레임워크를 개발하기 위한 가장 생산적인 프로그래밍 언어를 제공하는 것이 목표이다. 다트가 Flutter 프레임워크 공식 개발언어인 이유도 여기에 있다.
다양하게 활용이 가능하지만 대부분 Flutter 를 개발하기 위해 사용한다.
Dart 언어 특징
다트는 주로 Java 와 많이 비교되고 비슷한 점이 많다.
- 정적 타입 언어지만 타입 추론도 지원
- JIT(Just-In-Time)와 AOT(Ahead-Of-Time) 컴파일 모두 지원
- 멀티 플랫폼 지원 (웹, 모바일, 데스크톱)
정적 타입 언어란
정적 타입 언어란 변수의 타입이 컴파일 시점에 결정되는 언어로 한번 선언된 변수의 타입은 변경이 불가능하다.
JIT(Just-In-Time) 컴파일이란
실행 시점에 컴파일하는 것으로 핫 리로드(Hot Reload)가 가능하여 개발 환경에서 주로 사용된다. 대신 메모리 사용량이 많다.
AOT(Ahead-Of-Time) 컴파일이란
실행 전에 미리 컴파일하는 것으로 주로 프로덕션 환경에서 사용된다.
기본 문법
기본 구조
다트도 자바와 마찬가지로 void main() { ... }
처럼 최상위 레벨에 main 함수가 필요하다.
void main() {
print('Hello, World!');
}
변수 선언
다트도 기본적으로 다른 언어들과 비슷하게 타입 + 변수 명 = 변수 값 으로 구성된다.var
를 통해 타입 추론이 가능하며 명시적으로 타입을 선언해 줄 수도 있다.
타입뒤에 ?
을 붙여 Null Safety 을 적용할 수 있다. 만약 non-nullable 이면서 변수 초기화를 미루고 싶다면 타입 앞에 late
키워드를 붙여주면 된다.
상수는 final
과 const
사용이 가능한데 final
은 런타임 시점에 값이 결정되고 const
는 컴파일 시점에 값이 결정된다.
var name = 'Noah';
String? nullaleName = null;
late String lateName;
lateName = 'Noah';
타입
타입뿐만 아니라 전체적인 문법들이 거의 자바와 비슷하다.
타입은 int
, double
, num
(int
, 와 double
모두 포함), String
, bool
, List
, Set
, Map
등이 있다.
연산자
기본적인 연산자 모두 사용 가능하고 삼항 연산자도 사용이 가능하다.
타입의 경우 as
로 타입 캐스트를 하거나 is
로 타입 확인이 가능하다.
값비교는 ==
로 모두 가능하지만 객체를 비교할 때는 identical(str1, str2)
형태로 사용해야 한다.
- 참고 레퍼런스: https://dart.dev/