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