라이브러리
소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다. ‘라이브러리’라는 이름처럼 내가 코딩을 하다가 필요한 코드를 불러서 가져다 쓰는 개념이다.
ex) JQuery, React
프레임워크
원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대를 의미한다. 프레임워크별로 정해진 규칙이 있고 그 규칙에 따라 코딩을 해야한다.
ex) Spring, Django
차이점 & 결론
가장 큰 차이는 주체가 어디에 있는지이다. 즉 제어 흐름의 권한이 어디에 있는지에 따라 둘을 구분할 수 있다. 내가 필요한 코드를 불러서 쓰는 것은 라이브러리를 통해서 할 수 있고, 정해진 규칙에 맞춰서 코딩을 하는 것은 프레임워크에서 할 수 있다.
하지만 라이브러리가 발전하다보면 프레임워크와의 구분이 모호해진다. 예를 들어 리액트도 공식적으로는 라이브러리로 분류하나, 프레임워크로 봐야한다는 주장도 다분하다.때문에 라이브러리와 프레임워크는 개념은 다르나 철저하게 구분을 해서 사용하지는 않는다고 한다.