Dart(프로그래밍 언어)

덤프버전 : r20240101


프로그래밍 사이트 선정 프로그래밍 언어 순위 목록

⠀[ IEEE Spectrum 2021 ]⠀
{{{#!wiki style="display: inline-block; margin: 0 0 -5px; min-width: 25%"
⠀[ Stack Overflow 2022 ]⠀
{{{#!wiki style="display: inline-block; margin: 0 0 -5px; min-width: 25%">
⠀[ TIOBE 2023 ]⠀

프로그래밍 언어 목록 · 분류 · 문법

파일:Dart 로고.svg

1. 개요
2. 특징
2.1. 디벨로프 워크플로우 (JIT+다트VM)
2.2. 컴파일 to 네이티브 (AOT+런타임)
2.3. 웹 디벨로프 워크플로우 (Dart dev 컴파일러)
2.3.1. Dart Web
3. 관련 문서
4. 외부 링크



1. 개요[편집]


공식 사이트
void main() {
  print("Hello, world!");
} 

구글이 멀티 플랫폼 상에서 동작되도록 하는 앱을 위해 디자인된 프로그래밍 언어. 다트는 2011년 10월에 공개되었다. 기본적으로 C언어의 문법과 거의 같으며 Java, C#, Javascript와 같은 기능적 스트럭처를 추가한 언어로, 언급된 언어보다 간결하고 강력한 기능을 지원한다. 모바일, 데스크톱, 서버, 웹 앱 용도에 사용된다. Dart는 DVM(Dart VM)상에서 동작하거나 네이티브 컴파일링을 통해 모바일, 데스크톱, 웹 브라우저, 서버 플랫폼 상에서 어플리케이션 실행을 지원하고 있다. Dart 프로젝트의 목적은 구조적이지만 유연하고 프로그래머들에게 자연스럽고 다양한 종류의 기기에서 동작되도록 하는 것이다. 구글에서 2017년 발표한 크로스플랫폼 앱 프레임워크인 Flutter가 이 언어를 사용하고 있다. 2023년 1월 기준 최신 안정 버전은 3.0이다.

공식적으로 지원하고 있는 IDE로는 안드로이드 스튜디오, IntelliJ IDEA, VS Code 등이 있으며 각각의 IDE에서 Dart 및 Flutter 플러그인을 설치하여 다트/플러터 프로그래밍에 필요한 소프트웨어 디자인 환경을 제공하고 있다.

경쟁자인 페이스북, 애플, 모질라 등이 부정적인 입장을 내비쳤으나[1] Dart의 목표 중 하나인 웹서버 및 웹 클라이언트 지원을 발표했다. 최근에는 WebAssembly까지 지원할 예정으로 Dart를 바이너리 수준으로 웹 브라우저에서 지원할 예정이다. 구글의 차세대 운영체제 퓨시아가 Dart를 지원할 예정이다.[2]


2. 특징[편집]


프로그래머들에게 자연스럽게 다가가는 Dart의 목적에 맞게, 기존 프로그래밍 언어들의 특징들이 많이 보인다. 강력한 타입 시스템, 몇몇(C, Java 등) 프로그래밍 언어와 같이 main 함수에서 시작한다는 것이 가장 대표적인 부분이다.

Dart를 사용하여 간단한 스크립트 또는 완전한 기능의 애플리케이션을 만들 수 있다. 유연한 컴파일러 기술을 통해 대상 플랫폼 및 목표에 따라 Dart 코드를 다양한 방식으로 실행할 수 있다.

- Dart Native: 디바이스(모바일, 데스크톱, 서버, 임베디드 등)를 대상으로 하는 프로그램의 경우 Dart Native를 이용한다. 여기에는 순수 Dart 인터프리터와 JIT(Just-In-Time) 컴파일러, AOT(Ahead-Of-Time) 컴파일러가 모두 포함되어 있다.
- Dart Web: 웹을 대상으로 하는 프로그램의 경우 Dart Web을 이용한다. 개발 타임 컴파일러(dartdevc)와 프로덕션 타임 컴파일러(dart2js)가 모두 포함되어 있다.


2.1. 디벨로프 워크플로우 (JIT+다트VM)[편집]


반복적인 작업을 위해서는 빠른 개발 주기가 중요하다. 다트 VM에는 pure interpreter(예 : iOS 장치에 필요)와 런타임 최적화를 모두 지원하는 JIT(just-in-time compiler)가 있다.

앱을 프로덕션 환경에 배포 할 준비가 되면 (앱 스토어에 게시하거나 프로덕션 백엔드에 배포 할 때) Dart AOT 컴파일러를 사용하여 네이티브 ARM 또는 AMD64 코드 머신 코드로 앱을 사전에 컴파일 할 수 있다. AOT 컴파일 된 애플리케이션은 즉시 시작하고 원활하게 실행된다.

AOT로 컴파일된 코드는 Dart 타입 시스템을 실행하고 빠른 오브젝트 할당 및 생성된 가비지 콜렉터를 사용하여 메모리를 관리하는 효율적인 Dart 런타임에서 실행된다.


2.2. 컴파일 to 네이티브 (AOT+런타임)[편집]


Dart 네이티브는 모바일, 데스크톱 및 서버 애플리케이션용 네이티브 ARM 또는 X64 시스템 코드로 컴파일 된 Dart 코드를 실행할 수 있게 한다. 모바일 또는 데스크톱, 웹, 임베디드 장치를 대상으로 할 때 Flutter 프레임워크는 다트 네이티브가 제공하는 인기 있는 멀티 플랫폼 UI 툴킷이다.


2.3. 웹 디벨로프 워크플로우 (Dart dev 컴파일러)[편집]


다트 dev 컴파일러(dartdevc)는 신속한 처리를 위해 최적화된 Dart-to-JavaScript 컴파일러이다. dartdevc를 직접 사용하는 대신 webdev와 함께 실행, 디버깅 및 빌드와 같은 핵심 개발자 작업을 지원하는 도구와 함께 사용한다.


2.3.1. Dart Web[편집]


Dart Web은 JavaScript로 구동되는 웹 플랫폼에서 Dart 코드를 실행할 수 있게 한다. Dart Web을 사용하면 Dart 코드를 JavaScript 코드로 컴파일 할 수 있다. 이 코드는 웹 브라우저에서 실행 된다.

웹 앱 튜토리얼



3. 관련 문서[편집]




4. 외부 링크[편집]




파일:크리에이티브 커먼즈 라이선스__CC.png 이 문서의 내용 중 전체 또는 일부는 2023-10-23 13:50:53에 나무위키 Dart(프로그래밍 언어) 문서에서 가져왔습니다.

[1] 페이스북의 경우 자사의 개발 플랫폼인 React Native 때문에, 애플의 경우는 자신들의 네이티브 에코시스템에 반하는 크로스플랫폼 전체에 대한 반감 때문에, 모질라는 구글과 공익성 측면에서 충돌하기 때문으로 추정된다.[2] 퓨시아는 C/C++/Rust 등등 상당히 많은 수의 다른 언어도 같이 지원한다.