티스토리 뷰
프로그래밍을 하다보면 프레임워크와 라이브러리라는 용어를 자주 접할 것입니다.
다른분들과 마찬가지로 저도 프레임워크와 라이브러리를 자주 접하면서 둘의 차이점과 정확한 개념을 모르기때문에 혼동을 하는 용어인데요.
이 글에서는 프레임워크와 라이브러리의 개념을 소개하고 차이점을 이해하기 쉽게 정리하였습니다.
이 글을 통해서 프레임워크와 라이브러리의 차이점을 확실하게 이해하실 수 있게 될 것입니다.
우선, 가볍게 아래의 그림을 통해 차이점을 이해해 봅시다.
프레임워크(Framework)
프레임워크란 소프트웨어를 개발함에 있어 코드를 구현하는 개발 시간을 줄이고, 코드의 재사용성을 증가시키기 위해 일련의 클래스 묶음이나 뼈대, 틀(구조)을 제공합니다.
또한, 프레임워크는 제어의 역전(IoC) 개념원칙을 따릅니다.
이는 프레임워크가 애플리케이션의 흐름을 제어하고, 프레임워크가 개발자의 코드를 호출하여 필요한 기능을 수행합니다.
(위 사진 참고)
프레임워크의 특징으로는 특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성되어 있다는 점입니다.
추상화를 제공하는 여러 클래스와 컴포넌트들이 있기 때문에 개발자가 따라야 하는 가이드를 제공하며, 개발할 수 있는 구조내에서 애플리케이션을 개발하도록 합니다.
또한 개발자를 위한 다양한 도구와, 플러그인들을 지원합니다.
라이브러리(Library)
라이브러리는 특정 기능을 수행하는 함수나 클래스의 집합입니다.
라이브러리는 개발자가 애플리케이션 개발 시 필요에 따라 호출하여 사용할 수 있습니다.
프레임워크와는 다르게 라이브러리는 제어의 역전(IoC) 개념을 따르지 않습니다.
즉, 개발자가 라이브러리를 호출하여 사용하는 것이지 라이브러리가 개발자의 코드를 호출하는 것은 아니라는 뜻이죠.
(사용할지 말지 선택은 개발자가 하므로 제어권은 개발자가 가지고 있다!)
프레임워크 vs 라이브러리
프레임워크와 라이브러리의 차이는 제어 흐름에 대한 주도성이 누구에게/어디에 있는가에 있습니다.
프레임워크는 전체적인 흐름을 스스로가 쥐고 있으며, 사용자는 그 안에서 필요한 코드를 짜 넣는 반면에 라이브러리는 사용자가 전체적인 흐름을 만들며 라이브러리를 가져다 쓰는 것이라고 할 수 있습니다.
프레임워크는 가져다가 사용한다기보다는 거기에 들어가서 사용한다는 느낌(관점)으로 접근하면 될 것 같습니다.
쉽게 요리로 예를 들어보겠습니다.
배가 너무 고파서 제가 좋아하는 크림파스타를 만들어 먹을 것 입니다.
제가 만드는 방법을 몰라가지고 인터넷에 크림파스타 레시피를 검색하여 따라 만들 것 입니다.
우선 여기서 제가 보고 만드는 레시피가 프레임워크 입니다.
레시피는 전체적인 구조와 요리 순서를 제공합니다.
레시피(프레임워크)를 참고하며 만들다보니 양파를 넣으라고 합니다.
제가 양파 알레르기가 있다고 가정을 해봅시다.
그럼 우리는 양파를 빼면 될 것입니다. 혹은 다른 재료를 추가할 수도 있겠지요.
여기서 우리가 사용하는 재료, 즉 양파는 라이브러리 입니다.
이미 만들어져 있으며, 우리가 사용할지 사용하지 않을지는 우리가 선택하는 것이니까요.
정리하면, 프레임워크(레시피)가 개발의 전반적인 구조를 제공하며 개발과정에서 일정한 규칙을 따라야 한다는 점입니다.
그리고 라이브러리(재료)는 그 과정 속에서 개발자가 필요한 기능을 자유롭게 선택해 사용할 수 있는 것입니다.
추가로, 레시피와 재료처럼 프레임워크와 라이브러리 또한 개발자가 직접 만들 수도 있습니다.
결국엔 레시피와 재료도 누군가 만들어 낸 것이니까요.
단지 저는 못하니까 만들어져 있는 것을 가져다 사용하는 것입니다.
이러한 차이점을 확실하게 이해하는 것이 개발 과정에서 중요하며 도움이 될 것입니다.
참고(출처)
https://webclub.tistory.com/458
https://sharonprogress.tistory.com/169
https://jkim68888.tistory.com/34
+ 친절한 GPT 4.0 씨
'JAVA' 카테고리의 다른 글
[JAVA] 추상 클래스와 인터페이스의 개념과 차이점(+예시) 완벽 정리 (0) | 2024.04.23 |
---|---|
[JAVA] 람다식(Lambda)의 개념과 사용법 (0) | 2024.03.20 |
[JAVA] 인터페이스(Interface) 핵심 이해하기 (1) | 2024.03.18 |
[JAVA] 추상 클래스(Abstract) 완벽 이해하기 (0) | 2024.03.18 |
[JAVA] String 클래스의 특징 및 주요 메서드 정리 (1) | 2024.03.18 |
- Total
- Today
- Yesterday
- 객체지향설계원칙
- 스프링http
- 타임리프 기본기능
- Thymeleaf
- 타임리프
- Java
- Overloding
- 인터페이스 추상클래스 차이
- 요청데이터
- 빈생명주기콜백
- Servlet
- 요청매핑
- HttpServletRequest
- RequiredArgsConstruct
- 스프링 빈
- Spring
- 자바
- 크롤링
- 인터페이스 추상클래스 비교
- 추상클래스
- 스프링
- 네이버지도크롤링
- erd editor
- 스프링특징
- erd툴
- redirectattribute
- HTTP요청
- 스프링 컨테이너
- 인식안됨
- 인터페이스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |