프레임워크(Framework)
개발자가 소프트웨어를 개발함에 있어 코드를 구현하는 개발 시간을 줄이고, 코드의 재사용성을 증가시키기 위해 일련의 클래스 묶음이나 뼈대, 틀을 라이브러리 형태로 제공하는 것.
제어의 역전 개념이 적용된 대표적인 기술이다.
프레임워크의 특징
•
개발자가 따라야 하는 가이드를 제공
•
개발할 수 있는 범위가 정해져 있음
•
다양한 개발 툴, 플러그인을 지원함
프레임워크의 장단점
•
개발 시간을 줄일 수 있음
•
정형화되어 있기에 일정 수준 이상의 품질을 기대할 수 있음
•
유지 보수가 쉬움
•
너무 의존하면 개발자들의 능력이 떨어져서 스스로 직접 개발이 어려워짐
•
습득에 걸리는 시간이 오래 걸림
프레임워크의 종류
구분 | 설명 | 종류 |
영속성 | 데이터의 저장, 조회, 변경, 삭제를 다루는 클래스 및 설정 파일들을 라이브러리화하여 구현한 프레임워크 | - Mybatis
- Hibernate
- QueryDSL |
자바 (백엔드) | JavaEE를 통한 웹 어플리케이션 개발에 초점을 맞추어 필요한 요소들을 모듈화하여 제공하는 프레임워크 | - Spring Framework
- 전자정부표준 - Spring
- Micronaut |
화면 구현 (뷰) | Front-End를 보다 쉽게 구현할 수 있게 틀을 제공하는 프레임워크 | - Bootstrap
- Thymeleaf
- Vue.js |
기능 및 지원 | 특정 기능이나 업무 수행에 도움을 줄 수 있는 기능을 제공하는 프레임워크 | - Log4j
- JUnit5
- Spring Security |
라이브러리(Library)
라이브러리란 개발자가 만든 클래스들의 나열로, 다른 프로그램들에서 사용할 수 있도록 제공하는 방식
프레임워크와 라이브러리의 차이점
라이브러리와 프레임워크의 차이는 제어 흐름에 대한 주도권이 누구에게 있는가에 있다.
즉, 애플리케이션의 Flow(흐름)를 누가 쥐고 있느냐에 달려있다.
프레임워크는 그 스스로 제어 흐름의 주도성을 갖는 반면, 라이브러리는 개발자가 가지고 있다.
•
프레임워크는 “무대”
◦
우리가 연기만 하면, 무대 조명, 음악, 순서 등은 프레임워크가 알아서 진행
◦
개발자는 정해진 규칙(인터페이스, 어노테이션 등)에 따라 구현만 하면 됨
•
라이브러리는 “도구함”
◦
내가 직접 꺼내서 이 도구 써야지! 하면서 직접 제어해서 사용
◦
순서, 로직, 흐름은 모두 내가 통제
라이브러리와 달리 프레임워크는 이미 프로그래밍에 대한 규칙을 가지고 있다. 예를 들면 설정파일의 태그설정이나, DB연동 방법 등에 대한 규칙을 가지고 있고 개발자는 이를 따라야한다.