본문 바로가기
Dev/Flutter

[Flutter] 학습(2) Flutter와 Dart 언어의 컴파일 플랫폼

by steady.dev 2023. 3. 3.

Flutter는 Google에서 개발한 모바일 애플리케이션 개발 프레임워크이며, Dart 언어를 사용합니다.

 

Dart 언어는 Just-in-Time(JIT) 컴파일러와 Ahead-of-Time(AOT) 컴파일러 두 가지 방식을 지원합니다.

 

1.Just-in-Time(JIT) 컴파일러

JIT 컴파일러는 코드를 실행하기 전에 컴파일합니다. 이를 통해 코드를 빠르게 수정하고 테스트할 수 있습니다.

JIT 컴파일러는 개발 중인 애플리케이션을 빌드할 때 사용되며, 개발자가 변경 사항을 빠르게 반영할 수 있도록 도와줍니다.

 

1-1. 장, 단점

장점
  1. 개발자가 변경한 코드를 빠르게 확인할 수 있습니다.
  2. 동적 타입 체크로 인해 코드 작성 시간을 단축할 수 있습니다.
  3. 메모리 사용량이 적습니다.
  4. 플랫폼 독립성이 높아서 여러 운영체제에서 사용이 가능합니다.
  5. 디버깅이 쉽습니다.
단점
  1. 런타임에 코드를 컴파일하므로 초기 실행 속도가 느립니다.
  2. 반복되는 코드에 대한 최적화가 제한됩니다.
  3. AOT(Ahead-of-Time) 컴파일러보다 실행 속도가 느릴 수 있습니다.
  4. 보안에 취약할 수 있습니다.

 

1-2. 사용 언어 예

JIT 컴파일러를 사용하는 언어들은 Python, Ruby, JavaScript 등입니다. Python과 Ruby는 인터프리터 언어이지만, JIT 컴파일러를 사용해 실행 속도를 높일 수 있습니다. JavaScript는 웹 브라우저에서 실행되는 언어로, JIT 컴파일러를 사용해 빠른 실행 속도를 보장합니다.

 

 

2. AOT 컴파일러

AOT 컴파일러는 코드를 실행하기 전에 미리 컴파일합니다. 이를 통해 더 빠르고 안정적인 실행 속도를 보장할 수 있습니다.

AOT 컴파일러는 Flutter 애플리케이션을 배포하기 위해서 사용됩니다.

 

2-1. 장, 단점

장점
  1. 초기 실행 속도가 빠릅니다.
  2. 최적화된 코드를 생성하기 때문에 실행 속도가 빠릅니다.
  3. 컴파일 후에는 더 이상 컴파일할 필요가 없습니다.
  4. 코드가 안전하고 보안성이 높습니다.
단점
  1. 개발자가 변경한 코드를 바로 확인할 수 없습니다.
  2. 메모리 사용량이 크며, 덩치가 큰 파일을 생성할 수 있습니다.
  3. 플랫폼에 종속적이며, 특정 플랫폼에서만 실행할 수 있습니다.
  4. 디버깅이 어려울 수 있습니다.

 

2-2. 사용 언어 예

AOT 컴파일러를 사용하는 언어들은 C, C++, Swift, Rust, Go, Kotlin 등이 있습니다. 이들 언어는 컴파일러에 의해 실행 파일을 생성하여 실행되므로, 초기 실행 속도가 빠르고 안정성이 높습니다.

 

 
 

3. 정리

Flutter는 JIT와 AOT 컴파일러를 모두 지원합니다. 개발자가 개발 중인 애플리케이션을 빠르게 테스트하고 수정할 수 있도록 JIT 컴파일러를 제공하며, 안정적이고 빠른 실행 속도를 보장하기 위해 AOT 컴파일러를 사용합니다.

Dart 언어는 크로스 플랫폼 언어로, Windows, macOS, Linux 등 다양한 운영체제에서 실행될 수 있습니다. 또한, Dart 언어는 JIT와 AOT 컴파일러를 모두 지원하기 때문에 빠른 실행 속도와 개발 편의성을 모두 충족시킬 수 있습니다.

댓글