컴공과블로그

프레임워크와 라이브러리?! 두 개는 뭐고 두 개의 차이점은 뭘까! 본문

개발 & CS지식/CS

프레임워크와 라이브러리?! 두 개는 뭐고 두 개의 차이점은 뭘까!

LYHyoung 2023. 10. 19. 00:03
728x90

우선 프레임워크, 라이브러리 각각의 간단한 정의를 알아보자!

프레임워크

프레임워크는 복잡한 문제를 해결하거나 서술하는 데 사용되는 개본 개념 구조이다
-위키백과-

프레임워크는 애플리케이션 개발 과정에서 필수적인 코드, 알고리즘, 데이터베이스 연결과 같은 핵심 기능을 위한 구조와 기반을 제공합니다. 이를 통해 개발자는 주어진 뼈대 또는 구조 위에서 자신의 애플리케이션을 개발할 수 있습니다.
프레임워크는 소프트웨어 설계와 구현의 구체적인 부분을 재사용 가능한 형태로 제공하며, 이를 위한 클래스와 인터페이스의 집합으로 이루어져 있습니다. 다시 말하면, 프레임워크는 개발자가 애플리케이션을 쉽게 개발할 수 있도록 필요한 구조와 기능을 제공해줍니다.
예를 들어, Java 개발에서 Spring 프레임워크, Python 개발에서 Django, 그리고 안드로이드 앱 개발에서 Android는 이러한 프레임워크의 예시입니다. 이러한 프레임워크는 개발자들에게 개발 작업을 효율적으로 수행할 수 있는 도구와 지침을 제공하여 애플리케이션 개발을 간편하게 만들어줍니다.

라이브러리

라이브러리는 주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다. 여기에는 구성 데이터, 문서, 도움말, 메시지 틀, 미리 작성된 코드, 함수, 클래스, 값, 자료형 사양 등을 포함할 수 있다.
-위키백과-

라이브러리는 개발 작업을 수행하는 데 필요한 기능을 이미 구현한 도구로 볼 수 있습니다. 이러한 라이브러리는 재사용 가능한 기능을 미리 구현해놓고, 필요한 곳에서 이러한 기능을 호출하여 사용할 수 있도록 만들어진 집합체입니다.
예를 들어, C++의 Standard Template Library (STL)나 Python의 패키지 또는 모듈 (예: pandas, tensorflow 등)을 설치하여 사용하는 것이 라이브러리의 한 예입니다. 이러한 라이브러리는 개발자가 기존의 코드를 다시 작성할 필요 없이, 필요한 기능을 효과적으로 활용할 수 있게 해줍니다.

 

그렇다면 프레임워크와 라이브러리의 차이는 무엇일까?

프레임워크는 라이브러리를 포함하는데, 프레임워크 위에 개발자가 작성한 애플리케이션 코드가 배치되고 해당 코드에서는 라이브러리를 호출할 수 있습니다.
프레임워크와 라이브러리 간의 주요 차이는 "제어 흐름"이 어디에 위치하는지에 있습니다. 프레임워크는 제어의 역전 (IoC: Inversion of Control) 개념을 적용하며, 이는 개발자가 작성한 코드에서 제어의 흐름을 프레임워크에게 넘기는 것을 의미합니다.
프레임워크는 전반적인 흐름을 관리하고, 애플리케이션 코드는 프레임워크가 제시한 틀 안에서 수동적으로 동작합니다. 제어의 흐름은 따라서 프레임워크에게 속하게 됩니다. 반면, 라이브러리는 개발자가 전체적인 흐름을 제어하며 라이브러리를 필요할 때마다 능동적으로 호출하여 사용합니다. 즉, 라이브러리는 개발자에게 전적으로 제어 흐름이 있습니다.

728x90