# AOT

11개의 포스트

[Dart] dart 입문 (1) - 컴파일 방식, dart 특징

노마드 코더님의 무료강의를 듣고 개인 정리용으로 작성 Dart의 특징 객체지향 언어이다 User interface에 친화적이라 빠르다 UI에 최적화 되어있다 생산적인 개발환경, 모든 플랫폼에서 빠름 Null safety Dart의 Null safety 방식 Dart, flutter 모두 구글에서 제작된 언어로 상호적임. dart를 수정해서 flutter를 빠르게 만들 수 있음 Dart compile Dart엔 dart web, dart native라는 두개의 컴파일러가 존재. dart web: dart로 쓴 코드를 javascript로 변환해주는 컴파일러 dart native: 내가 쓴 dart 코드를 여러 cpu 구조에 맞게 변환 컴파일 방식 JIT(just in time)방식과 AOT(ahead of time) 방식이

2023년 8월 9일
·
1개의 댓글
·

JIT vs AOT Compilation

JIT(Just In Time) image JIT 란? > JIT 컴파일은 소스코드를 즉시 기계어로 변환하는 것이 아닌, 중간 단계의 중간 언어(Intermediate Language 또는 IL)로 컴파일 후, 실행 시점 단계에서 실제 기계어로 컴파일 하는 방식이다. > - 대표적인 JIT 컴파일을 사용하는 언어는 Java, C# 등을 예로 들 수 있다. Strenght / Weekness Strenght 플랫폼 독립성 : JIT 컴파일은 바이트 코드를 실행하는 시점에 해당 플랫폼에 맞는 기계어로 변환하여 실행 최적화 : JIT 컴파일은 런타임에 최적화를 수행 메모리 사용량 : JIT 컴파일은 런타임에 필요한 코드만을 메모리에 올 업데이트와

2023년 7월 25일
·
2개의 댓글
·

AOT Compile

AOT(Ahead-of-Time) 컴파일은 Angular 프레임워크의 빌드 프로세스 중 하나로, 애플리케이션의 TypeScript 코드를 컴파일하여 JavaScript 코드를 생성하는 것을 의미합니다. AOT 컴파일은 Angular의 성능을 향상시키고, 런타임에서 발생하는 오류를 사전에 감지하여 더 안정적인 애플리케이션을 만들 수 있게 해줍니다. 기본적으로 Angular CLI에서 프로덕션 환경에서 "ng build --prod"를 실행할 때 AOT 컴파일이 수행됩니다. AOT 컴파일과 그에 대비되는 개념으로는 JIT(Just-in-Time) 컴파일이 있습니다. JIT 컴파일은 런타임 시점에서 애플리케이션의 TypeScript 코드를 컴파일하여 브라우저에서 실행하는 방식입니다. 이는 개발 중에 변경사항을 빠르게 확인할 수 있어 편리하지만, 브라우저에서 컴파일을 수행하므로 애플리케이션 로딩 속도가 느릴 수 있고, 애플리케이션에 접근할 때 런타임 오류가 발생할 가능성이 있습니다. A

2023년 7월 18일
·
1개의 댓글
·
post-thumbnail

spring aot , graal vm 적용 실패기

