01. Dart란 무엇인가 - pksung1/learn_flutter GitHub Wiki
Dart is a client-optimized language for fast apps on any platform
다트는 모든 플랫폼에서 빠르게앱을 만들수 있는 클라이언트 특화된 언어입니다.
Dart의 세가지 특징
1. Optimized For UI
- 유저 인터페이스를 만드는데 특화된 언어입니다.
- async, await 을 활용한 이벤트 비동기처리가 가능합니다.
- null safe, 스프레드 연산자를 활용한 컬렉션 확장, 컬렉션 if를 활용한 UI커스터마이징을 지원합니다.
2. Productive Development
- 앱을 실행하면서 핫 리로드로 지속적인 변경을 즉시 관찰할수 있습니다.
- 다양한 정적분석도구와 유형시스템을 사용하여 코드를 작성합니다.
- IDE를 통해 Profiling, logging, debugging이 가능합니다.
3. Fast on all platform
- ARM, X86 머신에서 컴파일한 코드는 모바일, 데스크톱, 백엔드, JS 웹까지 가능합니다.
- 다트의 AOT Compile로 사전컴파일이 가능합니다. 빠르게 앱을 시작할수 있습니다.
- 자바스크립트용 컴파일러로 웹을 배포할수 있습니다.
- 단일 프로그래밍언어를 활용해 백엔드 코드도 작성할수 있습니다.
Dart:library
다트는 프로그래밍 작업에 도움되는 풍부한 핵심 라이브러리가 있습니다.
- 다트의 유형, 컬렉션 등 기타핵심 기능 (dart:core)
- Queue, Linked List, Binary Tree 같은 풍부한 컬렉션 (dart:collection)
- JSON, UTF-8 포맷등 데이터표현 유형 (dart:convert)
- 수학 (dart:math)
- 웹이 아닌 파일스트림, 소켓, I/O 작업 (dart:io)
- Future, Stream 같은 비동기 처리 (dart:async)
- 고정크기 데이터(부호 없는 8바이트정수) SIMD 숫자유형 (dart:typed_data)
- C스타일 인터페이스를 제공하는 다른 코드와의 상호운용성을 위한 외부함수 인터페이스 (dart:ffi)
- isolate(격리) 를 활용한 동시 프로그래밍 - 스레드와 유사하지만 메모리를 공유하지 않고 메시지를 통해서만 통신하는 isolate worker (dart:isolate)
- 브라우저, DOM과 상호작용할때 쓰는 리소스 (dart:html)
Dart:Platform
모바일 및 데스크톱 장치
JIT 컴파일이 포함된 Dart VM과 AOT 컴파일러를 내장하고 있습니다.
웹플랫폼
개발시간 컴파일러 (dartdevc), 프로덕션 시간 컴파일러 (dart2js)를 제공합니다.
Flutter는 Dart플랫폼으로 구동되는 인기있는 다중 플랫폼 UI 툴킷입니다.
개발시 JIT를 활용하고, 프로덕션은 AOT compiler를 활용합니다.
참고
AOT Compile(ahead-of-time compile)
C, C++같이 컴파일 후 실행할수 있는 컴파일방식 입니다. dart에서는 product빌드시 AOT compile을 합니다.
JIT Compile(Just in time compile)
즉시 컴파일 및 실행을 한다는 뜻으로, 핫 리로드 활성화, 풍부한 디버깅을 위한 DevTool등의 지원을 받을 수 있습니다. 개발환경에서 사용합니다.
Dart Garbage collector
빌드 후 런타임 안의 가비지 컬렉터가 어떤 일을 하는지 설명되있는 글입니다.