Libraries 라이브러리
단순 활용가능한 도구들의 집합 / 좁은 문제를 해결하기 위한 작은 솔루션 단위
즉, 개발자가 만든 클래스에서 호출해서 사용 / 특정 기능을 모아둔 코드, 함수들의 집합으로 코드 작성시 활용 가능한 도구들을 의미
배우는 것이 상대적으로 적고 진입장벽이 낮다.
ex) React
왜 React는 프레임워크가 아닌 라이브러리인가?
React: UI 를 만들도록 도와준다.(뼈대를 만들어줌, 커뮤니티가 많아지고 발전해서 덧붙여 쓸 수 있는 라이브러리가 많다.)
네트워크 통신이 필요하면 패치나 네트워크 라이브러리를 사용하고,
라우팅이 필요하면 그에 맞는 Libary를 사용하는 등 필요할때마다 내가 원하는 것을 골라 사용할 수 있는 자율성이 보장된다.
+ ex)
- Python pip로 설치한 패키지/모듈 (tensorflow, pandas, beautifulsoup 등등)
- 그래픽 사용자 인터페이스(Graphical user interface , GUI)에서 재사용하기 쉽게 버튼, 테이블 같은 구성 요소를 호출해서 쓸수 있도록 분리해두었다면 라이브러리이다.
- 객체지향 프로그래밍(object-oriented programming, OOP)은 기본적으로 각 기능마다 함수화하는 것으로 클래스 라이브러리라고 할수도 있다.
- Node.js에서 npm으로 설치한 모듈
- HTML의 클라이언트 사이드 조작을 단순화하는 JQuery
- Bootstrap
Frameworks 프레임워크
뼈대, 기본구조 / 무언가를 만드는데 필요한 모든 것들이 다 갖춰져 제공되는것
뼈대 위에서 사용자는 코드를 작성하여 애플리케이션을 개발한다.
웹프레임워크: 집을 짓기 위한 골격이 다 갖춰있음, 정해진 틀이 있고 그 안에서 우리가 원하는 것을 만들어 나간다.
권장되는 규칙들을 공부해야 한다. 자율성이 떨어진다.
ex)
- Java 개발자라면 Spring!
- Python 개발자라면 Django!
- JavaScript 개발자라면 Angularjs!
- PHP 개발자라면 Laravel!
- Vue, Android, ios
프레임워크 vs 라이브러리 차이점
라이브러리와 프레임워크의 차이는 제어 흐름에 대한 주도성이 누구에게/어디에 있는가에 있습니다.
즉, 어플리케이션의 Flow(흐름)를 누가 쥐고 있느냐에 달려 있습니다.
라이브러리: 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어한다. 필요한 기능이 있을때 능동적으로 라이브러리 사용
프레임워크: 애플리케이션 코드는 프레임워크가 짜 놓은 틀에서 수동적으로 동작해야 한다.
프레임워크는 전체적인 흐름을 스스로가 쥐고 있으며 사용자는 그 안에서 필요한 코드를 짜 넣으며 반면에 라이브러리는 사용자가 전체적인 흐름을 만들며 라이브러리를 가져다 쓰는 것이라고 할 수 있다.
다시 말해, 라이브러리는 라이브러리를 가져다가 사용하고 호출하는 측에 전적으로 주도성이 있으며 프레임워크는 그 틀안에 이미 제어 흐름에 대한 주도성이 내재(내포)하고 있다.
프레임워크는 가져다가 사용한다기보다는 거기에 들어가서 사용한다는 느낌/관점으로 접근할 수 있다.
[정리]
* 프레임워크 : 특정 프로그램을 개발하기 위한 여러 요소들과 메뉴얼인 룰을 제공하는 프로그램
* 라이브러리 : 프로그램을 개발하기 위해 쓰는 공구와 같은 도구들
● 공통점 : 프로그램을 쉽게 만들 수 있게 하는 공통된 목적이 있음
● 차이점 : 자유도, 프레임워크는 꼭 써야되는 것과 지켜야되는 룰이 있다. 라이브러리는 쓰든 안 쓰든 자기 마음이다.
API와 라이브러리의 차이
구현 로직의 유무에 따라 갈립니다.
- API: 컴포넌트를 사용하는 규약 및 호출을 위한 수단으로써 구현 로직이 필요하지 않습니다.
- 라이브러리: 컴포넌트 자체로써, 구현 로직이 존재합니다.
비유를 하자면, 라이브러리는 도구 자체이고 API는 "도구 주세요!"라고 요청하는 것이라 볼 수 있습니다.
'Basic' 카테고리의 다른 글
[Basic]Android 기기 원격 디버그(PC에서 모바일 화면 동기화) (0) | 2024.03.14 |
---|---|
[Basic] 캐시(Cache)란 무엇인가? (0) | 2023.11.24 |
[Basic] window hosts 파일 수정 (피싱 사이트) (0) | 2023.07.27 |
[Basic] Chrome inspect- 모바일 웹 디버깅하는 방법 (0) | 2023.05.17 |