라이브러리와 프레임워크

최준근·2023년 3월 26일
0

CS

목록 보기
1/1

라이브러리(Library)란?

  • 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용되는 비휘발성 자원의 모임. 즉 특정 기능을 모아둔 코드 ,함수들의 집합이며 코드 작성 시 활용 가능한 도구들을 의미한다.

Ex)

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

    리액트를 프레임워크라고 알고있는 분들이 많지만 리액트 홈페이지에서 프레임워크가 아니라 라이브러리로 분류가 되어 있다.

프레임워크(Framework)란?

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

Ex)

  • Java 서버 개발에 사용되는 Spring
  • python 서버 개발에 사용되는 Django,Falsk
  • 안드로이드 앱 개발에 사용되는 Android 등이 있다

프레임워크 vs 라이브러리

프레임워크는 단지 미리 만들어둔 반제품이나, 확장에서 사용할 수 있도록 준비된 추상 라이브러리의 집합이 아니다. 프레임워크가 어떤 것인지 이해하려면 프레임워크와 라이브러리가 어떻게 다른지 알아야한다.

라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어한다. 단지 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 사용할 뿐이다.

반면에 프레임워크는 거꾸로 애플리케이션 코드가 프레임워크에 의해 사용된다.
프레임워크에는 분명한 <제어의 역전> 이 적용되어야 한다.
애플리케이션 코드는 프레임워크가 짜 놓은 틀에서 수동적으로 동작해야 한다.

제어 흐름

  • 프레임워크와 라이브러리의 차이점은 "제어 흐름"이 어디에 있나?가 중요한 포인트이다.

라이브러리

  • 라이브러리를 사용할 때 사용자는 애플리케이션 코드의 흐름을 직접 제어해야 한다.
  • 개발시 필요한 기능이 있을 경우 능동적으로 라이브러리를 호출하여 사용하거나 기존에 구성된 함수나 코드를 가져다 써야한다.

프레임워크

  • 프레임워크는 애플리케이션 코드가 프레임워크에 의해 사용된다.
  • 애플리케이션 코드는 프레임워크가 짜 놓은 틀에서 수동적으로 동작하기 때문에 제어의 흐름은 프레임워크가 가지고 있고 사용자가 그 안에서 필요한 코드를 작성한다.

제어의 역전(IoC, Inversion of Control)

  • 어떠한 일을 하도록 만들어진 프레임워크에 Control 권한을 위임하는 것을 의미하는데, 쉽게 말해 프로그램의 제어 흐름 구조가 뒤바뀐 것을 뜻한다.
  • 라이브러리의 경우 애플리케이션의 흐름을 사용자가 직접 제어해야 하지만 프레임워크의 경우 코드를 연결할 수 있는 위치를 제공하고 필요에 따라 사용자가 연결한 코드를 호출하는 제어 흐름 권한을 가지고 있다.
profile
느려도 좋으니 꾸준하게

0개의 댓글