Search

프레임워크와 라이브러리(Framework and Library) 차이

Created time
2022/11/12 07:40
Modified
2022/11/14 13:01
Tags
framework
library
프레임워크는 미리 만들어둔 반제품이나, 확장해서 사용할 수 있는 추상 라이브러리의 집합이 아니다. 프레임워크가 어떤 것인지 이해하려면 라이브러리와 프레임워크가 어떻게 다른지 알아야 한다. 라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어한다. 단지 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 사용할 뿐이다. 반면에 프레임워크는 거꾸로 애플리케이션 코드가 프레임워크에 의해 사용된다. 프레임워크에는 분명한 [제어의 역전] 개념이 적용되어 있어야 한다. 애플리케이션 코드는 프레임워크가 짜 놓은 틀에서 수동적으로 동작해야 한다. From 토비의 스프링 3.1 中

프레임워크

원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대를 의미합니다.
애플리케이션 개발 시 필요한 코드, 구현패턴, 자료구조, DB 연동과 같은 기능을 위해 뼈대(구조)를 제공하고 이 뼈대 위에서 코드를 작성하여 애플리케이션을 개발합니다.
앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분은 프레임워크가 관리하며, 사용자는 프레임워크가 정해준 방식대로 클래스, 메서드, … 를 구현합니다.

예시

Java 서버 개발에 사용되는 Spring
Python 서버 개발에 사용되는 Django, Flask
안드로이드 앱 개발에 사용되는 Android
아이폰 앱 개발에 사용되는 Cocoa Touch
웹 개발에 사용되는 Angular, Vue.js 등
자바 기반의 JSP를 위한 프레임 워크 Struts
루비로 작성된 MVC패턴을 이용하는 Ruby on Rails

라이브러리

소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 리소스를 모아둔 것입니다.
필요한 특정 기능을 모아둔 코드 집합이며 코드 작성 시 활용 가능한 도구들을 의미합니다.

예시

Python pip로 설치한 패키지/모듈 (tensorflow, pandas, beautifulsoup 등등)
C++의 표준 템플릿 라이브러리 (STL)
Node.js에서 npm으로 설치한 모듈
HTML의 클라이언트 사이드 조작을 단순화하는 JQuery
웹에서 사용자 인터페이스 개발에 사용되는 UI Library “React.js”

프레임워크 vs 라이브러리

프레임워크와 라이브러리의 차이점은 "제어 흐름"의 권한이 어디에 있는가입니다.

라이브러리

라이브러리를 사용할 때 사용자는 애플리케이션 코드의 흐름을 직접 제어해야 합니다.
필요한 기능이 있을 경우 능동적으로 라이브러리를 사용하거나 기존 구현된 코드를 써야 합니다.

프레임워크

애플리케이션 코드는 프레임워크에 의해 사용됩니다.
프레임워크가 제어의 흐름을 가지고, 프레임워크 위에서 애플리케이션 코드를 작성하여 기능을 구현합니다.
제어의 역전(IoC, Inversion of Control) 어떠한 일을 하도록 만들어진 Framework에 Control 권한을 위임하는 것을 의미하는데, 프로그램의 제어 흐름 구조가 코드 내부에서 외부에 있는 프레임 워크로 위임하는 것입니다.