프레임워크와 라이브러리, 뭐가 달라요?

아주 쉽게, 그림으로

누가 흐름의 주도권을 쥐는지가 다릅니다
제어의 역전(control)이라는 말도 여기서 나옵니다
더 보기
🧰 라이브러리
내가 필요할 때 불러다 쓰는 도구 모음입니다
vs 🏗️ 프레임워크
정해진 틀 안에 내 코드를 채워 넣는 구조입니다
누가 흐름의 주도권을 쥐는지가 다릅니다
둘 다 남이 미리 만들어둔 코드를 가져다 쓴다는 점은 같지만, 주도권이 누구에게 있는지가 다릅니다. 라이브러리는 내가 필요한 기능만 골라서 원할 때 호출해서 쓰는 도구 모음이고, 프레임워크는 반대로 정해진 큰 틀이 이미 있고 그 틀 안의 정해진 자리에 내 코드를 채워 넣는 구조입니다. 그래서 흔히 '내가 라이브러리를 부른다'고 하고, '프레임워크가 나를 부른다'고 표현하기도 합니다.
🎛️🚦
제어의 역전(control)이라는 말도 여기서 나옵니다
프레임워크를 쓰면 전체 구조를 프레임워크가 정해주기 때문에 빠르게 표준적인 형태를 만들 수 있지만, 그만큼 정해진 규칙을 따라야 하는 제약도 생깁니다. 반대로 라이브러리는 자유롭지만, 전체 구조를 스스로 설계해야 하는 부담이 남습니다.
한 줄로: 라이브러리와 프레임워크는 누가 흐름의 주도권을 쥐는지가 다른 두 가지 코드 재사용 방식입니다.

출처: 일반 통용 정의