Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

밤빵's 개발일지

[TIL]20240903 프레임워크와 라이브러리 본문

개발Article

[TIL]20240903 프레임워크와 라이브러리

최밤빵 2024. 9. 4. 00:06

🤓프레임워크와 라이브러리

프레임워크와 라이브러리는 소프트웨어 개발에서 매우 중요한 개념이다. 개발을 하면서도 자주 접하게 되는데, 이 둘의 차이점을 명확하게 이해하지 못하고 있었다. 이번 개발일지에서는 프레임워크와 라이브러리의 개념과 차이점, 그리고 백엔드 개발에서 자주 사용하는 예시들을 정리해봤다. 

 

▶ 프레임워크란?

프레임워크는 전체적인 구조와 흐름을 미리 정의해 둔 틀이다. 개발자는 그 틀 안에서 코드를 작성하고, 프레임워크가 제공하는 규칙과 구조를 따라야 한다. 프레임워크는 개발자가 호출하는 것이 아니라, 프레임워크가 개발자의 코드를 호출하는 방식이다. 이를 제어의 역전(Inversion of Control, IoC)이라고 한다.

 

▶ 스프링 프레임워크 예시

대표적인 백엔드 프레임워크로 Spring Framework가 있다. 스프링은 자바 기반의 프레임워크로, 대규모 애플리케이션 개발에 필요한 다양한 기능을 제공한다. IoC, AOP(Aspect-Oriented Programming), 트랜잭션 관리, 데이터 접근, REST API 구축 등 여러 기능을 미리 제공하여 개발자가 쉽게 애플리케이션을 구축할 수 있도록 돕는다.

 

스프링을 사용하면, 컨트롤러, 서비스, 리포지토리 등 다양한 계층을 정의할 수 있고, 프레임워크가 이러한 계층의 흐름을 자동으로 관리해 준다.

@RestController
@RequestMapping("/api")
public class UserController {

    private final UserService userService;

    public UserController(UserService userService) {
        this.userService = userService;
    }

    @GetMapping("/users")
    public ResponseEntity<List<User>> getAllUsers() {
        return ResponseEntity.ok(userService.findAllUsers());
    }
}

→ 위의 예시 코드는 스프링 프레임워크의 제어의 역전 개념을 잘 보여준다. UserController는 사용자의 요청을 받고, 내부적으로 UserService를 호출하지만, 애플리케이션 전체 흐름은 스프링 프레임워크가 관리한다.

 

▶ 라이브러리란?

라이브러리는 특정 기능을 제공하는 코드 모음이다. 개발자가 필요에 따라 라이브러리의 기능을 직접 호출해서 사용한다. 제어 흐름은 여전히 개발자가 관리한다. 라이브러리는 보통 특정 문제를 해결하거나 특정 기능을 쉽게 구현하기 위해 사용된다.

 

▶ 자바 라이브러리 예시

대표적인 라이브러리로는 Jackson을 들 수 있다. Jackson은 JSON 데이터를 직렬화하거나 역직렬화할 때 자주 사용하는 라이브러리다. 예를 들어, 자바 객체를 JSON 문자열로 변환하거나 JSON 데이터를 자바 객체로 변환할 수 있다.

import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonExample {
    public static void main(String[] args) throws Exception {
        ObjectMapper mapper = new ObjectMapper();
        User user = new User("John", "Doe");

        // 자바 객체를 JSON으로 변환
        String jsonString = mapper.writeValueAsString(user);
        System.out.println(jsonString);

        // JSON을 자바 객체로 변환
        User newUser = mapper.readValue(jsonString, User.class);
        System.out.println(newUser.getFirstName());
    }
}

→ 이 코드 예시는 Jackson 라이브러리를 통해 JSON 데이터를 처리하는 방식이다. 개발자가 직접 라이브러리의 메서드를 호출하여 필요한 기능을 수행한다.

 

▶프레임워크와 라이브러리의 차이

프레임워크와 라이브러리는 모두 개발을 도와주는 도구이지만, 그 제어권이 어디에 있느냐에 따라 차이가 있다.

 

→ 프레임워크:

애플리케이션의 전체 흐름을 제어하고, 개발자가 코드를 프레임워크에 맞춰 작성한다. 프레임워크가 개발자의 코드를 호출한다. (제어의 역전, IoC)

→ 라이브러리:

특정 기능을 제공하며, 개발자가 필요할 때 라이브러리의 메서드를 호출해서 사용한다. 제어권은 개발자에게 있다.

 

▶정리 

이번 개발일지에서는 프레임워크와 라이브러리의 차이, 그리고 자바와 스프링에서의 사용 예시를 살펴보았다. 프레임워크는 전체적인 애플리케이션의 구조와 흐름을 관리하고, 라이브러리는 특정 기능을 제공하여 개발자가 호출하는 방식으로 사용된다. 이를 잘 이해함으로써 개발 시 어떤 도구를 사용할지 더 잘 선택할 수 있다.