Dart Intro

김성연·2023년 8월 27일
0

Flutter

목록 보기
47/53

Dart란?

  • Google이 디자인한 언어, Flutter에서 Dart를 사용하면 안드로이드와 iOS등과 같은 다양한 플랫폼에서 개발이 가능하다.

Flutter는 Dart를 사용하는지?

  • Dart는 2개의 컴파일러를 가지고 있다

    • Dart web
      • Dart → javascript (Transpiler??) 웹 애플리케이션에서 사용 가능하다
    • Dart Native
      • Dart 코드를 여러 cpu의 아키텍처에 맞게 변환 (arm 32, arm 64, desktop) 가능 하기 때문에 IOS, Android, Windows, Linux, Mac으로 컴파일 가능
  • JIT(just-in-time compile) vs AOT(ahead-of-time compile)

    • AOT(앱 배포 사용)
      • 프로그램 실행 전에 컴파일 하는 방식이다.
      • 컴파일할 때 아키텍처를 지정해야 하고 바이너리를 배포한다(시간이 오래 걸린다 → 최적화)
      • 전체 프로젝트를 컴파일한다
    • JIT(개발 중 사용) 가상 머신
      • 프로그램 실행 시점에 컴파일 하는 방식이다.

      • 코드의 결과를 바로 화면에 보여준다(빠른 피드백 가능)

        둘 다 사용 가능하기 때문에 Dart를 선택, 빠른 피드백을 원하면서 최종 앱은 컴파일되어서 빨라야 한다.

  • null safety

    • java와 c++의 경우 개발자가 null 값을 참조해버리면 고장
  • flutterdart 모두 Google이 만들었다

    • ex) Django, Flask → Python, react-native → JS

어떻게 배워야 하나?

  • vscodeflutter가 설치 되지 않았다면 Dartpad 추천
  • 모든 개념을 다 배우지는 않지만 flutter를 하기 위해 알아야 하는 것들만 할 예정이다

예상 질문

  1. Dart가 어떤 특징을 가진 언어인지 간단하게 설명할 수 있을까요?
    1. Dart는 다른 언어들과는 다르게 다양한 플랫폼(iOS, Android)에서 앱을 만들 수 있는 언어다
  2. Dart web과 Dart Native의 차이점은 무엇인가요?
    1. Dart web과 Dart Native의 공통점부터 말해줄게. 일단 이 2개는 Dart의 컴파일러 방식 2가지에 속하는 것이야. 차이점이라고 한다면 Dart web은 dart언어를 js로 트랜스파일 시켜주는 도구야 이 기능을 통해서 웹 애플리케이션 제작이 가능해

      Dart Native는 Dart 코드를 cpu의 아키텍처(arm 32, arm 64)에 맞게 변환해주는 것이야 이 기능으로 인해 dart 언어가 mac, window, android 모두 사용 가능한거지

  3. Dart는 왜 두 가지 컴파일러를 가지고 있나요?
  4. JIT와 AOT의 차이점은 무엇인가요? 그리고 각각 어떤 상황에서 사용되나요?
    1. JIT(JUST IN TIME)이고 AOT(Ahead of time)이야 이 둘은 dart에서는 앱 배포 전과 배포 후로 나눌 수 있어
      앱 배포 전에는 JIT 방식을 쓰고 배포 후에는 AOT를 써 AOT는 쉽게 말해서 전체 프로젝트를 컴파일 하는 방식이라고 생각하면 돼 이 과정에서 컴파일을 할 때마다 아키텍처를 지정해줘야 하고 바이너리를 배포하기 때문에 최적화 과정에서 시간이 오래걸려 그렇기 때문에 개발 중에는 사용하지 않고 앱을 배포할 상황에서 사용해 JIT는 프로그램 실행 시점에 컴파일을 하는 방식이야 코드의 결과를 바로 화면에서 바로 볼 수 있기 때문에 개발 중에 JIT가 쓰여
  5. Flutter는 왜 Dart를 사용하게 된 걸까요?
    1. 장점이 되게 많아 일단 둘 다 google에서 만들었어 아마 높은 확률로 되게 가까운 부서에서 만들지 않았을까 해 그렇다면 flutter에서 개발을 하다가 dart언어 쪽에 원하는 방향이 있다면 연결이 쉽겠지??
      그리고 2번째는 컴파일 방식이고 이 방식은 위에서 설명했어
  6. null safety는 무엇인가요? 그리고 왜 중요한가요?
    1. 이 내용은 다음 페이지에서 좀 더 자세히 다룰게
  7. Flutter와 Dart는 어떻게 연관되어 있나요?
    1. flutter는 크로스 플랫폼으로 IOS와 Android 모두 개발이 가능해
      이 이유가 Dart의 Dart Native 기능 떄문에 되는 것 같아
      이렇게 Flutter는 Dart 언어를 사용하고 있지

용어 정리

  • 컴파일러: 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 언어 번역 프로그램, 고급 언어 → 저급 언어
  • 바이너리: 컴파일 과정을 거쳐 생산된 최종 실행 가능한 파일

0개의 댓글