Dart의 Compile Platform

2023. 8. 3. 21:00IT/Concept

반응형

 

Dart 언어는 만능이다. Dart로 웹페이지, 안드로이드 모바일 앱, IOS 모바일 앱, 윈도우 데스크탑 앱, macOS 데스크탑 앱을 제작할 수 있으며, 심지어 백엔드 서버 코드로도 사용가능하다. 이게 가능한 이유는 Dart가 Javascript로 완전한 컴파일이 가능하기 때문이다. 사실 Javascript야말로 진정한 만능 언어다. Javascript로 모든 서비스를 개발하고 업무를 처리할 수 있다. 그리고 그러한 Javascript 개발을 특히 서비스의 UI적인 측면에서 더욱 쉽게 활용할 수 있도록 하는 Dart 또한 만능 언어라 할 수 있다.


1. JIT vs AOT

JIT(Just in Time) 컴파일 방식은 파일을 실행할 때 컴파일을 진행한 후, 그렇게 바뀐 저수준 언어로 작업을 수행하는 방식을 말한다. JIT는 실행 시점에 바이트코드를 기계어로 번역한다. 때문에 실행속도가 AOT에 비해 상대적으로 느리며 CPU 사용량이 높은 편이나, 앱을 설치하거나 할 때 AOT에 비해 빠르다. Java의 JVM(Java Virtual Machine), Python의 CPython 등이 바로 JIT 컴파일러에 해당한다.

 

AOT(Ahead of Time)는 소스 코드를 미리 컴파일하는 방식이다. AOT를 활용할 경우 코드는 설치 시점에 기계어로 번역된다. 때문에 실행 속도가 JIT에 비해 빠른 편이며 CPU사용량 또한 낮다. 하지만 설치 시 번역이 이루어지기 때문에 앱 설치 속도가 느린 편이다. C, C++ 등은 AOT를 활용해 작업을 수행한다.

 

2. Dart의 컴파일 플랫폼

Dart 코드는 Native platform을 통해 모바일이나 데스크탑 앱으로 컴파일 가능하고, Web platform을 통해 웹으로 컴파일 가능하다. 이를 그림으로 보기 좋게 나타내면 다음과 같이 표현할 수 있다.

By Mesotes

앱을 개발을 할 때 Dart는 가상머신 위에서 JIT 컴파일 방식을 이용한다. 이를 통해 변경 사항을 처음부터 다시 컴파일할 필요 없이 변경 부분만 즉시 화면에 렌더링한다. 이러한 기능을 hot reloading이라고 한다. 이외에도 실시간으로 디버깅을 할 수 있는 등, 개발자는 JIT를 사용하는 Dart 덕분에 우수한 개발 경험을 누릴 수 있다. 반면 배포 시에는 AOT 컴파일 방식을 활용한다. 때문에 사용자는 미리 컴파일된 소스코드를 받아 빠르게 서비스를 사용할 수 있게 된다.


더 자세히 알아보기

관련서적: Dart overview

 

 

 

 

-학습을 진행하며 남기는 지식 포스팅-

 

-부족한 설명이 있다면 부디 조언 부탁드립니다-

 

 

 

 

이 포스팅은 쿠팡 파트너스 활동의 일환으로,

이에 따른 일정액의 수수료를 제공받습니다

반응형