라이브러리
- 공통 사용 기능을 모듈화한 것으로, 폴더명이나 파일명에 대한 규칙이 없고 자유롭다.
- 자동차를 타고 목적지까지 이동할 때
- 경로선택, 창문열기 등 자유도가 높음
- 직접 운전을 해야하고, 음료를 제공받는 등 제공되는 것이 적음
- 자동차를 타고 목적지까지 이동할 때
- 개발자가 만든 클래스들의 나열로, 다른 프로그램에서 사용할 수 있도록 제공하는 방식
ex. axios
프레임워크
- 공통 사용 기능을 모듈화한 것으로, 폴더명이나 파일명 등에 대한 규칙이 있고, 라이브러리에 비해 엄격하다.
- 비행기를 타고 목적지까지 이동할 때
- 경로 선택 불가, 창문 열기 불가 등 자유도가 떨어짐
- 기장이 운전하고, 음료가 제공되는 등 제공되는 것이 많음
- 비행기를 타고 목적지까지 이동할 때
- 개발자들이 소프트웨어를 개발함에 있어 개발 시간을 줄이고, 코드 재사용성을 증가시키기 위해 클래스 묶음, 뼈대, 틀을 라이브러리 형태로 제공하는 것
ex. vue.js, django
라이브러리는 프레임워크에 넣을 수 있다.
라이브러리 vs 프레임워크
- 제어 흐름에 대한 주도성이 누구에게, 어디에게 있는가에 따라 달라진다.
- 애플리케이션의 Flow를 누가 쥐고 있느냐
- 프레임워크는 제어 흐름의 주도성을 갖지만(제어의 역전이 적용됨), 라이브러리는 개발자가 갖고 있다.
- 프레임워크: 프로그래머가 필요한 코드를 작성 -> 사용자로금 하여금 코드 연결 공간을 강제
- 통제권이 프레임워크에 있음
- 라이브러리: 사용자가 flow 직접 제어 -> 언제, 어디서 호출할지 사용자가 능동적으로 결정
- 통제권이 사용자에게 있음
- 프레임워크: 프로그래머가 필요한 코드를 작성 -> 사용자로금 하여금 코드 연결 공간을 강제
cf. 제어의 역전(IoC, Inversion Of Control)
개발자가 아닌 프레임워크가 소프트웨어의 흐름을 제어한다.
소프트웨어에 대한 제어권이 개발자에서 프레임워크로 역전된 것.
라이브러리 | 프레임워크 | |
정의 | 미리 정의된 함수, 클래스 제공하여 작업을 쉽게 하고, 개발 프로세스를 향상시킴 | 특정 플랫폼용 패플리케이션을 구축하는 foundation |
IoC | flow를 사용자가 제어 | 프레임워크가 flow 제어 |
구성 | 헬퍼 모듈, 객체, 클래스, 함수 등 | APIs, 컴파일러, 툴셋, 지원 프로그램, 라이브러리 등 |
코드 수정 | 필요에 따라 라이브러리 코드 수정 가능 | 변경, 수정 불가 |
호출 | 코드에서 적절하다고 생각되는 구간 어디에나 라이브러리 호출 가능 | 프레임워크 내 속한 것만 호출하여 사용할 수 있음 |
확장성 | 확장성을 위해 설계되지 않음. | 일반적인 기능을 제공하므로, 개발자가 프레임워크의 소스 코드를 수정하지 않아도 확장 가능 |
대체 가능성 | 다른 라이브러리로 대체 가능 ex. jQuery의 date picker 라이브러리는 bootstrap date picker로 바꿀 수 있음 |
다른 프레임워크로 교체 불가. 프레임워크를 바꿀 시 전체 코드베이스를 다시 작성해야 함 |
기존 프로젝트에 통합 | 가능 | 불가 |
예시 | JQuery, React JS, etc. | Spring, NodeJS, AngularJS, Vue |
ref.
프레임워크(Framework)와 라이브러리(Library)의 차이점 - tistory
프레임워크 라이브러리 차이와 종류 - 디지털 인사이트 매거진
프레임워크(Framework)와 라이브러리(Library)의 차이 - velog
Library vs. framework: How these software artifacts differ - TheServerSide
Framework vs Library: Full Comparison - InterviewBit
'cs' 카테고리의 다른 글
TCP/IP 4계층 (1) | 2024.06.30 |
---|---|
Quiz: 디자인패턴과 라이브러리/프레임워크 (1) | 2024.06.24 |
디자인 패턴 (0) | 2024.06.24 |
앱 디렉터리와 앱 라우터 (0) | 2024.04.17 |
styleX (0) | 2024.04.17 |