-
Dart #0. 시작프론트/Dart 2024. 10. 25. 19:25
Dart 언어 소개
Dart는 구글(Google)에서 개발한 오픈소스 프로그래밍 언어로, 주로 웹, 모바일, 데스크톱 애플리케이션 개발에 사용된다. 특히 Flutter 프레임워크의 기본 언어로 활용되며, 크로스플랫폼 개발에 강점을 가진다. 정적 타입과 동적 타입을 모두 지원하며, 빠른 컴파일과 간결한 문법을 제공한다.
Dart의 주요 특징
- 크로스플랫폼 개발
하나의 코드로 iOS, Android, 웹, 데스크톱 애플리케이션을 동시에 개발할 수 있다.
Flutter와 함께 사용하면 네이티브 성능을 제공하며, 일관된 사용자 경험을 구현한다. - AOT와 JIT 컴파일
AOT(Ahead Of Time)는 앱을 미리 컴파일해 빠른 실행 속도를 제공한다.
JIT(Just In Time)는 개발 중 실시간 컴파일로 빠르게 결과를 확인할 수 있게 한다. - 비동기 프로그래밍 지원
async/await 키워드를 사용해 비동기 작업을 쉽게 처리할 수 있다.
네트워크 요청이나 파일 I/O 등 오래 걸리는 작업도 효율적으로 다룰 수 있다. - null safety
변수에 null이 할당되는 것을 방지하여 런타임 오류를 줄이는 기능이다.
Dart의 기본 문법 예제
Hello World 출력
void main() { print('Hello, Dart!'); }
비동기 프로그래밍 예제
import 'dart:async'; void main() async { print('1. 작업 시작'); await Future.delayed(Duration(seconds: 2)); print('2. 2초 후 작업 완료'); print('3. 모든 작업 완료'); }
위 코드에서는
Future.delayed
를 사용해 2초 후 작업을 완료한다.await
키워드를 통해 비동기 작업을 동기적으로 처리할 수 있다.Dart와 JavaScript의 비교
특징 Dart JavaScript 사용 목적 모바일/데스크톱/웹 개발 웹 및 서버 개발 (Node.js) 프레임워크 Flutter React, Angular, Vue.js 컴파일 방식 AOT & JIT 인터프리터 방식 타입 시스템 정적 + 동적 타입 지원 동적 타입 Dart를 사용하는 이유
- Flutter와의 완벽한 통합
Flutter와 결합해 네이티브 성능과 일관된 UI를 제공한다. - 빠른 개발 속도
JIT 컴파일을 통해 개발 중 빠르게 피드백을 받을 수 있다. - 미래지향적인 언어
크로스플랫폼 개발의 트렌드를 이끌며, 구글의 지원을 받는다.
AOT(Ahead-of-Time)와 JIT(Just-in-Time) 컴파일
AOT와 JIT는 코드 컴파일 방식에서의 차이를 설명하는 개념이다. 두 가지 방식은 성능, 개발 속도, 사용 시점에서 차이가 있으며, 각각의 장단점이 있다. 아래에서는 AOT와 JIT의 개념과 특징을 구체적으로 설명한다.
AOT (Ahead-of-Time) 컴파일
AOT 컴파일은 코드를 실행하기 전에 미리 컴파일하는 방식이다. 이 방식에서는 개발자가 작성한 소스 코드가 바이너리 또는 기계어로 변환된 뒤 배포된다. Dart에서 AOT는 주로 모바일 앱을 배포할 때 사용된다.
AOT의 특징
- 빠른 실행 속도: 미리 컴파일된 상태로 실행되기 때문에 런타임에서 별도의 컴파일이 필요하지 않아 빠르게 실행된다.
- 네이티브 성능: 컴파일된 코드가 기계어에 가까워 성능이 뛰어나다.
- 파일 크기 증가: 컴파일된 바이너리 파일이 커질 수 있다.
- 개발 중 속도 제한: 코드 변경 후에는 다시 컴파일해야 하므로 개발 중 피드백이 느리다.
AOT 컴파일의 사용 예시
- 모바일 앱 배포: iOS와 Android 앱을 최적화된 성능으로 제공하기 위해 사용된다.
- 임베디드 시스템: 제한된 자원에서 빠르게 실행되는 프로그램이 필요할 때 사용된다.
JIT (Just-in-Time) 컴파일
Dart VM
JIT 컴파일은 코드를 실행하는 시점에 컴파일하는 방식이다. 즉, 런타임 중에 소스 코드가 기계어로 변환된다. Dart에서는 개발 중 빠른 피드백을 위해 JIT 컴파일을 주로 사용한다.
JIT의 특징
- 빠른 개발 피드백: 코드를 변경하고 즉시 실행할 수 있어 개발 중 편리하다.
- 최적화된 성능 부족: 런타임에 컴파일되므로 AOT에 비해 성능이 떨어질 수 있다.
- 런타임 비용 발생: 실행 중 컴파일이 이루어지기 때문에 메모리와 CPU 사용량이 늘어난다.
- 개발 편의성 제공: 디버깅과 코드 테스트가 용이하다.
JIT 컴파일의 사용 예시
- 개발 환경에서의 사용: Flutter로 앱을 개발할 때 JIT 방식을 사용해 빠르게 코드를 수정하고 테스트할 수 있다.
- 스크립트 언어: JavaScript나 Python 같은 언어는 런타임 중에 컴파일된다.
AOT와 JIT의 비교
구분 AOT 컴파일 (Ahead-of-Time) JIT 컴파일 (Just-in-Time) 컴파일 시점 실행 전 실행 중 성능 빠른 실행 속도 느릴 수 있음 개발 속도 느림 (재컴파일 필요) 빠름 (즉각 피드백) 파일 크기 크다 작다 주 사용처 배포용 앱 개발 및 테스트 Dart에서의 AOT와 JIT 활용
AOT는 앱을 최종적으로 배포할 때 사용되며, Dart 코드는 네이티브 코드로 미리 컴파일되어 성능이 최적화된 상태로 배포된다. JIT는 개발 중에는 빠르게 코드를 수정하고 실행할 수 있어 Flutter의 Hot Reload 기능을 가능하게 한다.
'프론트 > Dart' 카테고리의 다른 글
Dart#3. 함수 (3) 2024.11.03 Dart#2. 자료형 (0) 2024.10.29 Dart #1. Hello World (0) 2024.10.27 - 크로스플랫폼 개발