가끔 보자, 하늘.

Kotlin 과 Dart 이야기 - 왜 kotlin을 만들고 Dart를 또 만들었을까? 본문

개발 이야기/개발툴 및 기타 이야기

Kotlin 과 Dart 이야기 - 왜 kotlin을 만들고 Dart를 또 만들었을까?

가온아 2025. 5. 30. 09:00

왜 Flutter는 Dart를 사용하는가?

Flutter가 Dart를 선택한 이유는 다음과 같은 Dart 언어의 특징과 Flutter 프레임워크의 목표에 부합하기 때문입니다.

  1. 두 가지 컴파일 방식 지원 (JIT & AOT):
    • JIT (Just-In-Time) 컴파일: 개발 단계에서 핫 리로드(Hot Reload)와 핫 리스타트(Hot Restart) 기능을 가능하게 합니다. 코드를 변경하면 거의 즉시 앱에 반영되어 개발 생산성을 극대화합니다.
    • AOT (Ahead-Of-Time) 컴파일: 릴리스 빌드 시에는 AOT 컴파일을 통해 네이티브 코드로 변환됩니다. 이는 앱의 실행 속도를 매우 빠르게 하고, 앱 크기를 최적화하여 사용자 경험을 향상시킵니다. Kotlin이나 Java는 주로 JIT 컴파일 방식을 사용하며, AOT 컴파일은 추가적인 설정이나 네이티브 빌드 도구를 통해 이루어지는 경우가 많습니다. Dart는 이 두 가지를 모두 효율적으로 지원하도록 설계되었습니다.
  2. 가비지 컬렉션 및 메모리 관리:
    • Dart는 효과적인 가비지 컬렉션(Garbage Collection) 메커니즘을 가지고 있어 UI 렌더링에 적합합니다. Flutter는 매 프레임마다 UI 트리를 재구성하는 선언형 UI 방식을 사용하는데, 이때 많은 수명이 짧은 객체들이 생성됩니다. Dart의 가비지 컬렉션은 이러한 객체들을 효율적으로 처리하여 부드러운 애니메이션과 고성능 UI를 제공합니다.
    • Isolates라는 개념을 통해 메모리를 공유하지 않는 독립적인 실행 단위를 제공하여 Lock 없이도 동시성 프로그래밍이 가능하게 합니다. 이는 UI 스레드를 방해하지 않고 백그라운드 작업을 처리할 수 있게 해 성능 저하를 방지합니다.
  3. 생산성과 개발 편의성:
    • 선언형 UI: Flutter는 Dart를 통해 React와 유사한 선언형 UI 패러다임을 제공합니다. 이는 UI의 상태를 명시적으로 선언하면 프레임워크가 나머지 작업을 처리하는 방식으로, 코드의 가독성과 재사용성을 높여줍니다.
    • 단일 코드베이스: Dart를 사용하여 iOS, Android, 웹, 데스크톱 앱을 단일 코드베이스로 개발할 수 있습니다. 이는 개발 비용과 시간을 크게 절감합니다.
  4. Google의 지원: Dart는 Google이 개발하고 지원하는 언어이며, Flutter 또한 Google이 주도하는 프로젝트입니다. Google의 전폭적인 지원은 Dart와 Flutter 생태계의 지속적인 발전과 안정성을 보장합니다.

Kotlin과 비교했을 때 Dart의 위치

Kotlin은 Android 네이티브 개발의 주력 언어이며, JVM 기반이라 Java 개발자들에게 익숙합니다. Jetpack Compose와 같은 선언형 UI 프레임워크도 Kotlin 기반으로 발전하고 있습니다. Kotlin Multiplatform Mobile (KMM)처럼 크로스 플랫폼을 지향하는 프레임워크도 있지만, KMM은 UI는 각 플랫폼의 네이티브 UI를 사용하고 비즈니스 로직만 공유하는 방식이므로 Flutter와는 접근 방식이 다릅니다.

  • Kotlin의 장점: Java와 높은 호환성, 성숙한 Android 생태계, 강력한 언어 기능 (코루틴 등), 서버 개발 등 더 넓은 활용 범위.
  • Dart의 장점: Flutter와의 완벽한 통합, Flutter의 핫 리로드/핫 리스타트, AOT 컴파일을 통한 고성능 UI 렌더링, 단일 코드베이스로 진정한 멀티플랫폼 지원.

Dart 사용률은 앞으로 줄어들까?

현재로서는 Dart의 사용률이 급격히 줄어들 가능성은 낮다고 보는 것이 일반적입니다. 오히려 Flutter의 성장과 함께 Dart의 사용률도 계속 유지되거나 증가할 것으로 예상됩니다.

  • Flutter의 성장: Flutter는 크로스 플랫폼 UI 프레임워크 시장에서 강력한 경쟁력을 가지고 있으며, 많은 기업들이 Flutter를 도입하고 있습니다. Stack Overflow Developer Survey 등 여러 지표에서 Flutter의 인기와 점유율이 꾸준히 높게 나타나고 있습니다. Flutter가 성장하는 한, Dart의 수요는 계속될 것입니다.
  • Multiplatform 확장: Flutter는 모바일뿐만 아니라 웹, 데스크톱(Windows, macOS, Linux)까지 지원 영역을 확장하고 있습니다. 이는 Dart의 활용도를 더욱 넓혀줍니다.
  • Google Fuchsia OS: Google이 개발 중인 차세대 운영체제 Fuchsia OS의 핵심 개발 언어로 Dart가 사용될 가능성이 높습니다. 만약 Fuchsia가 상용화되고 널리 사용된다면 Dart의 위상은 더욱 높아질 것입니다.
  • 생태계 성숙: Dart는 꾸준히 언어 기능이 개선되고 있으며, Flutter 패키지 및 라이브러리 생태계도 빠르게 성장하고 있습니다.

물론, 프로그래밍 언어의 유행은 항상 변동성이 있습니다. 하지만 현재 Dart는 Flutter라는 매우 강력한 프레임워크에 단단히 묶여 있으며, Flutter의 장점이 계속 유효한 한 Dart의 위치는 견고할 것입니다.

결론적으로, Kotlin DSL로 빌드 스크립트를 작성하더라도 Flutter의 핵심은 Dart를 통한 UI 개발에 있습니다. 이 두 가지는 서로 다른 계층에서 작동하며, Flutter의 고유한 장점을 활용하기 위해 Dart를 사용하는 것이 여전히 합리적입니다.

반응형