Dart Compile, Interpreter, JIT

Ruinak·2021년 9월 18일
0

Dart

목록 보기
2/11
post-thumbnail

Dart

Dart 정보

  • dart라는 언어는 구글에서 개발한 언어입니다.
  • 2017 ~ 2018년에는 배우지 말아야 할 베스트 1으로 뽑혔었습니다.(엄청나게 인기가 없었음)
  • Flutter라는 앱개발 UI 툴킷이 나오면서 dart가 엄청나게 인기가 있어졌습니다.
  • Flutter 앱 개발을 하면 기반 언어가 dart 언어이므로, dart라는 언어만 알면 Flutter로 UI도 만들 수 있고, 프로그램을 구현할 수 있고, IOS와 Android를 한 번에 만들 수 있습니다.
  • dart 언어는 자바스크립트를 대체하기 위해서 나온 언어입니다.
  • 구글은 크롬 브라우저를 들고 있는데 크롬 브라우저는 V8 Engine으로 구동됩니다.
  • 구글이 어떤 새로운 기능을 자바스크립트로 만들어 보고 싶은데, 새로운 기능이 웹 브라우저에서 구동이 되어야 하는데 크롬에서는 구동이 되더라도, 다른 웹 브라우저(사파리, IE, 파이어폭스 등)에서 구동을 하지 않습니다.
  • 다른 웹 브라우저에서 돌게 하려면 협회의 승인도 받아야하고, 시간도 오래 걸리는 문제점이 있습니다.
  • 위와 같은 이유로 문제가 발생하면 빠르게 갱신하지 못합니다.
  • 퓨시아(Fuchsia) : 구글에서 개발하는 오픈 소스 운영 체제

Dart 테스트

  • VSCode를 실행시킵니다.
  • dartwork라는 작업공간을 생성한 후 test1.dart 파일을 만들어줍니다.
  • dartpad만을 사용하면 코드만 볼 수 있기 때문에 VSCode를 사용하는 것입니다.
  • Market에서 dart를 검색해서 설치를 해줍니다.
void main() {
  print("hello World");
}
  • 위 코드를 test1.dart에 적어줍니다.
  • 적은 후 터미널을 열어서 터미널에서 dart test1.dart를 입력해주면 실행이 됩니다.
  • 터미널에서 dart compile을 입력하면 위와 같이 dart compile을 하는 옵션들이 보입니다.

dart compile 방법

JS

  • 터미널에 dart compile js -o test1.js test1.dart 를 입력합니다.
  • 위와 같은 메세지가 출력되고 폴더를 확인해보면 js 파일이 생성된 것을 볼 수 있습니다.
  • 내가 만든 dart 코드를 JavaScript로 만들 수 있는 것입니다.
  • dart를 개발하면 웹에서도 사용할 수 있다는 것입니다.

aot-snapshot

  • 터미널에 dart compile aot-snapshot test1.dart 를 입력해줍니다.
  • aot 파일이 생성된 것을 볼 수 있습니다.
  • 내가 만든 dart 코드를 native machine 코드로 만드는 것입니다.

exe

  • 터미널에 dart compile exe test1.dart를 입력해줍니다.
  • 윈도우에서 작동하는 exe 파일을 만들어줍니다.
  • 위 파일을 실행시켜보면 아무 반응이 없습니다.
  • 터미널로 돌아와서 test1을 입력해보면 바로 실행되는 것을 확인할 수 있습니다.

jit-snapshot

  • 터미널에서 dart compile jit-snapshot test1.dart 를 입력해줍니다.
  • jit 파일이 생성된 것을 볼 수 있습니다.
  • 다시 살펴보면 compile을 진행하면서 바로 실행된 것을 알 수 있습니다.
  • jit는 Just In Time의 약자로 내 파일을 읽고 바로 실행해버립니다.

Dart 동작 원리

1. Dart는 운영체제에 맞게 컴파일을 할 수 있습니다.

  • 윈도우나 리눅스에서 개발해서 컴파일을 하게 되면 거기서 돌게 컴파일을 할 수 있습니다.

2. AOT(Ahead-Of-Time)를 지원

일반적인 상황

  • 휴대폰이 하나 있는데 IOS일 수도 있고 Android일 수 도 있습니다.
  • window든 mac에서든 개발을 하고 휴대폰에 넣으려하면 여전히 IOS일 수 도 있고 Android일 수 도 있습니다.
  • 한 줄씩 읽어서 가상머신에서 바꿔야하므로 처리 속도가 매우 느립니다.

AoT 사용

  • AoT를 사용하면 개발을 한 후 휴대폰에 맞게 미리 compile을 한 후 집어넣을 수 있습니다.
  • 가상머신(VM)을 사용하지 않으므로 속도가 매우 빠릅니다.
  • 실제 개발할 때는 JIT로 개발하는 것이 제일 좋습니다.

React Native(RN)과 Flutter의 차이

  • flutter는 휴대폰이 있으면 dart 코드를 집어넣고 실행을 시킵니다.
  • 실행을 시키면 skia라는 2D엔진을 통해서 바로 버튼을 그려버립니다.
  • 즉 안드로이드의 도움을 받지 않고 바로 그리므로 엄청나게 빠르게 그립니다.
  • 안드로이드에 맞는 버튼을 찾아서 그리는게 아니므로 빠를 수 밖에 없습니다
profile
Nil Desperandum <절대 절망하지 마라>

0개의 댓글