728x90
다트에서 컴파일은 Dart VM에서 JIT 컴파일 사용하여 Dart 언어로 작성된 소스 코드를 컴퓨터가 실행할 수 있는 형태로 변환하는 과정
이 과정에는 코드의 어휘 및 구문 분석, 의미 검증, 중간 표현 생성, 코드 최적화, 그리고 최종 실행 코드 생성이 포함
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
컴파일은 프로그래밍 언어로 작성된 코드(소스 코드)를 컴퓨터가 실행할 수 있는 형태로 변환하는 과정입니다.컴파일의 핵심 개념:
- 변환 과정: 사람이 읽을 수 있는 코드 → 기계가 실행할 수 있는 코드
- 컴파일러의 역할:
- 소스 코드 구문 분석
- 오류 검사
- 최적화
- 기계어 또는 중간 코드로 변환
- 컴파일 유형:
- JIT(Just-In-Time): 프로그램 실행 중에 필요한 부분만 컴파일 (개발 모드에서 주로 사용)
- AOT(Ahead-Of-Time): 실행 전 전체 코드를 미리 컴파일 (배포 모드에서 주로 사용)
- 플러터/Dart에서의 컴파일:
- 개발 시: Dart VM에서 JIT 컴파일 사용 (핫 리로드 지원)
- 릴리스 시: AOT 컴파일로 네이티브 코드 생성 (성능 최적화)
컴파일은 소스 코드를 컴퓨터가 이해할 수 있는 언어로 번역하는 과정이라고 생각하시면 됩니다.
ㅡㅡㅡㅡㅡ
JIT 컴파일과 컴파일 과정에 대해 설명해 드리겠습니다:JIT(Just-In-Time) 컴파일:
- 프로그램이 실행되는 동안 필요한 시점에 코드를 컴파일하는 방식
- Dart VM은 개발 모드에서 JIT 컴파일을 사용해 코드를 실행
- 장점: 빠른 개발 사이클(핫 리로드 가능), 실행 중 코드 최적화
- 단점: 초기 실행 속도가 느릴 수 있음\
ㅡㅡㅡㅡㅡㅡㅡ
Dart의 컴파일 과정:
- 어휘 분석(Lexical Analysis):
- 소스 코드를 토큰(키워드, 식별자, 연산자 등)으로 분리
- 구문 분석(Parsing):
- 토큰을 분석하여 추상 구문 트리(AST)를 생성
- 의미 분석(Semantic Analysis):
- 타입 체크, 변수 선언 확인 등 코드의 의미 검증
- 중간 코드 생성(IR Generation):
- Dart VM이 이해할 수 있는 중간 표현(IR) 코드 생성
- 최적화(Optimization):
- 코드 실행 효율을 높이기 위한 다양한 최적화 수행
- 코드 생성(Code Generation):
- JIT 모드: 실행 중에 필요한 코드만 기계어로 변환
- AOT 모드: 실행 전에 모든 코드를 기계어로 변환
JIT 컴파일에서는 위 과정이 프로그램 실행 중에 동적으로 이루어지며, 특히 플러터 개발 모드에서는 코드 변경 시 변경된 부분만 빠르게 재컴파일하여 핫 리로드를 가능하게 합니다.
728x90
'개념' 카테고리의 다른 글
컴파일-JIT , AOT (0) | 2025.04.12 |
---|---|
플러터에서 엔진? (1) | 2025.04.12 |
핫리로드,핫리스타트,일반 빌드의 차이점 (0) | 2025.04.12 |
앱의 생명주기 (0) | 2025.04.12 |
아키텍처란?- mvc,mvvm,클린아키텍쳐 (0) | 2025.04.12 |