라이브러리 vs 프레임워크

Lemon·2022년 4월 2일
0
post-thumbnail

🔧라이브러리(Library)란?

장남감 키트를 예로 들자면 장남감들을 만들 때 자기 손으로 만들든, 다른 이의 도움을 받든, 망치를 가지고 만들든 상관없습니다. 편한대로 알맞은 도구를 사용하면 되는겁니다. 라이브러리는 이런 작은 개념입니다. 망치나 가위같은 도구의 모음이라고 생각하면 됩니다. 요약하자면 라이브러리는 소프트웨어를 개발하기 쉽게 어떤 기능을 제공하는 도구들입니다. 한 프로젝트에서 여러개 사용 가능합니다.


🏢프레임워크(Framework)란?

프레임워크는 장남감 키트의 어떤 일정한 부품, 틀인 키트를 제공해주는 장남감 제조사 입니다. 장남감을 만들기 위한 요소들을 제공해주는 것입니다. 때문에 라이브러리보다 큰 개념입니다. 각종 라이브러리와 코드들이 모여 프레임워크가 됩니다. 즉, 프레임워크는 특정 프로그램을 개발하기 위한 여러 요소들과 메뉴얼인 룰을 제공라는 프로그램입니다. 소프트웨어의 생산성과 품질을 높이는 역할을 합니다. 프레임워크는 한 프로젝트에 하나만 쓸 수 있습니다.


➕공통점

프레임워크랑 라이브러리는 다른 사람들이 만들어놓은 코드입니다. 우리가 만드는 프로젝트를 좀 더 쉽고 빠르게 작업할 수 있도록 개발자들이 작성한 재사용 가능한 코드라는 공통점이 있습니다.


➖차이점

라이브러리와 프레임워크는 누가 누구를 컨트롤하는가로 나뉩니다. 이걸 “코드 흐름의 제어권”이 누구에게 있는가라고 표현합니다.
즉, 내가 코드를 컨트롤 하는건지, 누군가의 규칙에 따라 코딩하는건지가 큰 차이점 입니다.


1. 🔧라이브러리(Library)

라이브러리는 내가 필요할 때 내가 부르는 것입니다. 필요한 라이브러리를 직접 선택할 수 있습니다. 내가 원하면 다른것으로 대체 가능합니다.
대표적으로 ReactjQuery를 많이 씁니다. 따라서 내가 필요할 때 내가 React와 jQuery를 부르고 직접 코딩합니다. 내가 원한다면 React와 jQuery를 다른 것으로 대체할 수 있습니다.


2. 🏨프레임워크(Framework)

프레임워크는 내가 부르는게 아닙니다. 프레임워크가 나를 부릅니다. 개발자가 구현한 메서드가 프레임워크에 의해 호출됩니다. 이를 제어의 역전(IoC: Inversion of Control)이라고 합니다. 내가 코드의 규칙을 결정하는 입장이 아니라 프레임워크의 규칙을 따라야합니다. 프레임워크에서 어디에 코드를 넣어야 하는지 알려줍니다. 규칙에 따라서 넣으면 모든게 정상작동됩니다.
대표적으로 장고 웹 프레임워크를 사용합니다. 장고 웹 프레임워크는 규칙이 정말 많습니다. 잘 작동하길 바란다면 그 규칙을 따라야합니다. 예를들어 장고에서 어드민 패널을 만들고 싶다면 무조건 코드를 admin.py에 써야합니다. URL을 변경하고 싶다면 반드시 파일면을 url.py로 해야합니다. 이것은 바꿀 수 없는 장고의 규칙입니다. 이처럼 프레임워크는 프레임워크가 정한 규칙에 대해 학습하는데 시간이 소요됩니다. 하지만 익숙해지면 시간이 단축되고, 안전한 구조의 개발을 할 수 있습니다.

언어별로 유명한 프레임워크는 아래와 같은 것들이 있습니다.

  • 자바 : 스프링(Spring)
  • 파이썬 : 장고(Django)
  • 루비(Ruby) : 레일스(Rails)
  • JavaScript : 익스프레스(Express.js)

+ App Frameworks

App Frameworks” 를 검색하면 애플리케이션을 만드는데 필요한 프레임워크들이 나옵니다.

🍎iOS의 애플리케이션

  • Appkit : 맥OS에 올라가는 애플리케이션을 개발하기 위한 프레임워크입니다.
  • UIKit : iOS혹은 tvOS에 올라가는 애플리케이션을 개발하기 위한 프레임워크입니다.
  • UIButton : 버튼을 위한 코드입니다. 애플 개발자 문서에 친절하게 설명되어있습니다. 해당 속성을 변경하면 디자인이나 글씨 등을 바꿀 수 있습니다.

애플은 기기가 많아서 기기별로 프레임워크들이 존재합니다. 애플에서는 이 프레임워크들을 통칭해서 코코아 프레임워크라고 부릅니다.

🤖안드로이드 애플리케이션

안드로이드 프레임워크 사용합니다.


🤔누가 만들까?

웹은 특정 회사의 소유가 아니라 모두의 것 입니다. 따라서 회사가 만들기도 하고 개인이 만들기도 합니다.

  • Angular.js : 구글 운영합니다.
  • React.js : 페이스북 만들었습니다.
  • Vue.js : Evan You(중국 사람)이 만들었습니다.



✍🏻최종 정리

  • 라이브러리 : 소프트웨어를 개발하기 쉽게 어떤 기능을 제공하는 도구들
  • 프레임워크 : 특정 프로그램을 개발하기 위한 여러 요소들과 메뉴얼인 룰을 제공라는 프로그램
  • 공통점 :
    프로젝트를 좀 더 쉽고 빠르게 작업할 수 있도록 개발자들이 작성한 재사용 가능한 코드
  • 차이점 :
    코드 흐름의 제어권이 누구에게 있는가에 따라 다릅니다.
    프레임워크 : 반드시 따라야하는 규칙이 있습니다.
    라이브러리 : 우리가 필요할 때 부르는 것입니다.
  • iOS는 코코아 프레임워크를 사용하고, 안드로이드는 안드로이드 프레임워크를 사용합니다.
  • 라이브러리와 프레임워크는 회사가 만들기도 하고, 개인이 만들기도 합니다.



참고
https://youtube.com/watch?v=t9ccIykXTCM&feature=share
[비전공자를 위한 이해할 수 있는 IT지식] 책 일부
https://curryyou.tistory.com/363
https://velog.io/@sy3783/프레임워크와-라이브러리의-차이는-무엇인가
https://engkimbs.tistory.com/673

profile
프론트엔드 개발자 가보자고~!!

0개의 댓글