프레임워크와 라이브러리 비교

chaewon·2025년 4월 24일

다양한 기능을 수행하는 코드를 짜려면 라이브러리 사용은 필수이고, 프레임워크가 프로젝트 하나 완성하는 데에 시간을 줄여주는 것은 말할 것도 없다. 이렇듯 프레임워크와 라이브러리는 모두 개발 생산성을 높이기 위한 도구이다.

그렇다면 둘의 차이는 명확히 무엇일까?

가장 큰 차이는 제어 흐름의 주체사용 방식에서 드러난다.


1. 제어 흐름의 주체

프레임워크

  • 제어의 역전(Inversion of Control, IoC) 적용.
  • 프레임워크가 개발자의 코드를 호출하며 흐름을 관리.
  • 개발자는 정해진 룰과 구조에 따라 코드를 작성해야 함.

예시:
Spring Framework는 컨트롤러, 서비스 등 역할에 따라 코드를 등록만 하면
프레임워크가 적절히 실행 흐름을 조절해줌.

  • @Controller 클래스에 HTTP 요청이 자동으로 매핑됨
  • @Service, @Repository는 자동으로 Bean으로 등록되고 의존성 주입됨
  • 컨트롤러 선언을 한 번 하면 Spring이 알아서 호출함

라이브러리

  • 제어권은 개발자에게 있음.
  • 개발자가 필요한 타이밍에 직접 메서드를 호출해 사용.
  • 흐름은 개발자가 모두 설계하고 유지해야 함.

예시:
Apache Commons, Gson, Jackson 등은 특정 기능만 제공하며
호출하지 않으면 아무 일도 안 일어남.
직접 객체 생성 → 직접 메서드 호출 → 직접 흐름 설계


2. 사용 방식 비교

항목프레임워크라이브러리
제어 흐름프레임워크가 주도 (IoC)개발자가 직접 제어
사용 방식정해진 구조와 규칙을 따라야 함필요할 때 호출
장점구조화, 빠른 확장성, 일관된 흐름높은 자유도, 단순 기능의 빠른 적용
단점유연성 부족, 러닝 커브 존재모든 흐름을 직접 구성

3. 정리

  • 프레임워크는 틀을 제공해서 내가 거기에 맞추어야 한다.
  • 라이브러리는 도구만 제공해서 흐름은 내가 짠다.

4. 추가 예시

  • 프레임워크 예시

    • Spring, Angular, Django
  • 라이브러리 예시

    • Lombok – 반복 코드 제거

    • Guava – 구글의 자바 유틸리티

    • Log4j – 로깅 기능

    • Joda-Time – 시간/날짜 처리

    • Gson, Jackson – JSON 직렬화/역직렬화

    • React – UI 컴포넌트 라이브러리

0개의 댓글