

플러터 소개
플러터(Flutter)는 구글이 개발한 크로스 플랫폼 프레임워크(cross platform framework)이다.
크로스 플랫폼이란 하나의 코드베이스로 여러 운영 체제나 플랫폼에서 실행할 수 있는 애플리케이션을 만들 수 있는 기술을 의미한다.
초기에 플러터는 안드로이드와 iOS 모바일 운영체제를 위한 앱 개발만을 지원했다.
그러나 현재는 그 범위가 크게 확장되어 웹사이트, macOS, 윈도우, 리눅스 데스크톱 애플리케이션까지 개발할 수 있게 되었다.
이는 플러터의 유연성과 확장성을 잘 보여주는 예시이다.
플러터 장점
플러터를 사용하여 개발하면 단일 소스 코드로 다양한 플랫폼에 대응할 수 있어 여러 가지 이점이 있다:
1. 개발 비용 절감: 각 플랫폼별로 별도의 개발 팀을 운영할 필요가 없어진다.
2. 관리 부담 감소: 하나의 코드베이스만 관리하면 되므로 유지보수가 용이하다.
3. 일관된 사용자 경험: 모든 플랫폼에서 동일한 look and feel을 제공할 수 있다.
플러터는 기존에 리액트 네이티브(React Native)가 주도하던 크로스 플랫폼 앱 개발 프레임워크 시장에서 상당한 점유율을 차지하게 되었다.
이는 다음과 같은 플러터의 장점 때문이다:
1. 상대적으로 쉬운 학습 곡선: 다트(Dart) 언어를 사용하며, 직관적인 UI 구성 방식을 제공한다.
2. 자연스러운 크로스 플랫폼 호환성: 플러터의 렌더링 방식 덕분에 각 플랫폼에서 일관된 모습을 보여준다.
3. 구글의 강력한 지원: 대형 기술 기업의 지원은 지속적인 개발과 안정성을 보장한다.
플러터의 또 다른 큰 장점은 플랫폼 간의 이질감이 적다는 것입니다. 기존의 크로스 플랫폼 프레임워크들은 주로 개발자가 작성한 코드를 각 플랫폼의 네이티브 코드로 변환하는 방식을 사용했다.
그러나 플러터는 이와 다른 접근 방식을 취한다:
1. 스키아(Skia) 엔진 사용: 플러터는 구글이 개발한 2D 렌더링 엔진인 스키아와 직접 통신한다.
2. 일관된 API: 스키아 엔진이 지원되는 모든 플랫폼에서 동일한 API를 사용하여 프로그래밍할 수 있다.
3. 통일된 UI: 이러한 방식 덕분에 플러터는 모든 지원 플랫폼에서 일관된 사용자 인터페이스를 제공할 수 있다.
4. 디버깅 부담 감소: 플랫폼별 UI 차이로 인한 디버깅 필요성이 크게 줄어든다.
이러한 특징들로 인해 플러터는 앞으로 더욱 주목받고 성장할 것으로 예상되는 프레임워크이다.
플러터 구조
플러터 프레임워크는 세 개의 주요 계층으로 구성되어 있다.
각 계층은 특정 역할을 담당하며, 이들이 조화롭게 작동하여 플러터의 강력한 기능을 제공한다.
1. 임베더(Embedder) 계층:
- 위치: 하드웨어와 가장 가까운 로우 레벨
- 역할: 플러터가 지원하는 6개 플랫폼(iOS, Android, Web, Windows, macOS, Linux)의 네이티브 시스템과 직접 통신
- 특징: 각 플랫폼의 네이티브 언어(예: iOS의 Swift/Objective-C, Android의 Java/Kotlin)로 작성되어 있음
- 기능: 운영체제의 고유 기능들을 모듈화하여 플러터 애플리케이션이 이용할 수 있게 함
2. 엔진(Engine) 계층:
- 위치: 중간 계층
- 주요 언어: C++
- 포함 요소:
- 플러터 코어 API: 플러터의 핵심 기능을 정의
- 스키아 그래픽 엔진: 2D 렌더링을 담당
- 파일 시스템 접근 기능
- 네트워크 기능
- 역할: 임베더 계층과 프레임워크 계층 사이의 중개자 역할을 수행
3. 프레임워크(Framework) 계층:
- 위치: 최상위 계층
- 특징: 플러터 개발자들이 주로 상호작용하는 계층
- 주요 구성 요소:
- 위젯(Widgets): UI 구성의 기본 단위
- 애니메이션(Animation): 동적 UI 효과 구현
- 머티리얼(Material) 패키지: 구글의 머티리얼 디자인 구현
- 쿠퍼티노(Cupertino) 패키지: iOS 스타일의 UI 구현
- 역할: 개발자들이 실제로 앱을 구현하는 데 필요한 도구와 컴포넌트 제공
이러한 세 계층 구조와 모듈화된 아키텍처 덕분에 플러터는 다음과 같은 이점을 제공한다:
1. 다중 플랫폼 지원의 용이성
2. 일관된 API 제공
3. 통일된 개발 경험
플러터가 스키아 엔진과 직접 통신한다는 점은 매우 중요하다.
이는 스키아 엔진을 지원하는 어떤 플랫폼에서도 플러터 애플리케이션을 실행할 수 있다는 것을 의미한다.
이러한 특성 덕분에 플러터 팀은 단순히 모바일 앱 개발에 그치지 않고, 데스크톱 애플리케이션과 웹사이트 개발까지 플러터의 영역을 확장할 수 있었다.
실제로, 플러터를 사용하면 하나의 코드베이스로 6가지 다른 플랫폼(iOS, Android, Web, Windows, macOS, Linux)을 대상으로 애플리케이션을 개발하고 배포할 수 있다. 이는 개발자와 기업에게 큰 이점을 제공한다.
플러터가 스키아 엔진을 사용함으로써 얻는 주요 이점은 다음과 같다:
1. 직접 렌더링: 대부분의 크로스 플랫폼 프레임워크가 웹뷰나 플랫폼 고유의 UI 라이브러리를 사용하는 것과 달리, 플러터는 스키아 엔진을 통해 UI를 직접 그려낸다.
2. 효율적인 렌더링: 플러터는 변경이 필요한 위젯만을 다시 렌더링한다. 이는 전체 화면을 다시 그리는 것보다 훨씬 효율적이며, 결과적으로 높은 성능을 제공한다.
3. 일관된 사용자 경험: 모든 플랫폼에서 동일한 렌더링 엔진을 사용하므로, 플랫폼 간 UI의 일관성이 유지된다.
4. 높은 성능: 플러터의 주요 경쟁자인 리액트 네이티브와 비교했을 때, 플러터는 자바스크립트 브릿지를 사용하지 않고 네이티브 코드로 컴파일되기 때문에 더 빠른 성능을 보여준다.
5. 낮은 오버헤드: 리액트 네이티브가 JavaScript 엔진과 네이티브 플랫폼 사이의 통신에 많은 리소스를 소비하는 반면, 플러터는 이러한 오버헤드가 없어 더 효율적이다.
6. 직접적인 제스처 및 이벤트 처리: 플러터는 사용자 입력과 이벤트를 브릿지를 거치지 않고 직접 처리할 수 있어, 반응성이 뛰어나다.
이러한 특성들로 인해 플러터는 높은 성능, 일관된 사용자 경험, 그리고 개발의 효율성을 모두 제공할 수 있는 강력한 크로스 플랫폼 프레임워크로 자리잡고 있다.
'Flutter 초급' 카테고리의 다른 글
Controller (1) | 2024.09.01 |
---|---|
StatelessWidget (0) | 2024.09.01 |
Semantic Versioning (1) | 2024.08.30 |
MainAxisAlignment, CrossAxisAlignmnet (0) | 2024.08.27 |
플러터 위젯 (0) | 2024.08.27 |

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!