단일 코드베이스로 모바일(Android, IOS) 개발, 웹 개발, 데스크탑 개발, 임베디드 개발등이 가능한 크로스 플랫폼이다.
Google에서 개발하고 있는 장차 Fuchsia OS 위에서 UI / UX를 담당하게 될 오픈소스 프레임워크이다.
구글에 맞춘 Meterial 디자인과 애플에 맞춘 Cupertino 디자인도 가능하다.
왜 크로스 플랫폼을 선택해야하는가?
사용하기에 앞서 각 플랫폼별 native 언어가 있는데 불구하고 크로스 플랫폼을 선택을 왜 하는지에 의문이 있을 것이다.
ex) 현재 native 개발자인데 크로스 플랫폼을 사용해도 생산성 차이가 없을 것 같다 등
답 : NAVER 지식IN 개발 후기를 보면 알 수 있듯이 기존 native 개발과 크로스 플랫폼으로 따로 같은 개발을 해봤을 시 생산성이 3~5배로 차이가 날 정도로 좋다.물론 개인마다 차이가 있겠지만 최소 1.5배 ~ 2배 차이가 나면서 멀티 플랫폼 개발을 한번에 하는게 압도적인 생산성 차이가 난다고 생각한다.
ex) 크로스 플랫폼으로 개발을 해도 결국 native로 변경해야하는 것 아닌가? 등
답 : Computing이나 민감한 디바이스의 특정 기능을 요구하는 것이 아니므로 반드시 native가 필수일 필요는 없다. 즉, 처음 모바일 설계를 할 시 구분을 하고 넘어가야한다 대부분의 모바일 앱은 Computing이나 민감한 디바이스의 특정 기능을 요구하지 않으며 사용한다고 하면 크로스 플랫폼을 선택하지 않는게 맞기 때문이다.
ex) native에서 되는게 크로스 플랫폼에서 개발 안되는 것 아닌가? 등
답 : 현재 대부분의 기능을 플러그인을 통해 구현이 되어있으며 점차 더 개발될 것이기 때문에 걱정할 필요는 없다고 생각한다.
플러터(Fluter) vs 리액티브 네이티브(Reactive Native) 비교
플러터(Flutter)
장점
- 리액티브 네이티브(Reactive Native)처럼 Bridge를 거치지 않고 각 플랫폼에 맞는 native 언어로 컴파일된 후바로 Skia엔진을 통해 canvas에 렌더링하기 때문에 각 플랫폼의 native 언어와 비슷한 수준의 성능을 보여준다.
- 리액티브 네이티브(Reactive Native)의 인기를 쉽게 따라잡았으며 인기의 추세가 더 크다.
단점
- 리액티브 네이티브(Reactive Native)보다 구직하기 어렵다. (채용사이트 구인 게시글 수를 비교하였을 때)
리액티브 네이티브(Reactive Native)
장점
- 기존 React 개발자이면 빠르게 학습하여 모바일 개발이 가능하다.
- 플러터(Flutter)보다 구직하기가 더 쉽다. (채용사이트 구인 게시글 수를 비교하였을 때)
단점
- Bridge를 사용하여 플러터(Flutter)보다 렌더링 성능이 떨어진다.
개발 특징
1. Hot Reload(핫 리로드) : 모바일 앱이 실행되고 있는 상태에서, 앱의 상태를 유지한 채로 변경사항을 적용시켜 주어 빠른 개발을 할 수 있다.
2. Hot Restrat(핫 리스타트) : 모바일 앱이 실행되고 있는 상태에서, 변경사항을 적용시켜준다. 단, 앱의 상태는 초기화 된다. Hot Reload(핫 리로드)보다는 시간이 조금 더 걸리지만, 앱을 재실행하는 것보다는 훨씬 빠르게 변경사항을 확인할 수 있다.