개발

[개발지식] 라이브러리 vs 프레임워크

김나나_ 2024. 7. 19. 11:28

 

📌 라이브러리

  • 단순 활용가능한 도구들의 집합
  • 개발자가 필요에 따라 라이브러리를 선택하여 사용할 수 있다.
  • 예시
    • TensorFlow: 머신러닝과 딥러닝을 위한 Python 라이브러리
    • Pandas: 데이터 분석과 조작을 위한 Python 라이브러리
    • Numpy: 수치 계산을 위한 Python 라이브러리
    • jQeury: HTML 문서 탐색 및 조작, 이벤트 처리, 애니메이션, Ajax를 쉽게 처리할 수 있게 하는 Javascript 라이브러리
    • Lodash: JavaScript 유틸리티 라이브러리로서 배열, 객체, 문자열 등 다양한 작업을 편리하게 처리할 수 있게 한다.

 

 

📌 프레임워크

  • 프레임워크는 코드를 프레임에 맞춰서 개발한다.
    ex) vue에서는 파일을 만들 때 .vue 라는 형태에 맞춰 사용한다.
  • 프레임워크는 프레임을 따라 개발하는 데에 최적화된 형태일 뿐 아니라 라이브러리와 달리 더 많은 기능을 디폴트고 제공한다.
  • 프레임워크는 애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 연동과 같은 기능을 위해 어느정도 구조(뼈대)를 제공하고, 이러한 구조 위에서 사용자가 코드를 작성해서 애플리케이션을 개발한다.
  • 예시
    • JAVA 서버 개발에 사용되는 Spring Framework
    • Python 서버 개발에 사용 되는 Django, Flask
    • 안드로이드 앱 개발에 사용되는 android
    • 웹 개발에 사용되는 Angular, Vue.js
    • JAVA 기반의 JSPP 를 위한 Struts

 

📌 라이브러리와 프레임워크의 차이점

1) 제어의 역전 (Inversion of Contorl, IoC)

라이브러리와 프레임워크의 가장 큰 차이점은 제어 흐름에 대한 주도성이 누구에게/어디에 있는가에 있다. 즉, 어플리케이션의 Flow(흐름)을 누가 쥐고 있느냐에 있다.

 

프레임워크는 전체적인 흐름을 프레임워크가 쥐고 있으며 사용자는 그 안에 필요한 코드를 짜 넣으면 된다.

라이브러리는 사용자가 전체적인 흐름을 직접 만들고 필요에 따라 라이브러리를 가져다가 쓴다.

 

라이브러리: 사용자가 흐름을 잡는다. 필요에 따라 라이브러리를 가져다 쓴다.
프레임워크: 프레임워크가 흐름을 잡는다.

 

제어의 역전: 기존의 개발 방식에서 개발자가 직접 제어 흐름을 제어하는 것이 아니라, 외부의 프레임워크나 라이브러리가 제어 흐름을 대신하게 되는 것

 


2) 구조 제공 유무

프레임워크는 전체 어플리케이션의 구조를 정의하여 일정한 개발 패턴을 따르게끔 한다. 앞서 말한 제어 흐름을 가지고 있다는 것과 유사한 의미이다.

 

라이브러리는 특정 기능만을 제공할 뿐 어플리케이션의 전체 구조에는 관여하지 않는다. 사용하는 개발자 스스로 원하는 방식으로 구조를 설계할 수 있다.

 

 

📌정리

<라이브러리>

1) 사용자가 흐름을 제어한다

2) 특정 기능만 제공할 뿐 어플리케이션의 전체 구조에는 관여하지 않는다

3) 사용자는 필요에 따라 라이브러리를 활용한다.

 

<프레임워크>

1) 프레임워크가 흐름을 제어한다 (제어 흐름을 가지고 있다.) => 제어의 역전 (IoC)

2) 전체 어플리케이션의 구조를 정의하여 일정한 개발 패턴을 따르게끔 한다. 

 

 

 

참고:

https://brunch.co.kr/@skykamja24/573

 

리액트(React.js)와 뷰(Vue.js)의 차이점

초급 프론트엔드개발자를 위한 쉬운 설명 | UI 라이브러리 vs 프레임워크 먼저 리액트는 UI 라이브러리입니다.(https://reactjs.org/) 다들 아시겠지만 라이브러리는 참조가 쉽고, 라이브러리의 일부분

brunch.co.kr

https://idkim97.github.io/2022-08-16-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC%20vs%20%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC/

 

[개발상식] 프레임워크(Framework)와 라이브러리(Library)의 차이

프레임워크 라이브러리 차이. 라이브러리 프레임워크 차이.

idkim97.github.io

https://hudi.blog/inversion-of-control/

 

제어의 역전 (Inversion Of Control, IoC)

학습 동기 우아한테크코스 레벨2에서 스프링을 본격적으로 사용하면서, 스프링에서 제공하는 의존성 주입과 스프링 빈(Bean)을 접하게 되었다. 이 개념들에 익숙해지기 전 밀접하게 관련이 있어

hudi.blog

https://velog.io/@kwontae1313/%EC%A0%9C%EC%96%B4-%EC%97%AD%EC%A0%84IoC%EA%B3%BC-%EC%9D%98%EC%A1%B4%EC%84%B1-%EC%A3%BC%EC%9E%85DI

 

제어의 역전(IoC)

프레임워크와 라이브러리의 가장 큰 차이점을 제어의 역전(IoC)라고 하였다. 제어하는 것은 개발자의 역할이라고 생각하지만, 프레임워크를 쓰게 되면 프레임워크의 틀안에서 개발자의 짜둔 어

velog.io