플러터

[Flutter] 플러터 하기 전 OS 배경 학습...

OS

응용프로그램이 실행되는 과정에서 하드웨어를 제어하여

응용프로그램을 실행시키고 실행 결과를 보일 수 있도록 컴퓨터 내부 동작을 관리하는 소프트웨어

  • 프로세스 관리 : 프로세스를 생성하고 실행을 제어, 관리하는 기능
  • 메인 메모리 관리 : 프로세스가 실행될 수 있도록 메인 메모리 공간을 할당하고 회수
  • 파일 관리 : 파일을 보조기억장치에 저장하고 파일 시스템을 운영하는 기능
  • 입출력 관리 : 컴퓨터 시스템에서의 입력과 출력을 관리하는 기능

----------

Windows의 장단점

장점

  • 사용자에게 가장 최적화 되어있는 OS
  • 명령의 입력이 아닌 클릭으로 여러 기능들 수행 가능
  • Windows의 프로그램의 일관성으로 인한 사용성의 증대

 

단점

  • 유료 사용
  • 사용자가 변경하여 이용 불가능
  • 버그, 에러가 발생해도 개발자의 개발을 기다려야 함
  • 개발자를 위한 환경 X

----------

Unix 장단점

장점

  • 현존하는 운영체제중 가장 이식성이 높아 여러 분야에 사용
  • 오랜 발전 기간을 바탕으로 안전성 확보
  • 위협으로부터 대응하기 위해 업계 표준의 다양한 보안 기능 탑재

 

단점

  • 하드웨어 호환성이 Windows에 비해 낮음
  • 멀티미디어를 사용하기 어려움

----------

 

Linux 장단점

장점

  • 오픈소스이므로 사용자가 원하는대로 수정해 이용할 수 있음
  • 버그나 에러사항이 발생했을 때 사용자가 그 자리에서 개선할 수 있음

 

단점

  • 배포될 때 커널과 소스들이 잘 정리되어 있지 않음
  • 오픈소스라서 실시간으로 처리해주는 것이 미약하고 보안에 취약함

----------

모바일 OS

  • 모바일 OS는 iOS 이전과 이후로 크게 나눠서 볼 수 있다.
  • 애플이 나오기 전 블랙베리, 윈도우, 심비안 입장에선 iOS와 안드로이드가 후발주자이고
    iOS가 멀티 터치 UI와 비교적 낮은 가격으로 더 많은 사용자들에게 쉽게 접근했다.
  • 애플과 아이폰을 기점으로 멀티터치 스마트폰과 태블릿의 대중화 시작되었다.
  • 더 후발 주자인 안드로이드가 오픈 소스를 무기로 애플을 제외한 다른 하드웨어 회사를 공략해 성공했다.

----------

iOS

  • 애플사가 만든 제품에만 탑재해 타회사의 제품은 iOS를 사용할 수 없다. (폐쇄형 OS)
  • 보안성이 강하다 -> iOS에선 앱스토어를 통해서만 어플 다운 받을 수 있음
  • 아름다운 인터페이스 -> 직관적인 인터페이스를 설계해 사용방법이 간단
  • iCloud -> 다른 클라우드와 달리 모든 종류의 파일이 모든 기기에서 함께 공유 가능 (애플사만)

----------

안드로이드

개방성

  • 벤더에 따라 본인들의 특색에 맞는 프로그램과 기기를 만들 수 있음
  • 안드로이드 개발자들 역시 API를 사용하여 손쉽게 어플을 만들 수 있음
  • 등록비 X, 라이센스 비용 X

개발 최적화

  • Webkit 엔진을 기반으로 통합 브라우저 제공
  • 다양한 서비스와 연계 가능

----------

모바일 앱

  • 모바일 디바이스에 애플리케이션을 설치해 사용하는 프로그램
  • 사용자와의 밀착성이 높고, 빠르며, 개인에 특화된 서비스 이용 가능
  • 개발 방식 및 구성에 따라 네이티브 앱, 웹앱, 하이브리드 앱으로 나뉨

----------

네이티브 앱

  • 각 모바일 운영체제의 공급자, 안드로이드의 구글, iOS의 애플이 해당 OS에서 구동되는 앱 개발에 최적화된 프레임워크를 제공하는데, 이 프레임워크를 사용해 개발한 앱
  • 안드로이드는 개발 도구로 안드로이드 스튜디오, 개발 언어로 자바 or 코틀린 사용
  • iOS는 맥OS 환경에서만 개발이 가능하며 개발 도구로 XCode, 개발언어로 Swift or Objective-C를 사용

장점

  • 운영체제 제공자가 제공하는 프레임워크를 사용하기 때문에 다른 방식보다 빠름
  • 기기의 자원을 최대한 활용할 수 있어서 서비스하려는 내용을 사용자에게 가장 빠르고 풍부하게 제공할 수 있음

 

단점

  • OS 및 앱 개발 프레임워크가 업그레이드 되는 과정에 기존에 사용하던 코드를 사용할 수 없는 경우 발생
  • 사용자가 다양한 버전의 운영체제를 사용하기 때문에 시간이 흐를 수록 버전 관리가 부담

----------

웹앱

  • 웹 기술을 이용해 만든 앱
  • 앱의 화면을 나타내는 View를 모바일용 웹으로 만들어 다양한 기종에 적용 가능
  • 요즘은 네이티브 앱처럼 알림도 보내고 오프라인에서도 동작하는 프로그레시브 앱도 많이 사용
  • 서버에서 모든 데이터를 가져와 보여주는 방싱기기 때문에 속도가 느릴 수 있음

장점

  • 다양한 기종과 해상도에 대응해 빠르게 개발 가능
  • 모바일웹과 마찬가지로, 개발 및 유지보수 비용이 적게 듬

단점

  • 기기 자원을 제한적으로만 사용할 수 있음

----------

하이브리드 앱

  • 네이티브앱과 웹앱을 반반 섞어놓은 형태
  • 웹 기술로 앱 화면을 만든 후 네이티브 기술로 감싸 앱 형태를 만듬
  • 네이티브앱과 웹앱의 장점을 가져와 단점을 보안한 형태이기 때문에, 많은 서비스 사업자가 이 방식을 사용
  • 다만 네이티브 성능에 미치지 못하며, UI도 별도로 만들어야 하므로 네이티브의 느낌이 들지 않음

장점

  • 웹 기술을 사용하여 빠르게 개발하면서도 네이티브의 기술을 대부분 사용 가능

단점

  • 네이티브 앱에 비해 조금 느린 속도를 가짐
  • 애니메이션 사용에도 제약이 있음
  • 스마트폰의 성능을 충분히 활용할 수 없음

'플러터' 카테고리의 다른 글

[Flutter] Native API 활용에 관해...  (0) 2021.11.12
[Flutter] Dart 기본문법에 관해...  (0) 2021.11.09