프레임워크는 단지 미리 만들어준 반제품이나, 확장해서 사용할 수 있도록 준비된 추상 라이브러리의 집합이 아니다. 프레임워크가 어떤 것인지 이해하려면 라이브러리와 프레임워크가 어떻게 다른지 알아야 한다.
두개의 차이점은 제어 흐름의 권한이 어디에 있는가이다.
라이브러리를 사용할 때 사용자는 애플리케이션 코드의 흐름을 직접 제어한다. 개발 시 필요한 기능이 있을 경우 능동적으로 라이브러리를 호출하여 사용하거나 기존에 구성된 함수나 코드를 가져다 사용한다.
프레임워크는 애플리케이션 코드가 프레임워크에 의해 사용된다.
애플리케이션 코드는 프레임워크가 짜 놓은 틀에서 수동적으로 동작하기 때문에 제어의 흐름은 프레임워크가 가지고 있고 사용자는 그 안에 필요한 코드를 작성하게 된다.
즉 어떠한 일을 한도록 만들어진 프레임워크에 컨트롤 권한을 위힘하는 것을 의미한다.