스프링부트 프로젝트를 주로 사용하는데 의존성이라는 표현을 자주 사용하게 된다. 의존성을 설명할 때 주로 프레임워크나 라이브러리를 같은 프로젝트 개발에 있어 특정 기능을 구현하기 위한 예시로 많이 사용이 된다.
간단히, 이야기하면 의존성이란 프로젝트에서 사용하는 라이브러리와 프레임워크를 의미하게 된다.
위 이미지는 스프링부트 프로젝트를 만드는 것을 도와주는 https://start.spring.io/ 페이지이다. 여기서 스프링부트라는 프레임워크에 라이브러리 Dependencies를 추가하여 사용하게 된다.
그럼 라이브러리와 프레임워크에 차이는 무엇이 일까?
라이브러리
우선 라이브러리가 무엇인지 알아보자.
라이브러리는 프로그래밍 개발할 때 미리 만들어진 있는 기능을 가져다 사용하는 것을 의미한다. 재사용 가능한 코드의 집합체라고 하며, 개발자가 필요에 의해 가져가 사용하는 특징을 가지고 있다. (제어권이 개발자한테 있다는 의미)
이미 만들어진 기능이란 무엇일까? 요리에 비유해 보자.
우리가 김치찌개를 만든다고 하면 김치가 필요하다. 우린 마트에서 김치를 살 수도 있고 처음부터 배추농사를 지어 만들 수 도 있다.
라이브러리를 사용한다는 것은 마트에서 김치를 사서 한다는 것을 의미한다. 반대로 라이브러리를 사용하지 않고 개발한다는 것은 배추농사를 지어 처음부터 구현하는 의미로 생각하면 된다.
프레임워크
프레임워크는 개발할 때 미리 만들어져 있는 구조에 코드를 상황에 맞게 끼워 넣는 것을 의미한다. 풀어서 이야기하면 프로그램을 개발하기 위한 구조를 제공하는 것을 의미한다. 기본 뼈대를 제공하므로 주어진 규칙에 맞춰 코드를 작성하게 된다.
이런 경우 제어권이 프레임워크에 있다고 표현된다. (
이것도 요리에 비교해 보자.
김치찌개를 만든다고 했을 때, 여러 재료를 사서 내 방식대로 만들 수도 있고 원데이 클래스에 가서 선생님에 가르침 안에서 만드는 방법도 있을 것이다.
프레임워크를 사용한다는 것은 원데이 클래스에 가서 하는 것이라고 생각하면 된다. 이미 구성된 클래스 커리큘럼안에서 상황에 맞는 행위(코드작성)만 하면된다.
라이브러리, 프레임워크 정리
라이브러리를 사용할 때 제어권(control)을 가지고 있는 주체는 코드 작성자이다. 코드 작성 중 필요에 따라 라이브러리를 호출하기 때문이다. 프레임워크를 사용할 때는 프레임워크가 제어권을 가지고 있다. 따라서 코드 작성자는 코드 위치, 코드 작성법 등 프레임워크의 규칙을 따라야 한다.
- 프레임워크 : 특정 프로그램을 개발하기 위한 여러 요소들과 매뉴얼인 룰을 제공하는 프로그램
- 라이브러리 : 프로그램을 개발하기 위해 쓰는 공구와 같은 도구들
- 공통점 : 프로그램을 쉽게 만들 수 있게 하는 공통된 목적이 있다.
- 차이점 : 프레임워크는 정해진 룰 안에서 써야 되지만, 라이브러리는 쓰든 안 쓰든 자유가 있다.
프레임워크에 제어권을 나타내는 표현으로 IOC가 있는데 그것은 아래 포스팅을 확인바란다.
2023.10.30 - [Framework/Spring] - [스진초5기/Spring] IoC, DI 정리
[스진초5기/Spring] IoC, DI 정리
스프링은 자바 기반의 프레임워크이다. 자바의 가장 큰 특징은 객체지향 언어라는 점이다. 그 말인즉슨, 스프링의 가장 큰 특징도 객체지향이다. 자바와 객체지향을 배우지만 순수 자바개발은
jh7722.tistory.com
'Knowledge > 개발지식' 카테고리의 다른 글
[네트워크] PDU(protocol data unit) (0) | 2024.05.16 |
---|---|
[개발지식] 객체와 관계형 데이터베이스와의 차이 with JPA (0) | 2024.03.11 |
[스진초 5기/개발지식] DDD 설계와 SQL 중심 설계 (1) | 2023.11.10 |
[개발지식] 빌드관리도구와 Maven과 Gradle (0) | 2023.10.13 |
[개발지식] 빌드와 컴파일 (0) | 2023.10.10 |