개발자 면접 공부/운영체제,CS

라이브러리 vs 프레임워크

chogyujin 2023. 5. 21. 14:17
728x90

오늘은 라이브러리와 프레임워크에 차이점에 대해 알아보도록 하겠습니다.

 


1. 개요

라이브러리랑 프레임워크 얼핏 프로그래머 사이에서 들으면 매우 비슷해 보이는 단어입니다.

저 또한, 비슷해 보이는 단어로 알고있었습니다.

하지만 이 또한, 엄연히 다른 단어입니다.

한개씩 알아보도록 하겠습니다.

 


2. 라이브러리(Library)

라이브러리란 위키백과에서는

라이브러리는 주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다.
여기에서 구성 데이터, 문서, 도움말, 메시지 틀, 미리 작성된 코드, 함수, 클래스, 값, 자료형 사양 등을 포함할 수 있다.

라고 설명이 되있습니다.

라이브러리는 쉽개 말해서 개발에 필요한 것들을 미리 구현해놓은 도구라고 할 수있습니다. 재사용이 가능한 기능을 미리 구현해놓고 필요한 곳에서 호출하여 사용 가능하도록 만들어진 집합이라고 보시면 됩니다.

 

ex) C++ STL, Python Pip 설치한 패키지 모듈 등

 


3. 프레임워크(FrameWork)

프레임워크란 위키백과에서는

프레임워크는 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조이다.

라고 설명이 되있습니다.

 

프레임워크는 애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 커넥션 등의 기능들을 위해 뼈대(구조)를 제공한 기능을 가지고있습니다.

개발자는 이러한 뼈대 위에서 코드를 작성해 원하는 애플리케이션을 개발할 수 있습니다.

 

프레임워크는 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 상호 협력하는 클래스와 인터페이스의 집합이라고 할 수 있습니다.

 

쉽게 말해 프레임워크는 개발자가 개발을 쉽게 도와주는 뼈대를 제공해주는 구조라고 생각히시면 편합니다.

 

ex) Java Spring , Python Django 등이 있습니다.

 


4. 둘의 차이점

출처 : https://code-lab1.tistory.com/284

프레임워크는 라이브러리를 포함하며 프레임워크 위에 개발자가 작성한 애플리케이션 코드가 올라가게 되고, 이 애플리케이션 코드에서는 라이브러리를 호출할 수 있습니다.

 

이처럼 프레임워크와 라이브러리의 가장 큰 차이점은 "제어 흐름"이 어디에 있는가에 차이점이 있습니다.

 

프레임워크는 제어의 역전 개념이 적용되어 있습니다. 즉, 프레임워크에게 제어의 흐름을 넘겨 개발자가 작성하는 코드에서 신경 써야 할 부분을 줄인다는 뜻입니다.

 

프레임워크는 전체적인 흐름을 쥐고 있으며 애플리케이션의 코드는 프레임워크에 의해 사용된다고 보면 무방합니다.

애플리케이션 코드는 프레임워크가 짜놓은 틀 안에서 수동적으로 동작하기 때문에 제어의 흐름은 프레임워크에게 있다.

 

반면 라이브러리는 개발자가 전체적인 흐름을 만들며 라이브러리를 가져다 쓰게 됩니다.

개발자에게 전적으로 제어흐름이 있으며 필요할 때마다 능동적으로 라이브러리를 호출하여 사용합니다.


5. 요약

프레임워크 = 제어권한이 수동적이여서 개발자에게 전부 제어가 있지가 않다.

라이브러리 = 제어권한이 능동적이여서 개발자에게 전적으로 제어흐름이 있다.

 


6. Ref

https://code-lab1.tistory.com/284

 

프레임워크(Framework)와 라이브러리(Library)의 차이

프레임워크(Framework)란? 프레임워크는 복잡한 문제를 해결하거나 서술하는 데 사용되는 개본 개념 구조이다. -위키백과- 프레임워크는 애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 커넥션

code-lab1.tistory.com

 

'개발자 면접 공부 > 운영체제,CS' 카테고리의 다른 글

캐시메모리와 지역성 그리고 캐시라인  (0) 2023.11.30
Race Condition 경쟁상태  (0) 2023.10.28
RBT(Red Black Tree) VS 힙  (0) 2022.11.21
해쉬 테이블(Hash Table)  (0) 2022.11.15
UTF-8 vs UTF-16  (0) 2022.09.16