본문 바로가기
Programming/CS

라이브러리와 프레임워크

by Bam_t 2021. 10. 16.
728x90

언어 하나를 해보고 프레임워크로 넘어가는 시점에서 언어와 관련하여 다양한 용어들이 나옵니다. 특히 라이브러리, 프레임워크 뭔가 다른 역할을 하는 것 같은데 처음 접하는 입장에서는 헷갈리기도 하는 것 같습니다. 그래서 오늘은 이 용어들을 간단하게 정리 비교 해보겠습니다.


1. 라이브러리

라이브러리(library)는 특정 함수나 기능들을 모듈화 하여 모아둔 것입니다. 라이브러리는 그 자체로는 실행시킬 수 없고 라이브러리를 포함하는 프로그램이나 API의 호출 등을 통해서 실행이 가능합니다.

이미 기능들이 구현되어있고 그것들을 가져와서 사용하는 것이기 때문에 코드의 재사용성, 빠른 작성 등의 이점을 취할 수 있습니다.

라이브러리에는 정적 라이브러리와 동적 라이브러리가 있습니다.

정적 라이브러리는 컴파일러가 소스 파일을 컴파일할 때 참조되는 라이브러리입니다. 컴파일시에 참조되므로 실행 파일에 포함되어 설치됩니다.

동적 라이브러리는 프로그램을 수행하다 해당 기능이 필요할 때만 참조하는 모듈입니다. 정적 라이브러리처럼 실행파일에 포함되지 않아 실행 파일 용량이 줄어드는 장점이 있습니다.

한 예로, 자바스크립트의 라이브러리에는 제이쿼리, 리액트 등이 있습니다.

 

1-2. API

API라는 단어도 종종 들을 수 있는데, Application Programming Interface라는 단어로, 해석하면 응용 프로그래밍 인터페이스 입니다. API는 프로그램에 대해 어떤 사양적인/설계적인 면만을 지원합니다. 이런 API들을 사용할 수 있도록 구현해 놓은것이 라이브러리라고 할 수 있습니다.

 

2. 프레임워크

프레임워크는 정의 자체는 매우 모호하며 넒은 범위를 가집니다. 프레임워크는 개발에서 문제 해결을 위한 구조입니다.  보통 프레임이라고 하면 어떤 틀을 떠올리는데, 그 틀에 따라서 완성품을 만들죠. 이처럼 프레임워크는 문제 해결을 위해 틀에서 완성품을 이끌어내는 것이라고도 할 수 있습니다.

예로 자바스크립트의 프레임워크에는 앵귤러, 뷰 등이 있습니다 Node.js의 Express.js도 프레임워크입니다. (단, Node.js는 프레임워크가 아닙니다!)

 

2-1. 라이브러리와 프레임워크의 차이점

어떻게 보면 라이브러리와 별 차이가 없는 것 같지만, 프레임워크가 좀 더 포괄적인 개념입니다. 라이브러리는 기능만을 합친 것이라면 프레임워크는 라이브러리가 포함된 클래스까지 정의되어 제공합니다. 이때문에 라이브러리는 기능 자체만을 가지고 자유롭게 활용할 수 있지만, 프레임워크는 프레임워크에서 제공하는 사용법에 따라서 이용해야 하죠.


참조

https://ko.wikipedia.org/wiki/%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC_(%EC%BB%B4%ED%93%A8%ED%8C%85) 

 

라이브러리 (컴퓨팅) - 위키백과, 우리 모두의 백과사전

Ogg Vorbis 파일을 재생하기 위해 libvorbisfile을 사용하는 응용 프로그램의 개요도. 라이브러리(영어: library)는 주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다.

ko.wikipedia.org

https://ko.wikipedia.org/wiki/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC

 

소프트웨어 프레임워크 - 위키백과, 우리 모두의 백과사전

컴퓨터 프로그래밍에서, 소프트웨어 프레임워크(software framework)는 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조이다. 간단히 뼈대, 골조(骨組), 프레임워크(framework)라고도 한

ko.wikipedia.org

 

728x90

'Programming > CS' 카테고리의 다른 글

JSON  (0) 2021.11.02
HTTP - HyperText Transfer Protocol  (0) 2021.10.28
마크다운  (0) 2021.10.28
테스트 주도 개발 TDD  (0) 2021.10.15
Ajax  (0) 2021.10.15

댓글