라이브러리와 프레임워크
언어 하나를 해보고 프레임워크로 넘어가는 시점에서 언어와 관련하여 다양한 용어들이 나옵니다. 특히 라이브러리, 프레임워크 뭔가 다른 역할을 하는 것 같은데 처음 접하는 입장에서는 헷갈리기도 하는 것 같습니다. 그래서 오늘은 이 용어들을 간단하게 정리 비교 해보겠습니다.
1. 라이브러리
라이브러리(library)는 특정 함수나 기능들을 모듈화 하여 모아둔 것입니다. 라이브러리는 그 자체로는 실행시킬 수 없고 라이브러리를 포함하는 프로그램이나 API의 호출 등을 통해서 실행이 가능합니다.
이미 기능들이 구현되어있고 그것들을 가져와서 사용하는 것이기 때문에 코드의 재사용성, 빠른 작성 등의 이점을 취할 수 있습니다.
라이브러리에는 정적 라이브러리와 동적 라이브러리가 있습니다.
정적 라이브러리는 컴파일러가 소스 파일을 컴파일할 때 참조되는 라이브러리입니다. 컴파일시에 참조되므로 실행 파일에 포함되어 설치됩니다.
동적 라이브러리는 프로그램을 수행하다 해당 기능이 필요할 때만 참조하는 모듈입니다. 정적 라이브러리처럼 실행파일에 포함되지 않아 실행 파일 용량이 줄어드는 장점이 있습니다.
한 예로, 자바스크립트의 라이브러리에는 제이쿼리, 리액트 등이 있습니다.
1-2. API
API라는 단어도 종종 들을 수 있는데, Application Programming Interface라는 단어로, 해석하면 응용 프로그래밍 인터페이스 입니다. API는 프로그램에 대해 어떤 사양적인/설계적인 면만을 지원합니다. 이런 API들을 사용할 수 있도록 구현해 놓은것이 라이브러리라고 할 수 있습니다.
2. 프레임워크
프레임워크는 정의 자체는 매우 모호하며 넒은 범위를 가집니다. 프레임워크는 개발에서 문제 해결을 위한 구조입니다. 보통 프레임이라고 하면 어떤 틀을 떠올리는데, 그 틀에 따라서 완성품을 만들죠. 이처럼 프레임워크는 문제 해결을 위해 틀에서 완성품을 이끌어내는 것이라고도 할 수 있습니다.
예로 자바스크립트의 프레임워크에는 앵귤러, 뷰 등이 있습니다 Node.js의 Express.js도 프레임워크입니다. (단, Node.js는 프레임워크가 아닙니다!)
2-1. 라이브러리와 프레임워크의 차이점
어떻게 보면 라이브러리와 별 차이가 없는 것 같지만, 프레임워크가 좀 더 포괄적인 개념입니다. 라이브러리는 기능만을 합친 것이라면 프레임워크는 라이브러리가 포함된 클래스까지 정의되어 제공합니다. 이때문에 라이브러리는 기능 자체만을 가지고 자유롭게 활용할 수 있지만, 프레임워크는 프레임워크에서 제공하는 사용법에 따라서 이용해야 하죠.
참조