[Flutter] 알면 별거 없는 다트 언어 컴파일 플랫폼(JIT 컴파일 방식, AOT 컴파일 방식)

이 글은 [Must Have 코드팩토리의 플러터 프로그래밍]에서 발췌했습니다.
골든래빗 출판사

플러터에서 사용하는 언어인 다트를 알아보겠습니다.

구글이 개발한 다트 프로그래밍 언어(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 코드팩토리의 플러터 프로그래밍> 저자님의

카카오채널로 질문해주세요!

최지호(코드팩토리)

임페리얼 칼리지 런던을 졸업하고 계리 컨설팅 회사 밀리만(Milliman) 한국 지사에서 소프트웨어 엔지니어로 일했습니다. 현재 주식회사 코드팩토리를 창업하여 개발을 하면서 초보자뿐만 아니라 현직 개발자에게도 유용한 개발 강의를 제작합니다. 밀리의서재 플러터 전환 차세대 프로젝트를 리드했습니다.

Leave a Reply

©2020 GoldenRabbit. All rights reserved.
상호명 : 골든래빗 주식회사
(04051) 서울특별시 마포구 양화로 186, 5층 512호, 514호 (동교동, LC타워)
TEL : 0505-398-0505 / FAX : 0505-537-0505
대표이사 : 최현우
사업자등록번호 : 475-87-01581
통신판매업신고 : 2023-서울마포-2391호
master@goldenrabbit.co.kr
개인정보처리방침
배송/반품/환불/교환 안내