플러터에서 사용하는 언어인 다트를 알아보겠습니다.
구글이 개발한 다트 프로그래밍 언어(Dart programming language)는 2011년 10월 GOTO 컨퍼런스에서 공개되었습니다. 구글은 크롬에 Dart 가상 머신(virtual machine)을 심어 자바스크립트를 대체하려는 시도를 했지만 웹 개발에 혼란을 가져온다는 여론을 극복하지 못하고 결국 다트 언어를 자바스크립트로 완전 컴파일 가능하게 만드는 데 그쳤습니다. 비록 웹에서 자바스크립트를 대체하겠다는 목적에는 실패했지만 현재 플러터의 인기에 힘입어 모바일 영역에서 다트 언어가 큰 각광을 받고 있습니다.
원래 다트 언어는 웹에서 사용되던 언어였습니다. 자바스크립트(Javascript) 언어로 완전한 컴파일이 가능하며 네이티브 플랫폼과 마찬가지로 효율적인 개발을 위해 증분 컴파일을 지원합니다. 다트는 대표적으로 두 가지 플랫폼으로 컴파일됩니다. 모바일이나 데스크톱 기기를 타기팅하는 네이티브 플랫폼(native platform)과 웹을 타기팅하는 웹 플랫폼(web platform)으로 컴파일할 수 있습니다.
다트 네이티브 플랫폼은 JIT 컴파일 방식과 AOT 컴파일 방식을 사용합니다. 소프트웨어를 효율적으로 개발하려면 코드의 변경된 사항을 화면에 반영해보고 수정하는 반복적인 과정이 빠른 사이클로 진행돼야 합니다. JIT 컴파일 방식은 다트 가상머신에서 제공하는 기능으로 코드의 변경된 사항을 처음부터 다시 컴파일할 필요 없이 즉시 화면에 변경 사항을 반영할 수 있는 핫 리로딩(hot reload) 기능과 실시간으로 메트릭스(metrics)를 확인할 수 있는 기능, 디버깅 기능을 제공합니다.
개발하는 도중에는 하드웨어 리소스를 적게 사용하는 것보다 빠르게 개발할 수 있는 효율이 중요하기 때문에 JIT 컴파일 방식을 사용하지만 소프트웨어를 배포할 때는 미리 컴파일이 돼 있어야 더욱 리소스를 효율적으로 사용할 수 있습니다. 그래서 배포 시에는 AOT 컴파일 방식을 사용해서 컴파일합니다. AOT 컴파일 방식을 사용하면 ARM64나 x64 기계어로 다트 언어가 직접 컴파일이 되어서 매우 효율적으로 프로그램을 실행할 수 있습니다.
지금까지 다룬 다트의 장점을 요약해두었으니 참고하기 바랍니다.
- 다트 언어는 UI(User Interface)를 제작하는 데 최적화되어 있습니다. 완전한 비동기 언어이며 이벤트 기반입니다. 그리고 아이솔레이트(Isolate)를 이용한 동시성 기능도 제공해줍니다.
- 널 세이프티(Null Safety), 스프레드 기능(Spread Operator), 콜렉션 if문(Collection If) 등 효율적으로 UI를 코딩할 수 있는 기능들을 제공해줍니다.
- 효율적인 개발 환경을 제공해줍니다. 핫 리로딩을 통해 코드의 변경사항을 즉시 화면에 반영해볼 수 있습니다.
- 멀티 플랫폼에서 로깅하고, 디버깅하고, 실행할 수 있습니다.
- AOT 컴파일이 가능하기 때문에 어떤 플랫폼에서든 빠른 속도를 자랑합니다.
- 자바스크립트로의 완전한 컴파일을 지원합니다.
- 백엔드 프로그래밍을 지원합니다.
플러터는 다트 언어를 사용합니다. 플러터로 앱을 원활히 개발하려면 다트를 탄탄하게 아는 것이 중요합니다. 다트에 대한 더 자세한 내용은 [[Must Have 코드팩토리의 플러터 프로그래밍]에서 확인해보세요. 또 다른 자료를 찾아보지 않아도 될 정도로 깊이 있게 다트를 다룹니다. 1장에서 기초 문법, 2장에서 객체지향 프로그래밍, 3장에서 비동기 프로그래밍을 학습합니다.
책 내용 중 궁금한 점, 공부하다가 막힌 문제 등 개발 관련 질문이 있으시다면
언제나 열려있는 <Hust Have 코드팩토리의 플러터 프로그래밍> 저자님의
카카오채널로 질문해주세요!