CS

Framework와 Library의 차이점

개발자 김마늘 2025. 3. 16. 17:37

Framework와 Library를 제어 흐름의 주체와 사용 방식을 중심으로 차이점을 정리한 글입니다.

 

제어 흐름의 주체 관점

  • Framework는 어플리케이션의 제어 흐름을 자체적으로 관리합니다. 프로그램의 흐름은 개발자가 아닌 Framework에 있습니다. 이를 제어의 역전이라고 합니다.
  • Library는 특정 기능을 제공하는 모듈이기에 개발자가 필요할 때 직접 호출하여 사용합니다. 따라서 프로그램 흐름은 개발자가 제어합니다.

사용방식의 관점

  • Framework의 경우 개발자가 Framework의 구조와 규칙을 따라야합니다. 개발자는 Framework가 제공하는 기능을 확장하여 개발합니다.
  • Library의 경우 개발자가 원하는 기능을 선택적으로 가져와서 사용합니다.

예시

Framework: Spring Framework

@Component
public class UserService {
    private final UserRepository userRepository;

    @Autowired
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public void registerUser(String name) {
        userRepository.save(name);
    }
}

UserService 클래스에서는 개발자가 직접 UserRepository 객체를 생성하지 않아도 자동으로 주입됩니다. 이는 Spring 컨테이너가 @Component 어노테이션을 인식하여 객체를 생성하고 관리하기 때문입니다. 이 과정에서 제어 흐름의 주체는 개발자가 아니라 Spring 이며 개발자는 @Component를 사용하여 Spring이 객체를 생성하고 주입할 수 있도록 설정합니다. 즉, 개발자는 Spring의 규칙을 따르며, 프레임워크가 제공하는 기능을 활용하는 방식으로 개발하게 됩니다.

 

Library: ArrayList

import java.util.ArrayList;

public class LibraryExample {
    public static void main(String[] args) {
        ArrayList<String> fruits = new ArrayList<>();

        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Cherry");

        for (String fruit : fruits) {
            System.out.println(fruit);
        }
    }
}

위 코드에서 개발자는 직접 ArrayList 객체를 생성하고 관리합니다. 즉, 개발자가 new ArrayList<>()를 호출하여 객체를 생성하고 필요할 때 add(), remove(), get() 등의 메서드를 호출합니다. 이처럼 라이브러리는 프로그램 실행의 흐름을 결정하지 않으며, 단순히 필요한 기능을 제공하는 도구입니다.

 

'CS' 카테고리의 다른 글

SQL: DDL과 DML  (0) 2025.04.13
웹 서버(Web Server)와 WAS(Web Application Server)  (0) 2025.03.23
Java HashSet의 내부 동작 방식과 중복 제거 메커니즘  (0) 2025.03.09
Stream API: map vs flatMap  (0) 2025.03.03
SOLID 원칙  (0) 2025.03.03