본문 바로가기
개발자 공부

프레임워크? 라이브러리?

by Dev_Hugh 2023. 11. 9.
728x90
반응형

프레임워크 (Framework)

- 원하는 기능구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격(혹은 뼈대)를 의미

- 어플리케이션 개발 시 필수적인 코드, 알고리즘, DB 연동과 같은 기능들을 위해 어느 정도 구조를 제공하며 이러한 구조 위에서 사용자는 코드를 작성하여 어플리케이션을 개발한다. 앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분은 프레임 워크가 관리하고 사용자는 프레임워크에서 규정한 방식대로 클래스 및 메서드들을 구현한다.

 

라이브러리 (Library)

- 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임

- 그냥 쉽게 말해서 특정 기능을 모아둔 코드 (사실상 함수) 들의 집합으로 코드 작성시 활용 가능한 도구들을 의미

 

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

* 막상 이렇게 보면 결국 프레임 워크는 라이브러리의 집합이지 않을까? 라는 생각이 드는데 절대 아니다!

- 라이브러리를 사용하는 어플리케이션 코드는 어플리케이션의흐름을 직접 제어한다. 단지 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 활용할 뿐이다!

 - 프레임워크는 거꾸로 어플리케이션 코드가 프레임워크에 의해 사용된다. 따라서 프레임워크에는 분명한 '제어의 역전' 개념이 적용되어 있어야 한다!

- 결론은 '제어 흐름'의 권한이 어디에 있는지를 봐야한다. 라이브러리의 경우 어플리케이션의 흐름을 사용자가 직접 제어해야 하지만 프레임워크의 경우 코드를 연결할 수 있는 위치를 제공하고 필요에 따라 사용자가 연결한 코드를 호출하는 제어 흐름 권한을 가지고 있다. 

프레임워크와 라이브러리 사용자 코드의 관계도

 

예시 정리

1) Java 서버 개발에 사용되는 Spring은 프레임워크다.

2) 안드로이드 앱 개발에 사용되는 Android는 프레임워크다.

3) C++의 표준 템플릿 라이브러리(STL)은 라이브러리다.

4) 웹에서 사용자 인터페이스 개발에 사용되는 React.js는 라이브러리다.

728x90
반응형

'개발자 공부' 카테고리의 다른 글

컴퓨터 메모리 저장 방식과 2차원 for문 관계  (0) 2023.12.14
[운영 체제] 신입 필수 기본기 1  (0) 2023.11.10
메모리 구조  (0) 2023.11.09
SOLID 원칙  (0) 2023.06.20