Search
🌘

라이브러리와 프레임워크의 차이

Created
2023/04/02
Tags
Etc.
Category
Knowledge
Parent item
Sub-item
2 more properties

 들어가기에 앞서

누군가 나에게 라이브러리와 프레임워크 간의 차이를 물어본다면 한 마디로 정리할 수 있을까? 답은 아니었다. 개발을 공부하다 보면 이 세 가지를 순차적으로 배우지만 결론적으로 각각이 무엇인지, 차이는 또 무엇인지 모른다면 확실하게 짚고 넘어가보자.

라이브러리(Library) 란?

Library는 단어 그대로 도서관이다. 응용 프로그램 개발을 위해  필요한 기능(함수)들을 모아 놓은 소프트웨어다.

비유하자면,

자동차가 굴러갈 때 ( = 프로그램이 제작되어 돌아갈 때) 필요한 바퀴, 헤드라이트, 에어백 등이라고 할 수 있다. 재사용이 필요한 기능으로 반복적인 코드 작성을 없애기 위해 언제든지 필요한 곳에서 호출하여 사용할 수 있도록 Class나 Function으로 만들어진 것이다.  가장 유명한 자바스크립트 Library는 jQuery, React고, 객체 지향 프로그래밍 (OOP: Object-oriented programming)은 기본적으로 각 기능마다 함수화 하는 것으로 Class Library라고도 할 수 있다.

Library의 특징

1.
독립성을 가진다. 즉, 해당 Library는 다른 Library에 의존하지 않는다.
2.
응용 프로그램이 능동적으로( = 필요할 때) Library를 사용한다.

프레임워크(Framework) 란?

Framework 또한 단어 그대로 Frame(틀, 뼈대) + Work(일)이다. 즉, 응용 프로그램이나 소프트웨어의 솔루션 개발을 수월하게 하기 위해 제공된 소프트웨어 환경이다. 다시 말해, 개발자는 기본적으로 필요한 기능들을 갖추고 있는 Framework라는 이 틀 안에서 원하는 기능 구현에만 집중하여 빠르게 개발하면 되는 것이다. 참고로, Framework 안에는 Library가 포함되어 있다.

나는 어떤 Framework를 쓸까?

Java 개발자라면 ☞ Spring
Python 개발자라면 ☞ Django
프론트엔드 개발자라면 ☞ Angula or Vue

Framework의 특징

1.
상호협력하는 클래스와 인터페이스의 집합이다.
2.
응용 프로그램이 수동적으로( = 규칙을 지켜가며) Framework에 의해 사용된다. Library와는 다르게 Framework는 내가 작성한 코드를 호출한다. 따라서 Framework만으로는 실행되지 않으며 기능들을 추가해야 하고, Framework가 정의한 규칙을 준수하며 개발해야 한다.

정리하자면 → 누가 누구를 컨트롤하는가에 따라 다름

Library: 개발자 필요한 기능을 원할 때 호출
Framework: Framework가 개발자 호출 = 정해진 프로그램의 틀에 맞게 개발자가 필요한 기능을 입력

궁금증

React는 Framework일까? Library일까?

React가 Framework인지, Library인지 논쟁(?)이 있지만, 결론부터 말하자면 React는 Library다.
Framework로 분류되기 위해서는 필수로 충족되어야 하는 것 (ex. 다른 많은 Framework들이 기본적으로 내장하고 있는 기능들)이 필요한데, React에서는 이러한 기능들을 구현하기 위해 여러가지 추가적인 Library를 같이 사용해야 하기 때문이다 (ex. react-router, react-redux, react-saga등)
더불어, React 공식 문서에서도 React를 Library라고 정의하고 있기도 하다.

참고 자료