라이브러리(Library)와 프레임워크(Framework)는 둘 다 개발을 쉽게 하기 위한 도구이지만 서로 다른 개념이다. 각자의 특징과 목적이 있으며 개발자는 이를 적절히 구분하여 사용할 줄 알아야한다.
정의
라이브러리는 특정 작업을 수행하는 데 필요한 미리 작성된 코드의 모음이다.
개발자가 필요할 때 직접 호출하여 사용하는 방식이다.
제어 흐름
라이브러리를 사용하는 주체는 개발자이며, 개발자가 원하는 기능을 직접 호출하여 제어한다.
유연성
라이브러리는 단위 기능을 제공하므로 유연하게 조합하여 사용할 수 있다.
예시
NumPy
, Pandas
, Matplotlib
Lodash
, Axios
Apache Commons
, Guava
특징
정의
프레임워크는 특정 유형의 애플리케이션을 개발하기 위한 구조와 규칙을 제공하는 플랫폼이다.
개발자는 프레임워크가 제공하는 구조에 따라 코드를 작성해야 한다.
제어 흐름
프레임워크가 전체 제어 흐름을 책임지고, 개발자는 그 틀 안에서 코드를 작성하며, 이는 흔히 "제어의 역전(Inversion of Control, IoC)"이라 불린다.
유연성
프레임워크는 정해진 규칙과 구조를 따르기 때문에 라이브러리에 비해 유연성이 낮다.
예시
Django
, Flask
React
, Angular
, Vue.js
Spring
, Hibernate
특징
특징 | 라이브러리 | 프레임워크 |
---|---|---|
제어 권한 | 개발자가 호출하여 사용 | 프레임워크가 호출하며 흐름을 제어 |
유연성 | 비교적 유연하며 필요한 부분만 사용 가능 | 규칙과 구조에 따라 개발해야 함 |
규모 | 작은 단위 기능 제공 | 애플리케이션 전체 구조와 동작을 설계함 |
학습 곡선 | 낮음 | 상대적으로 높음 |