/ TECH

크로스 플랫폼 비교 (아이오닉 vs 리액트 vs 플러터)

크로스 플랫폼 비교 (아이오닉 vs 리액트 vs 플러터) - Crossplatform comparison (Ionic vs React Native vs Flutter)

부제

1) 왜 플루터를 만들었을까?

: 이미 안드로이드 스튜디오의 개발자가 많고, 많이 쓰이는데 왜 새로운 플랫폼을 만들었을까? 크로스 플랫폼에 대한 Needs가 분명했기 때문. 기존에 내장된 위젯(OEM widget) 사용, 네이티브 코드로 기기의 네이티브 기능 사용 등의 기능을 탑재해야했는데, 안드로이드 따로 ios 따로 하는것은 쉽지않았다.

1.1) Ionic 그래서 아이오닉도 이런 니즈에 따라 등장했는데, 아이오닉은 웹뷰를 쓰기 때문에 웹을 개발하던 언어로 하이브리드 앱을 만들 수 있게 되었다. VS code도 일렉트론이라는 웹기반 크로스플랫폼을 만들어졌다. 하지만 웹뷰이기 때문에 브라우저 위에서 돌아가서 퍼포먼스적인 한계가 분명히 존재한다. 웬만한 앱은 퍼포먼스가 중요하지 않기 때문에, 아이오닉이 인기있고 유용한 것이다. 네이티브한 기능이 업데이트되지 않아서 사용하지 못할 수도 있다.

1.2) React native 네이티브에 조금 더 가깝게 만들어서 퍼포먼스 적인 한계를 아이오닉에 비해 조금 개선했다. 리액트는 웹이고 리액트 네이티브는 앱이다. 둘 사이에 일부 코드는 공유가 가능하다. 핵심만 제공하고, UI component는 제공하지 않는다. 학생이 하기에는 UI적인 측면에서 신경써야할 부분이 쉽진않다. 그리고 파이어베이스 같은 백엔드와 연동하는 정식 라이브러리가 제공되지 않는 다는 단점이 있다. 유료로 정식으로 지원하지않는 라이브러리를 구매해야하는 경우가 있다.

1.3) Native (OEM SDKs) 퍼포먼스 면에서 모든 기능을 다 만들 수 있지만, 그만큼 많은 인력과 시간, 노력이 필요하다.

1.4) Flutter UI 컴포넌트를 플랫폼안에 내장하여서 쉽게 사용할 수 있다(디자인적인 측면의 이로움). 내장되어있기 때문에 os버전과 상관없이 사용할 수 있다. CSS 같은 경우를 쓸 필요가 없고 OOP 코드 수준으로 디자인을 할 수 있다. 다트(Dart)라는 언어를 쓴다는 것이 단점이 될 수 있지만, 자바와 자바스크립트의 중간에 위치한 언어이기 때문에 접근성이 높은 편으로 볼 수 있다. 알리바바와 텐센트는 이미 플루터를 사용한 개발을 착수했다. 모듈 버전관리 문제도 flutter upgrade, flutter doctor 명령어를 통해 쉽게 해결할 수 있게 되었다. 웹은 지원하지 않지만, 플루터를 쓰고 워드프레스 같은 툴을 이용해서 간단한 웹을 함께 만드는 것도 좋은 방법이다.