Flutter와 Dart의 개념
플러터라고 하면 항상 다트라는 용어가 나온다.
다트는 언어, 플러터는 다트를 사용하여 모바일 어플리케이션을 개발할 수 있는 프레임워크(환경)이다.
다트가 플러터 이외에는 사용되는 곳이 없어 일반적으로 구분하지 않고 플러터라고 부른다.
네이티브 안드로이드 개발에서 디자인을 XML, 동작을 Java/Kotiln으로 하는 반면
플러터는 디자인과 동작 모두 다트로 처리한다.
안드로이드와 IOS를 하나의 코드로 동시에 개발할 수 있는 크로스 플랫폼 프레임워크로,
구글이 개발하고 있으며, 이미 안정화된 페이스북이 개발한 리액트 네이티브와 비교되곤 한다.
Flutter의 기본 이해
플러터는 객체지향 언어지만, 어느 언어보다 독립적인 Super 객체지향 언어라고 할 수 있다.
간단히 모든것이 Class화 되어있다는 말이다.
화면을 구성하는 버튼, 텍스트필드 등 모든 것들이 Class화 되어있고 이들을 Widget이라고 한다.
따라서 화면을 구성하는 모든 요소들은 매개변수의 형태로 속성을 지정할 수 있다.
예를 들어 버튼이라면 Button(color : Colors.red, onPress : ~)의 형태로 Button 클래스의 호출과 동시에
매개변수로 색상과 클릭했을 때의 동작을 지정할 수 있다.
네이티브(Java/Kotlin) 개발이나 리액트 네이티브의 경우 디자인과 기능에서 다른 언어를 사용하고 명확하게 구분되어 있다.
디자인 부분에서 Button의 ID를 지정하고 기능 부분에서 Button의 ID를 받아 Button이 클릭되었 때의 동작 함수를 만들어야한다. 플러터에서는 디자인과 기능을 통합하여 다트로 UI와 기능을 자연스럽게 써내려갈 수 있어 이러한 번거로움이 없고, 더 빠른 개발이 가능하게 되었다. 플러터와 이전의 프레임워크를 모두 경험해보지 않으면 별 것 아니게 보이지만 직접 접해보면 개발속도와 개발피로도에 상당한 차이가 있다. 성능 또한 네이티브에 뒤쳐지지 않는다.
이와 같은 객체지향 및 단일화의 특징으로 같은 기능을 구현할 때 현존 모바일 프레임워크 중 플러터의 개발 속도가 가장 빠르다는 실험 결과가 있다.
Flutter의 단점
처음 배우기 쉽지 않다.
자료가 많지 않고 대부분이 외국 사이트에 있어 익숙해지기 까지, 추가적인 것을 배우기 위해 다른 프레임워크에 비해 많은 시간이 필요하다. 이는 필자가 블로그를 시작하게 된 이유이다.
공식 출시한지 2년이 겨우 지나 기존 프레임워크에 비해 라이브러리의 버전이 턱없이 낮고 다양하지 못하다.
상황에 따라 네이티브 언어로 Widget을 직접 구현해서 사용해야하는 경우도 발생하므로 네이티브와의 병행 공부가 필요해 필자는 어느정도 안정적으로 개발이 가능하게 되면 Kotlin을 병행해서 배울 예정이다. (이 부분은 리액트 네이티브도 마찬가지이다.)
구글에서 개발을 지속적으로 하고 있으므로 잦은 업데이트로 혼란스러운 경우가 자주 있다.
기존의 함수 이름이 바뀐다던지 이전에 있던 프로젝트를 다수 수정해야한다던지 하는 경우가 있다.
그래서 플러터 개발자들은 플러터가 빌드업되어도 왠만해서는 당장 업데이트 하지 않는다.
생각보다 플러터 자체의 버그가 많다.
버그 리포트에만 하루를 꼬박 보낸 경우도 있다. 다행히 외국사이트를 통해 해결 방법을 찾을 수 있었지만 앞으로 험난함이 예상된다. 어떤 개발이든 마찬가지 이겠지만 지속적인 플러터 자체의 업데이트와 더불어 발생하는 버그의 해결은 쉽지않다.
전적으로 구글에 의존하고 있으므로 구글이 개발을 포기한다면 플러터 개발자들은 실직자가 된다.
구글은 멀쩡히 개발하던 프로젝트를 엎었던 전적이 몇 번 있기에 구글의 개발은 큰 장점이지만 매우 큰 의존도는 너무나 큰 리스크이기도 하다. 필자처럼 플러터에 올인하기는 사실 권장되지 않는 사항이다.
마지막으로 플러터를 어떤 목적으로 배우느냐에 따라 단점일수도 강점일수도 있겠지만,
플러터를 사용하는 곳이 아직 많이 없다는 것이다. 자본이 많은 회사라면 굳이 불안정한 플러터를 사용하기보다 안정적으로 네이티브로 개발하길 원한다. 플러터와 리액트 네이티브는 스타트업이나 중소규모에서 수요가 있는 프레임워크로 플러터만으로 경력을 쌓아 대기업을 가길 원한다면 아직은 글쎄다.
하지만, 스타트업과 중소규모에서 수요가 점점 늘고있고 그 수요에 비해 플러터 개발자는 턱없이 부족한 상황이다.
본인이 스타트업만을 원한다거나 빠른 사이클로 창업을 하고 싶다면 플러터를 추천한다.
다만, 본인이 신입 개발자이고 개발자로서의 경력을 쌓아 롱런하고 싶다면 플러터는 취미 정도의 스택이 되어야 할 것이다.
크로스플랫폼 특성상 네이티브 언어를 배워야 더 깊은 개발이 가능한데, 플러터라는 기술 스택을 가지고 있음은 아직은 시장에서 경쟁력이 없기 때문이다. 시장에서 경쟁력을 갖고 싶다면 네이티브 개발을 우선 하기를 권장한다.
Flutter의 장점
앞서 말한 것처럼 Super 객체지향으로 개발속도가 빠르고 피로도가 덜하다는 점이 있다.
마치 잘 다듬어진 벽돌들을 끼워맞추는 듯한 재미있는 언어이다.
다트는 구글의 차세대 OS 퓨시아에서 메인으로 사용되는 언어로 개발되었다. 퓨시아는 16년도부터 개발된 것으로 알려졌고 컴퓨터, 스마트폰, 웨어러블, IoT등을 통합할 목적으로 개발되고 있는 구글의 야심찬 프로젝트이다. 퓨시아에서는 기존의 안드로이드 어플리케이션이 구동되기에 당연히 플러터로 개발한 어플리케이션도 구동이 되며 다트를 메인으로 사용하기에 퓨시아만 엎어지지 않는다면 플러터의 전망은 매우 밝다.
퓨시아의 개발 소식이 떠들썩하게 알려지지는 않지만 Github에 소스가 오픈되어있고 구글이 퓨시아를 개발중인 정황은 볼 수 있다. 현재 돌아다니는 정보에 의하면 3~5년내에 대외적으로 발표될 것이라고 한다. 따라서 지금 플러터를 배우는 것은 미래에 투자하는 것과 같다.
Flutter과 리액트 네이티브의 비교
플러터를 찾아보며 가장 많이 궁금해하는 부분일 것이다.
필자도 물론, 플러터를 공부하는 대다수의 개발자들이 똑같은 고민을 했다고 확신한다.
혹자는 리액트 네이티브가 질 좋은 돌을 깎아 그걸로 집을 만든다면, 플러터는 잘 다듬어진 벽돌로 집을 만드는 거라고 했다.
리액트 네이티브는 페이스북에서의 공식 지원이 중단되었다. 크로스 플랫폼 프레임워크 시장에서 플러터의 성장이 가파른 만큼 당장에 취업을 목적으로 하는게 아니라면 플러터를 추천한다.
필자는 리액트 네이티브에 대해 자세히 알지 못해 더 이상 자세하게 설명하지 않겠다.
아래의 영상과 글을 참고하고, 여러 블로그들의 좋은 글들을 찾아보기 바란다.
'Flutter > About Flutter' 카테고리의 다른 글
플러터 1년차가 말하는 '정말 배워도 괜찮을까?' (8) | 2021.12.14 |
---|