2가지 방법 Gradle 사용 두 가지 방법 모두 graalVm 을 사용한다. 주의점은 런타임 시점에서 yml 환경 값을 주입 받지 못하기 때문에 aws 파라미터 스토어를 사용 할 수 없다. 아래에 이것만 추가하면 nativeCompile 사용 가능하다. 1. bootBuildImage 1.1. build.gradle bootBuildImage 도커 이미지로 빌드 하는 경우 bootBuildImage 를 사용한다. m1 mac 에서 빌드하는데도 시간이 매우 오래 걸리며 cpu 사용량이 하늘을 찌른다. 피크 cpu 사용량이 99%가 넘어가며 메모리 사용량이 8기가 정도 된다. 허허... 심지어 msa 프로젝트라 각 서버의 의존성이 그리 크지 않은 상태임에도 불구하고 빌드 시간이 10분이 넘어간다. 사실 쓰고있는 시점에서도 빌드가 되지 않았다. 보아라 이 엄청난 사용량을... ![](https://velog.velcdn.com

2023년 6월 25일
·
0개의 댓글
·
post-thumbnail

[네이버클라우드캠프] -22일차(프로그래밍 개론 02)

Java : hybrid 방식 = compile + iterprete 방식 Interprete 방식 중 V8 모델 특징 V8은 Google Chrome 및 Node.js에서 사용하는 고성능 오픈 소스 JavaScript 및 웹 어셈블리 엔진 다른 언어와 달리 V8 엔진은 컴파일러와 인터프리터를 모두 사용하며 저스트 인 타임(JIT)을 진행 코드 처리에는 기본적으로 세 가지 단계가 포함: >코드 구문 분석 코드 컴파일 코드 실행 1 . 구문 분석 단계: 구문 분석 단계에서 코드는 해당 토큰으로

2023년 5월 23일
·
0개의 댓글
·
post-thumbnail

Dart 기본 지식

Dart Dart Compiler Dart Native ARM32 ARM64 x86_64 Dart Web JavaScript Machine code JIT just-in-time 개발 도중 결과를 바로 확인 가능 AOT ahead-of-time 개발 이후 빌드시 빠른 실행 가능 Null Safety Dart 설치 (Windows) https://dartpad.dev/ 웹 에디터 기본 설치 방법 Chocolatey 설치 Dart 설치

2023년 3월 27일
·
0개의 댓글
·
post-thumbnail

[Dart] 컴파일 방식 이해하기

플랫폼별 컴파일 Dart의 컴파일러 기술을 사용하면 다양한 방식으로 코드를 실행할 수 있다. ✅ 네이티브 플랫폼 모바일 및 데스크톱 장치를 대상으로 하는 앱의 경우 Dart에는 컴파일 기능이 있는 과 기계 코드 생성을 위한 컴파일러가 모두 포함되어 있다. ✅ 웹 플랫폼 웹을 대상으로 하는 앱의 경우 Dart는 개발 또는 프로덕션 목적으로 컴파일할 수 있다. 웹 컴파일러는 Dart를 JavaScript로 변환한다. > 플랫폼 별로 컴파일러를 다르게 사용하기 때문에 Flutter에서 거의 모든 플랫폼으로 개발이 가능하다. Dart Web Dart Web을 사용하면 JavaScript로 구동되는 웹 플랫폼에서 Dart 코드를 실행할 수 있다. Dart Web을 사용하면 Da

2023년 1월 31일
·
0개의 댓글
·

Spring Boot의 버전 별 특징 (JIT vs AOT)

안녕하세요 오늘은 Spring boot의 최신 버전인 3.0.1 버전의 특징과 새롭게 추가된 AOT에 대해서 JIT과의 비교를 통해 알아보는 시간을 갖도록 하겠습니다. 출처 : https://docs.spring.io/spring-boot/docs/3.0.0/reference/html/native-image.html#native-image Spring boot 3.x 버전부터 GraalVM Native Image를 제공합니다. GraalVM이란 어플리케이션의 성능 및 효율성을 크게 향상시키는 고성능 런타임으로 JVM과 마찬가지로 Java 바이트코드를 기계어로 컴파일합니다. GraalVM의 컴파일러는 객체 할당을 효과적으로 제거해서 추상화된 프로그램에서 큰 성능을 발휘할 수 있다고 합니다. ![](https

2023년 1월 9일
·
0개의 댓글
·

Why dart?

왜 다트를 사용하는가? **1. UI 최적화 생산적인 개발환경 모든 플랫폼에서 빠른 언어** 다트에는 두 가지 컴파일러가 있다. Dart Web : Dart코드를 javascript로 변환해주는 컴파일러 Dart Native : Dart코드를 CPU의 아키텍처에 맞춰 변환해주는 컴파일러 다트를 IOS, Android, Windows, Linux, Mac으로 컴파일 할 수 있는 이유 다트의 컴파일 방식 JIT : just-in-time (배포할 때) AOT : ahead-of-time (개발할 때) AOT (ahead-of-time) 코딩을 다 하고나서 컴파일을 할 CPU 아키텍처를 선택해야 함. 컴파일을 먼저하고 그 결과물인 바이너리를 배포하는 방식. 시간이 오래걸림. 화면 개발을 하는데 좋은 방식이 아님. 버튼 하나 바꾸는데 컴파일이 너무 오래걸리면 개발하다가 화가 많이 날거니까. JIT (just-in-time) Dart

2022년 12월 29일
·
0개의 댓글
·
post-thumbnail

[Flutter]Flutter Under the Hood

Flutter flutter는 cross-platform 지원하는 강력한 툴이다. 하나의 소스코드에서 여러 플랫폼에 사용가능한 결과물을 만들 수 있기 때문에, 개발 생산성을 크게 높여준다. 이번 포스팅에서는 flutter가 cross-platform을 지원하는 방식에 대해 알아보려고 한다. JS Bridge flutter는 js bridge 없다. react-native와 같은 다른 cross-platform 프레임워크는 js bridge를 사용해서 성능 관련 이슈가 존재한다. react-native 같은 경우, js로 이루어진 메인 소스 코드를 bundling 해서 js bridge를 통해 통신하는 방식을 가지고 있다. AOT 컴파일도 지원하지 않기 때문에 Native로만 작성한 앱에 비해 성능 이슈가 있을 수 밖에 없다. Hermes를 사용하면 이 단점이 좀 감소되긴 하지만, 완전히 없어지는 것은 아니고 Hermes는 라이브러리

2022년 10월 29일
·
0개의 댓글
·
post-thumbnail

Flutter 🔥 reload가 가능한 이유

Hot Reload란? > 플러터가 내세우는 큰 장점중 하나이다. > 이 기능을 사용하면 코드를 수정했을때 즉각적으로 변경 사항들을 앱에 적용할 수 있으며 이때 매우 빠른 속도로 적용되기 때문에 개발할때 아주 편하고 효율적이다. > 한번 맛보면 Hot reload가 되지 않는 개발 환경에서는 매우 불편해진다... 스프링... Hot Reload의 작동원리 > hot reload가 실행되면 현재 실행되고 있는 Dart 가상머신(VM)에 변경된 소스를 전달한다. 그러면 가상머신은 새로운 버전의 필드 및 함수로 클래스를 업데이트한 후 위젯트리를 재빌드한다. 이때 state를 유지하며 main() 이나 initState는 다시 실행되지 않는다. 그 이유는 hot reload 과정에서는 state 객체를 새로 생성하지 않고 웨젯만 리빌드하기 때문이다. Hot Reload가 가능한 이유 > 먼저 플러터는 디버그 모드에서 hot reload가 가능하고

2022년 3월 28일
·
0개의 댓글
·