쉽게 말해서 프로그램을 만들 때 필요한 기능들이라고 볼 수 있다. 기능 별로 구성하여 반복적인 코드 작성을 막기 위해서 언제든지 호출하여 사용할 수 있는( 재사용이 가능한 ) class 나 function으로 만들어진 것이다.
대표적인 예시로 React( 사용자 인터페이스를 만들기 위한 JavaScript 라이브러리 ) 나 jQuery 등이 있다.
뼈대나 골조를 의미하는 프레임워크는 원하는 기능을 빠르게 개발할 수 있도록 기본적인 기능을 갖추고 있고 라이브러리를 포함한 넓은 영역이다. 프레임워크는 프레임워크가 정의한 규칙을 준수해야하는 특징이 있다.
대표적인 예시로 Spring, Django, AngularJS 등이 있다.
둘의 가장 큰 차이점은 유연성(자유도)이다. 프레임워크를 이용하여 프로그램을 만들면 계속 정해진 규칙을 지켜야하지만 라이브러리는 도구이기 때문에 자유로운 편이다.
설비가 갖춰졌지만 건물 내의 규칙을 따라야하는 공장 = 프레임워크
망치나 드라이버 등이 들어있어 자유롭게 이용할 수 있는 공구상자 = 라이브러리
참고 - https://ko.wikipedia.org/wiki/%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC_(%EC%BB%B4%ED%93%A8%ED%8C%85) // https://ko.wikipedia.org/wiki/%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC // https://engkimbs.tistory.com/673