라이브러리는 특정 기능을 쉽게 구현할 수 있도록 미리 작성되어 있는 코드의 집합을 의미합니다.
라이브러리를 사용하는 것은 특정 작업을 수행하기 위해 필요한 코드를 모두 직접 작성하는 것보다 훨씬 효율적입니다. 예를 들어, 웹 요청을 처리하는 코드, 그래픽을 처리하는 코드, 복잡한 수학 연산을 수행하는 코드 등을 라이브러리 형태로 사용할 수 있습니다.
프로그래머가 언제 라이브러리를 호출하고 어떻게 사용할지 결정합니다. 따라서 라이브러리는 일반적으로 애플리케이션 코드에서 호출되어 사용됩니다.
프레임워크는 소프트웨어의 특정 문제를 해결하기 위해 제공하는, 구조화된 플랫폼 또는 기반이라고 할 수 있습니다. 프레임워크는 구체적인 기능 구현에 사용되는 라이브러리들, 그리고 그 라이브러리들이 상호 작용하는 방식, 그리고 그러한 상호 작용을 제어하는 메인의 제어 흐름까지 포함합니다.
프레임워크는 "제어의 역전(Inversion of Control, IoC)" 이라는 원칙에 기반합니다. 이는 프로그램의 흐름을 프레임워크가 관리하고, 개발자는 프레임워크가 정의한 틀에서 필요한 코드를 작성하는 것을 의미합니다.
라이브러리를 사용할 때 개발자는 코드에서 라이브러리를 호출하며, 제어 흐름을 가지고 있지만, 프레임워크에서는 그 반대로 프레임워크 자체가 제어 흐름을 가지고 있습니다.
좋은 글 감사합니다!