프레임워크(Framework)와 라이브러리(Library)의 차이
개발을 하다 보면 프레임워크와 라이브러리라는 용어를 자주 접하게 됩니다.
두 개념 모두 개발 생산성을 높이기 위한 코드 재사용 도구이지만, 제어 흐름의 주체에서 차이가 있습니다.
1. 라이브러리(Library)
라이브러리는 필요한 기능을 모아둔 코드 모음입니다.
개발자가 필요할 때 직접 호출하여 사용하는 방식입니다.
즉 개발자가 흐름을 제어합니다.
예시
- Lodash
- Jackson
예시 코드
ObjectMapper mapper = new ObjectMapper();
mapper.writeValueAsString(object);
위 코드에서는 개발자가 직접 라이브러리 함수를 호출하여 사용합니다.
특징
- 필요한 기능만 가져다 사용
- 실행 흐름은 개발자가 제어
- 특정 기능을 보조하는 역할
2. 프레임워크(Framework)
프레임워크는 애플리케이션의 전체 구조와 흐름을 제공하는 개발 틀입니다.
개발자는 프레임워크가 정한 구조 안에서 코드를 작성합니다.
즉 프레임워크가 흐름을 제어합니다.
대표적인 예
- Spring Framework
- Spring Boot
- Django
예시
@RestController
public class UserController {
@GetMapping("/users")
public List<User> getUsers() {
return userService.findAll();
}
}
여기서는 개발자가 메서드만 작성하면 요청 처리 흐름은 Spring이 자동으로 관리합니다.
3. 핵심 차이(Inversion of Control)
가장 중요한 차이는 제어의 흐름입니다.
| 구분 | 라이브러리 | 프레임워크 |
| 제어 흐름 | 개발자가 제어 | 프레임워크가 제어 |
| 구조 | 필요할 때 호출 | 정해진 구조 안에서 개발 |
| 역할 | 특정 기능 제공 | 애플리케이션 전체 구조 제공 |
라이브러리는 개발자가 호출하는 도구이고, 프레임워크는 애플리케이션 흐름을 제어하는 구조이다.