다양한 기능을 수행하는 코드를 짜려면 라이브러리 사용은 필수이고, 프레임워크가 프로젝트 하나 완성하는 데에 시간을 줄여주는 것은 말할 것도 없다. 이렇듯 프레임워크와 라이브러리는 모두 개발 생산성을 높이기 위한 도구이다.
그렇다면 둘의 차이는 명확히 무엇일까?
가장 큰 차이는 제어 흐름의 주체와 사용 방식에서 드러난다.
예시:
Spring Framework는 컨트롤러, 서비스 등 역할에 따라 코드를 등록만 하면
프레임워크가 적절히 실행 흐름을 조절해줌.
@Controller 클래스에 HTTP 요청이 자동으로 매핑됨@Service, @Repository는 자동으로 Bean으로 등록되고 의존성 주입됨예시:
Apache Commons,Gson,Jackson등은 특정 기능만 제공하며
호출하지 않으면 아무 일도 안 일어남.
직접 객체 생성 → 직접 메서드 호출 → 직접 흐름 설계
| 항목 | 프레임워크 | 라이브러리 |
|---|---|---|
| 제어 흐름 | 프레임워크가 주도 (IoC) | 개발자가 직접 제어 |
| 사용 방식 | 정해진 구조와 규칙을 따라야 함 | 필요할 때 호출 |
| 장점 | 구조화, 빠른 확장성, 일관된 흐름 | 높은 자유도, 단순 기능의 빠른 적용 |
| 단점 | 유연성 부족, 러닝 커브 존재 | 모든 흐름을 직접 구성 |
- 프레임워크는 틀을 제공해서 내가 거기에 맞추어야 한다.
- 라이브러리는 도구만 제공해서 흐름은 내가 짠다.
프레임워크 예시
Spring, Angular, Django라이브러리 예시
Lombok – 반복 코드 제거
Guava – 구글의 자바 유틸리티
Log4j – 로깅 기능
Joda-Time – 시간/날짜 처리
Gson, Jackson – JSON 직렬화/역직렬화
React – UI 컴포넌트 라이브러리