본문 바로가기

Basic

라이브러리 vs 프레임워크 차이점

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는 "도구 주세요!"라고 요청하는 것이라 볼 수 있습니다.