📌 라이브러리
- 단순 활용가능한 도구들의 집합
- 개발자가 필요에 따라 라이브러리를 선택하여 사용할 수 있다.
- 예시
- 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
[개발상식] 프레임워크(Framework)와 라이브러리(Library)의 차이
프레임워크 라이브러리 차이. 라이브러리 프레임워크 차이.
idkim97.github.io
https://hudi.blog/inversion-of-control/
제어의 역전 (Inversion Of Control, IoC)
학습 동기 우아한테크코스 레벨2에서 스프링을 본격적으로 사용하면서, 스프링에서 제공하는 의존성 주입과 스프링 빈(Bean)을 접하게 되었다. 이 개념들에 익숙해지기 전 밀접하게 관련이 있어
hudi.blog
제어의 역전(IoC)
프레임워크와 라이브러리의 가장 큰 차이점을 제어의 역전(IoC)라고 하였다. 제어하는 것은 개발자의 역할이라고 생각하지만, 프레임워크를 쓰게 되면 프레임워크의 틀안에서 개발자의 짜둔 어
velog.io