소프트웨어의 구성요소 중 한 가지로, API를 기반으로 대상 환경(플랫폼:Linux, macOS, Windows)에서 바로 실행될 수 있도록 모듈화된 프로그램 모음이다
자주 쓰는 메소드 및 함수들을 미리 구현해 놓고, 프로그램에 추가해서 사용하는 형태가 된다
사용자가 직접 일반적인 조작으로 실행할 수 없으며, 해당 라이브러리의 기능을 직접 호출하는 프로그램을 실행하거나, 사용자가 해당 라이브러리의 기능을 실행하는 API를 사용하는 프로그램을 직접 개발하면 실행할 수 있다.
즉, 자주 사용되는 로직들의 모음 혹은 묶음으로, 자주 쓰는 메소드 및 함수들을 미리 구현해 놓고, 프로그램에 추가해서 사용하는 형태이다.
미리 만들어 놓은 기능들을 사용하기 편하고 빠르게 개발을 진행할수 있게 된다.
어떠한 목적을 달성하기 위해 복잡하게 얽혀있는 문제를 해결하기 위한 구조로, 소프트웨어 개발에 있어 하나의 뼈대 역할을 한다.
여러 기능을 가진 클래스와 라이브러리가 '특정 결과물을 구현하고자' 합쳐진 형태라고 볼 수 있다.
즉, 프레임워크는 개발자가 개발을 쉽게 할 수 있도록 뼈대를 제공해준다고 생각하면 된다.
프레임워크와 라이브러리는 큰 차이는 점은 제어 흐름의 주도권이 어디에 있는가에 있다.
프레임워크는 전체적인 흐름을 제어하고 있으며 개발자는 그 안에서 필요한 코드를 넣는 반면에 라이브러리는 개발자가 전체적인 흐름을 만들며 라이브러리를 사용하는 것이라 할 수 있다.
비유적인 표현으로는 자동자가 프레임이라면 거기에 속한 바퀴, 핸들 등은 라이브러리라라고 할 수 있다.
https://www.devkuma.com/docs/framework-and-library/
https://namu.wiki/w/%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC
https://namu.wiki/w/%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC
https://velog.io/@nemo/framework-library-gfreqbgx#%EA%B2%B0%EB%A1%A0
https://code-lab1.tistory.com/284