
프레임워크와 라이브리를 가장 크게 구분하는 기준은
이들를 활용하여 프로그래밍을 구현할 때 제어의 주체가 어느 쪽에 있는가 입니다.
프레임워크를 먼저 이야기하면,
우리가 가장 잘 아는 안드로이드나 스프링의 경우는
흐름과 객체간 연동의 대부분은 이미 구현되어 있습니다.
즉, 제어의 주체가 프레임워크에 있는 것이지요.
프로그래머가 어디에 어떤 코드를 넣어야 하고,
그렇게 넣은 코드가 어떻게 호출되고,
연동되는가는 이미 구현이 되어있기 때문에(한마디로 틀(프레임)이 짜여있는),
프레임워크 자체에 대한 학습이 필요하고,
적당한 위치에 코드를 넣는(placeholder) 구현을 해야합니다.
따라서 검증된 프레임워크를 사용하게 되면
그만큼 생산의 속도가 빠르고 좋은 품질의 프로그램을 개발할 수 있는 가능성이 높겠죠.
이에 반해 라이브러리,
소위 SDK(Software Development Kit), JDK(Java Development Kit), STL(Standard Template Library)등은
프로그래머가 구현할 때 필요해서 가져다 쓰는 기능들의 집합입니다.
간단하게는 하나의 함수 일수도 있고,
인터페이스, 클래스 등등 일수 있겠죠.
프로그램에 대한 전체적인 제어와 흐름은 모두 프로그래머의 책임입니다.
따라서 어떤 라이브러리를 불러다 쓴다고 할 때
가끔 콜백 함수(시스템이 호출하는 함수)가 있을 수는 있지만,
전반적인 프로그래밍에 대한 제어권은 프로그래머에게 있는 것입니다.
어떤 클래스가 생성되고 어떻게 협력이 이루어지고
어느 경우 함수가 호출 되는가 등등을
모두 프로그래머가 구현하는 것이죠.
가끔 혼용해서 쓰는 경우들도 많고,
둘 다 이미 만들어진 것을 가져다 쓰는 거라 비슷한 거라
오해하는 분들도 있어서 간단히 정리해보았습니다.
끝.