꾸준히 하고싶은 개발자

컴파일 런타임 본문

Flutter

컴파일 런타임

프라우스 2024. 5. 4. 22:12

컴파일(Compile)

컴파일(compile)은 프로그래밍 언어로 작성된 소스 코드를 컴퓨터가 실행할 수 있는 바이너리 코드로 변환하는 과정을 말합니다.

고급 수준의 프로그래밍 언어로 작성된 코드를 기계어로 변환하는 과정이 컴파일입니다.

이러한 변환 과정을 통해 컴퓨터가 이해할 수 있는 형태로 소스 코드가 변환되어 실행될 수 있게 됩니다. 컴파일러는 이 변환 작업을 수행하고, 소스 코드를 분석하여 해당 컴퓨터 아키텍처에 맞게 최적화된 기계어 코드를 생성합니다. 이렇게 생성된 기계어 코드는 컴퓨터의 하드웨어에서 직접 실행되어 원하는 작업을 수행하게 됩니다.

 

빌드 vs 컴파일

  • 빌드라는 변환 과정의 큰 틀안에서 동작하는 하나의 과정이 컴파일이다.
  • 여러 과정이 합쳐진것이 빌드이다.
  • 빌드 과정을 도와주는 도구가 Build Tool이다. (Dart의 run)
  • 런을 실행하여 결과를 보여지는 화면에서 이때 Build Tool에 의해 모든 빌드과정이 자동으로 실행된다.
  • 컴파일은 주로 고급 수준의 프로그래밍 언어로 작성된 소스 코드를 저급 수준의 기계어로 변환하는 과정을 의미합니다.
  • 컴파일러는 소스 코드를 분석하고 그에 따라 적절한 목적 코드를 생성합니다.

컴파일 타임과 런타임

  • 컴파일 타임: 컴파일을 진행하는 일련의 과정
  • 런타임: 컴파일 과정을 마친 프로그램이 실행되고 있는 환경 또는 동작되는 동안의 시간

컴파일 에러

  • 프로그램이 실행되기 전 발견되는 에러이다.
  • 컴파일링되는 과정에서 발생하는 에러로 문제를 일으킨 소스코드라인을 지적해준다.

타입 에러
선언 되지 않는 타입 에러  

런타임 에러

  • 프로그램이 실행되는 도중 발생하는 에러이다.
  • 코드가 실행될 때 발견되는데, 논리적 오류나 예상치 못한 상황에 발생한다.

range (범위초과에러)
예외처리
네트워크 연결

 

 

참고) JIT 컴파일, AOT 컴파일

JIT 컴파일: 개발할 때
AOT 컴파일: 배포할때

JIT 컴파일 (just-in-time)

  • 소프트웨어를 효율적으로 개발하려면 코드의 변경된 사항을 화면에 반영해보고 수정하는 반복적인 과정이 빠른 사이클로 진행되어야 한다.
  • 코드의 변경된 사항을 처음부터 다시 컴파일할 필요 없이 즉시 화면에 변경 사항을 반영할 수 있는 핫 리로딩(hot reload) 기능을 제공한다

AOT 컴파일 (ahead-of-time compile)

  • 배포할 때는 미리 컴파일이 돼 있어야 더욱 리소스를 효율적으로 사용할 수 있다.
  • 그래서 배포 시에는 AOT 컴파일 방식을 사용해서 컴파일 하는데, ARM64 x64 기계어로 다트 언어가 직접 컴파일이 되어서 매우 효율적인 실행이 가능하다!

'Flutter' 카테고리의 다른 글

동기 비동기  (0) 2024.05.06
Dart에서 private 변수를 쓰는 이유  (0) 2024.05.02
const and final  (0) 2024.05.01
핫 리로드와 핫 리스타트 차이  (0) 2024.04.29
패키지 라이브러리 플로그인  (0) 2024.04.26