프레임워크 (Framework)
- 원하는 기능구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격(혹은 뼈대)를 의미
- 어플리케이션 개발 시 필수적인 코드, 알고리즘, DB 연동과 같은 기능들을 위해 어느 정도 구조를 제공하며 이러한 구조 위에서 사용자는 코드를 작성하여 어플리케이션을 개발한다. 앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분은 프레임 워크가 관리하고 사용자는 프레임워크에서 규정한 방식대로 클래스 및 메서드들을 구현한다.
라이브러리 (Library)
- 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임
- 그냥 쉽게 말해서 특정 기능을 모아둔 코드 (사실상 함수) 들의 집합으로 코드 작성시 활용 가능한 도구들을 의미
프레임워크와 라이브러리의 차이
* 막상 이렇게 보면 결국 프레임 워크는 라이브러리의 집합이지 않을까? 라는 생각이 드는데 절대 아니다!
- 라이브러리를 사용하는 어플리케이션 코드는 어플리케이션의흐름을 직접 제어한다. 단지 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 활용할 뿐이다!
- 프레임워크는 거꾸로 어플리케이션 코드가 프레임워크에 의해 사용된다. 따라서 프레임워크에는 분명한 '제어의 역전' 개념이 적용되어 있어야 한다!
- 결론은 '제어 흐름'의 권한이 어디에 있는지를 봐야한다. 라이브러리의 경우 어플리케이션의 흐름을 사용자가 직접 제어해야 하지만 프레임워크의 경우 코드를 연결할 수 있는 위치를 제공하고 필요에 따라 사용자가 연결한 코드를 호출하는 제어 흐름 권한을 가지고 있다.
예시 정리
1) Java 서버 개발에 사용되는 Spring은 프레임워크다.
2) 안드로이드 앱 개발에 사용되는 Android는 프레임워크다.
3) C++의 표준 템플릿 라이브러리(STL)은 라이브러리다.
4) 웹에서 사용자 인터페이스 개발에 사용되는 React.js는 라이브러리다.
'컴퓨터 구조, 운영체제' 카테고리의 다른 글
컴퓨터 메모리 저장 방식과 2차원 for문 관계 (0) | 2023.12.14 |
---|---|
[운영 체제] 신입 필수 기본기 1 (0) | 2023.11.10 |
메모리 구조 (0) | 2023.11.09 |
SOLID 원칙 (0) | 2023.06.20 |