[include(틀:프로그래밍 언어)] || [[파일:Dart 로고.svg|width=300]] || [목차] [clearfix] == 개요 == [[https://dart.dev/|공식 사이트]] {{{#!syntax java void main() { print("Hello, world!"); } }}} [[구글]]이 멀티 플랫폼 상에서 동작되도록 하는 앱을 위해 디자인된 [[프로그래밍 언어]]. 다트는 2011년 10월에 공개되었다. 기본적으로 C언어의 문법과 거의 같으며 Java, C#, Javascript와 같은 기능적 스트럭처를 추가한 언어로, 언급된 언어보다 간결하고 강력한 기능을 지원한다. 모바일, 데스크톱, 서버, 웹 앱 용도에 사용된다. Dart는 DVM(Dart VM)상에서 동작하거나 네이티브 컴파일링을 통해 모바일, 데스크톱, 웹 브라우저, 서버 플랫폼 상에서 어플리케이션 실행을 지원하고 있다. Dart 프로젝트의 목적은 구조적이지만 유연하고 프로그래머들에게 자연스럽고 다양한 종류의 기기에서 동작되도록 하는 것이다. 구글에서 2017년 발표한 크로스플랫폼 앱 프레임워크인 [[Flutter(프레임워크)|Flutter]]가 이 언어를 사용하고 있다. 2023년 1월 기준 최신 안정 버전은 3.0이다. 공식적으로 지원하고 있는 IDE로는 [[안드로이드 스튜디오]], [[IntelliJ IDEA]], [[Visual Studio Code|VS Code]] 등이 있으며 각각의 IDE에서 Dart 및 Flutter 플러그인을 설치하여 다트/플러터 프로그래밍에 필요한 소프트웨어 디자인 환경을 제공하고 있다. 경쟁자인 페이스북, 애플, 모질라 등이 부정적인 입장을 내비쳤으나[* 페이스북의 경우 자사의 개발 플랫폼인 React Native 때문에, 애플의 경우는 자신들의 네이티브 에코시스템에 반하는 크로스플랫폼 전체에 대한 반감 때문에, 모질라는 구글과 공익성 측면에서 충돌하기 때문으로 추정된다.] Dart의 목표 중 하나인 웹서버 및 웹 클라이언트 지원을 발표했다. 최근에는 [[WebAssembly]]까지 지원할 예정으로 Dart를 바이너리 수준으로 웹 브라우저에서 지원할 예정이다. 구글의 차세대 운영체제 [[퓨시아]]가 Dart를 지원할 예정이다.[* 퓨시아는 C/C++/Rust 등등 상당히 많은 수의 다른 언어도 같이 지원한다.] == 특징 == 프로그래머들에게 자연스럽게 다가가는 Dart의 목적에 맞게, 기존 프로그래밍 언어들의 특징들이 많이 보인다. 강력한 타입 시스템, 몇몇([[C언어|C]], [[Java]] 등) 프로그래밍 언어와 같이 main 함수에서 시작한다는 것이 가장 대표적인 부분이다. Dart를 사용하여 간단한 스크립트 또는 완전한 기능의 [[애플리케이션]]을 만들 수 있다. 유연한 컴파일러 기술을 통해 대상 플랫폼 및 목표에 따라 Dart 코드를 다양한 방식으로 실행할 수 있다. - Dart Native: 디바이스(모바일, 데스크톱, 서버, 임베디드 등)를 대상으로 하는 프로그램의 경우 Dart Native를 이용한다. 여기에는 순수 Dart 인터프리터와 JIT(Just-In-Time) 컴파일러, AOT(Ahead-Of-Time) 컴파일러가 모두 포함되어 있다. - Dart Web: 웹을 대상으로 하는 프로그램의 경우 Dart Web을 이용한다. 개발 타임 컴파일러(dartdevc)와 프로덕션 타임 컴파일러(dart2js)가 모두 포함되어 있다. === 디벨로프 워크플로우 (JIT+다트VM) === 반복적인 작업을 위해서는 빠른 개발 주기가 중요하다. 다트 VM에는 pure interpreter(예 : iOS 장치에 필요)와 런타임 최적화를 모두 지원하는 JIT(just-in-time compiler)가 있다. 앱을 프로덕션 환경에 배포 할 준비가 되면 (앱 스토어에 게시하거나 프로덕션 백엔드에 배포 할 때) Dart AOT 컴파일러를 사용하여 네이티브 ARM 또는 AMD64 코드 머신 코드로 앱을 사전에 컴파일 할 수 있다. AOT 컴파일 된 애플리케이션은 즉시 시작하고 원활하게 실행된다. AOT로 컴파일된 코드는 Dart 타입 시스템을 실행하고 빠른 오브젝트 할당 및 생성된 가비지 콜렉터를 사용하여 메모리를 관리하는 효율적인 Dart 런타임에서 실행된다. === 컴파일 to 네이티브 (AOT+런타임) === Dart 네이티브는 모바일, 데스크톱 및 서버 애플리케이션용 네이티브 ARM 또는 X64 시스템 코드로 컴파일 된 Dart 코드를 실행할 수 있게 한다. 모바일 또는 데스크톱, 웹, 임베디드 장치를 대상으로 할 때 Flutter 프레임워크는 다트 네이티브가 제공하는 인기 있는 멀티 플랫폼 UI 툴킷이다. === 웹 디벨로프 워크플로우 (Dart dev 컴파일러) === 다트 dev 컴파일러(dartdevc)는 신속한 처리를 위해 최적화된 Dart-to-JavaScript 컴파일러이다. dartdevc를 직접 사용하는 대신 webdev와 함께 실행, 디버깅 및 빌드와 같은 핵심 개발자 작업을 지원하는 도구와 함께 사용한다. ==== Dart Web ==== Dart Web은 [[JavaScript]]로 구동되는 웹 플랫폼에서 Dart 코드를 실행할 수 있게 한다. Dart Web을 사용하면 Dart 코드를 JavaScript 코드로 컴파일 할 수 있다. 이 코드는 웹 브라우저에서 실행 된다. [[https://dart.dev/tutorials/web/get-started|웹 앱 튜토리얼]] == 관련 문서 == * [[Flutter(프레임워크)|Flutter]] == 외부 링크 == * [[https://en.wikipedia.org/wiki/Dart_(programming_language)|영어 위키백과 Dart 설명]] * [[https://www.tutorialspoint.com/dart_programming/index.htm|Dart Programming Tutorial]] * [[https://www.youtube.com/results?search_query=flutter+web+server|플러터 웹서버 및 웹에서 활용]] * [[https://www.youtube.com/results?search_query=dart+web+server|다트 웹서버 및 웹에서 활용]] [[분류:프로그래밍 언어]][[분류:구글]]