- Flutter는 Dart 위젯 프레임워크, 렌더링 엔진, 호스트 플랫폼과의 연결 코드, 그리고 다양한 스레드로 구성된 다층적인 기술 스택입니다. 🏗️
- 역사적으로 Flutter 엔진은 Dart 코드를 실행하는 UI 스레드와 UI를 픽셀로 변환하는 래스터 스레드를 분리하여 사용했으며, 이들은 네이티브 플랫폼 스레드와 별개로 작동했습니다. 🕸️
- 기존 모델의 문제점: 플랫폼 스레드와 UI 스레드 간의 통신은 플랫폼 채널을 통해 이루어졌는데, 이는 비동기 호출 강제, 타입 안전성 손실, 그리고 네이티브 스레드의 낮은 활용률 등의 문제를 야기했습니다. 🚧
- '스레드 병합'의 핵심: Flutter는 자체 UI 스레드를 제거하고 모든 Dart 코드를 메인 플랫폼 스레드에서 실행하도록 변경합니다. 🔄
- 병합의 주요 이점: 이 변화는 네이티브 코드 호출을 단순화하고, FFI(Foreign Function Interface)를 통해 네이티브 API와의 타입 안전성을 보존하며, 개발 효율성을 크게 향상시킵니다. ✅
- 개발자 영향 (1단계): 현재 진행 중인 1단계에서는 플러그인 개발자들이 플랫폼 스레드에서 실행되던 무거운 로직을 아이솔레이트로 옮기고, FFI를 사용하여 동기식 네이티브 함수 호출을 실험해 볼 것을 권장합니다. 🧪
- 개발자 영향 (2단계): 모든 플랫폼에서 스레드 병합이 완료되면, 플러그인 개발자는 새로운 SDK 버전을 요구하는 업데이트를 게시할 수 있으며, 모든 Flutter 앱이 개선된 성능과 단순화된 코딩의 혜택을 받게 됩니다. 🚀
- 코드 단순화 예시: 스레드 병합 후에는 네이티브 API 호출이 동기식으로 가능해져,
Future 사용, StatefulWidget, initState, 임시 변수 및 플레이스홀더 코드 등이 사라져 위젯 코드가 훨씬 간결해집니다. ✨
- 플러그인 개발 개선: FFI의 낮은 성능 오버헤드 덕분에, 플러그인 내에서 복잡한 로직을 Dart로 작성할 수 있게 되어, 플랫폼별 코드 중복을 줄이고 네이티브 상호 운용성을 크게 간소화합니다. 🎯
- 궁극적인 목표: '스레드 병합'은 Flutter 앱의 개발 및 사용 속도를 높이고, 네이티브 플랫폼의 강력한 기능을 더 쉽게 활용할 수 있도록 하여 전반적인 개발 경험을 개선하는 데 기여합니다. 📈