전편에 플러터의 구동 원리를 봤는데 플러터 엔진을 지나서 트리를 만들어 캔버스에 그린다고 했다.
핫한 언어 리액트 네이티브와 연결지으며 플러터를 사용할 수 있는 환경을 더 이해해보자.
좀 중구난방식으로 쓸 터이니 관심있는 주제만 골라 보길 추천한다.
Flutter는 플랫폼 별로 UI를 직접 그리기 때문에 네이티브 컴포넌트와 직접 상호작용하지 않음. 대신 Flutter 엔진이 UI를 렌더링하고 운영 체제에 그려짐. 이로 인해 모든 플랫폼에서 동일한 UI와 동작을 제공할 수 있음.
React Native는 네이티브 컴포넌트와 상호작용하여 UI를 구성. JavaScript 코드는 리액트 네이티브 브릿지를 통해 운영 체제와 통신하고, 네이티브 모듈을 호출하여 기능을 실행. 이로 인해 플랫폼 별로 더 많은 운영 체제 API와 기능을 활용할 수 있음.
AOT 컴파일은 Flutter 앱의 성능과 반응성을 높이는 장점을 가지고 있지만, 앱의 크기가 더 커질 수 있다.
반면에 JIT 컴파일은 React Native 앱의 개발 속도를 높이는 장점을 가지고 있지만, 앱의 시작 속도나 실행 시간 성능은 상대적으로 AOT 컴파일에 비해 약간 떨어질 수 있다.
따라서, Flutter는 AOT 컴파일을 통해 높은 성능을 제공하면서도 크로스 플랫폼 앱 개발을 강조하고, 강력한 핫 리로딩을 지원한다.
반면에 React Native는 JIT 컴파일을 통해 빠른 개발 속도와 크로스 플랫폼 호환성을 강조한다. 핫 리로딩을 제한적으로 지원(핫 리스타트)한다.
이러한 점들이 RN과 Flutter를 고르는 근거들 중 하나가 될 것이다.
크로스 플랫폼 개발은 빠른 개발과 시장 출시를 가능하게 하며 효율적인 개발이 가능하다.
리액트 네이티브는 JS(리액트)의 접근성, 재사용성이 있고 써드파티 등의 큰 생태계를 통해 개발 생산성을 늘려준다. 그래서 간단한 크로스 플랫폼 애플리케이션 개발에 탁월하다.
하지만 운영 체제 네이티브를 반영해서 개발해야되기 때문에 복잡한 앱일수록 운영 체제 네이티브에 대한 이해도가 많이 필요하고, 성능 상으로 네이티브 언어보다 문제가 생길 수도 있다.
Flutter는 운영 체제 네이티브 수준의 고성능을 요할 때나 UI 디자인을 커스텀할 수 있는 자유도로 고성능의 개성적인 MVP 애플리케이션을 만드는 데 뛰어나다.
하지만 운영 체제 네이티브와 비교했을 때 디자인이 좀 떨어질 수도 있고, Dart라는 언어를 배워야한다는 거 자체가 부담이 될 수도 있다.
내가 생각했을 때 가장 큰 근거는 RN은 리액트 쿼리 같은 써드파티를 사용할 수 있어 좋고, Flutter는 앱, 웹 등 모두 공통적인 UI를 짤 수 있어서 좋다.
근데 RN은 복잡한 앱일수록 코드 구조가 진짜 더 복잡해지고, 더러워지는 느낌이고, Flutter는 짜증나는 코드 가독성과 자꾸 맘대로 안되면 던지는 구글의 전과가 있는 단점이 제일 큰 거 같다.
근거를 읽어도 기초지식이 없으니 이해가 안가네요 ㅋㅋ 플러터가 확실히 성능이 우수한가보군요 면접봤을 떄 플러터 물어보길래 태연님 덕분에 Dart라고 아는척 했습니다. 잘읽었어요