Flutter로 앱 만들고 유지보수 1년 간 해보기 프로젝트 -1 (플러터는 어떤 방식으로 컴파일 되는가)

박경현·2023년 10월 28일
0

한 프로그램을 혹은 어플리케이션을 좀 오래 유지보수 해보고 개선시켜 보고 싶다는 생각이 들었다.
그래서 플러터로 앱을 만든 후 유지보수를 꾸준히 해보는걸 목표로 해보려고 한다!

간단한 계획
11월 - 책 3번 독파 및 플러터 완전 이해
12월 - 어플 설계 및 대회 나가서 증명하기
1월 ~ 2월- 대회 관련 어플을 만들어 홍보하기
3월 - 유지보수 시작 및 다양한 개발자 및 마케터들에게 커피챗을 하며 피드백 받기

그러기 위해 플러터를 먼저 완벽히 이해해보려고 한다!!

플러터 플랫폼 - 플러터는 어떤 방식으로 컴파일 되는가

현재 플러터는 Dart라는 언어를 사용해 코드를 작성한다!
그렇다면 Dart가 무엇이고 이거의 장점은 무엇이길래 따로 언어를 만들었을까?

Dart란 무엇이고 Dart의 장점

플러터 개발팀은 초기에 12개 이상의 언어를 평가하여 플러터 UI 개발을 위해서 다트가 가장 적합하다는 결론을 내렸다고 합니다

다트는 모든 플랫폼에서 빠르게 실행되는 앱을 위한 클라이언트에 최적화된 언어입니다.

Dart는 많은 장점을 가지고 있는데
1. UI 제작에 최적화 및 Null Safety, Spread Operator등으로 UI를 코딩 가능
2. 완전한 비동기 언어, 이벤트 기반
3. Isolate를 이용해 동시성 기능도 제공함!
4. JS로 완전한 컴파일 지원, 백엔드 프로그래밍 지원
5. 핫리로딩을 통해 변경사항 즉히 화면에 반영 가능!

인터프리터와 컴파일러

Dart언어가 어떻게 컴파일(기계어로 변환)하는지를 알려면 위에 두 단어를 정확하게 정의하고 가야한다!

컴파일러 - 전체 코드를 링커 등을 통해 한번에 번역!, 실행시간이 빠름
인터프리터 - 소스코드를 한 줄 씩 중간 번역함, 중간에 오류 있으면 런타임에서 멈춘다!

Dart언어의 컴파일 플랫폼

일단 웹 플랫폼에서는 JS로 컴파일이 지원된다!

네이티브에서는 JIT와 AOT방식을 사용한다!

JIT 컴파일 방식

Just In Time 의 약자이며, 미리 코드가 아닌 런타임에 코드를 기계코드로 컴파일 하는 컴파일러
dart VM을 이용해서 코드 결과 바로 보여준다, 개발 중일때만 사용함!
핵심 특징은 번역된 코드를 캐싱 해둔 다음 똑같은 코드가 있으면 번역 안하고 캐싱해둔걸 전달해줌!!

AOT 컴파일 방식

실행전에 코드를 기계코드로 컴파일 해버림 - 정적 컴파일
해석된 코드에 비해 더 빠르고 더 작은 실행 파일을 생성, 변경사항이 있을때마다 코드를 다시 컴파일 함!
변경사항이 적을때 유리! 그래서 배포때 사용한다!!

왜 개발때는 JIT를 쓰고 배포때는 AOT컴파일 방식을 사용할까?

이건 고민을 해봤었는데 개발 시에는 변경 내용이나 수정 추가 삭제가 많이 일어나기 때문에
미리 캐싱해두었다가 핫 리로딩 해줄 수 있는 JIT가 컴파일에 유리한 것 같다.

그리고 배포할 때는 거의 다 완성이 된 상태이기 때문에 변경 사항이 적다 고로 정적 컴파일 방식인 AOT를 이용해 배포 하는것이 JIT보다 안전하고 유리하다고 생각이 든다!

셀프 피드백 및 향휴 계획

42서울을 통해 코드 리팩토링 방법과 예외를 생각하는 힘을 기르고,
플러터로 어플을 만들고 유지보수를 해보며 실무를 직접 1-10까지 해보자!!

feat.영어 무조건...해야해

profile
SW로 문제를 해결하려는 열정만 있는 대학생

0개의 댓글