소프트웨어 프레임워크(software framework)는 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조이다. 간단히 뼈대, 골조(骨組), 프레임워크(framework)라고도 한다.
at 위키피디아
프레임워크는 개발을 쉽게하도록 기본적으로 필요한 구조와 구성을 갖추어서 제공해주는 것을 의미합니다. 덕분에 개발자는 개발이 더 쉬워지며 기본적인 설계가 제공되기에 로직구성에 더 신경쓸 수 있습니다.
여러명이서 개발을 진행할 때 각자의 취향 및 생각의 차이가 존재하기때문에 통일성을 이루기 매우 힘듭니다. 프레임워크를 사용할 때 기본적인 구조와 구성이 같기 때문에 통일된 뼈대와 가이드에 맞는 설계를 기반으로 그 위에 올라갈 코드의 통합성과 일관성을 높일 수 있습니다.
즉, 구현에만 신경쓸 수 있도록 프로젝트의 뼈대와 가이드가 제공되는 것을 프레임워크라고 생각하면될 것 같습니다.
ex ) spring, Django ... 등등
라이브러리(영어: library)는 주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다. 여기에는 구성 데이터, 문서, 도움말 자료, 메시지 틀, 미리 작성된 코드, 서브루틴(함수), 클래스, 값, 자료형 사양을 포함할 수 있다.
at 위키백과
라이브러리는 개발을 용이하도록 이미 구현된 도구입니다. 재사용이 가능하도록 기능을 구현하고 필요한 부분에 가져와서 사용할 수 있도록 만들어진 대상들의 집합입니다.
프로그램을 컴파일하는 과정에서 포함시키는 오브젝트 파일들의 모임
즉, 라이브러리의 동작 코드가 이를 사용하는 실행 바이너리 속에 포함되기 때문에 별도의 추가 작업없이, 그리고 독립적으로(실행 바이너리만으로...)라이브러리 함수들을 사용할 수 있다.
하지만, 정적 라이브러리를 사용하는 프로그램이 늘어나면 늘어날수록 불필요하게 실행 파일들의 크기가 커지며, 라이브러리가 동시에 여러 실행 바이너리에 포함되어 실행되는 경우 메인 메모리의 공간 활용 효율이 떨어지는 등 multiple-caller program이 존재하는 경우 그다지 바람직하지 않다.
완성된 프로그램을 실행할 때 포함시키는 동적 라이브러리
동적 라이브러리는 이를 사용하고자 하는 실행 바이너리에서 필요시 사용할 수 있도록 최소한의 정보만 포함하여 링크하거나,아예 독립적으로 DLL을 로드/사용/해제할 수 있다.
DLL을 구현하고 컴파일하고 나면 Static library와는 다르게 output file이 2개가 생성된다.
https://luyin.tistory.com/201 [Luyin:티스토리]
https://goodgid.github.io/Static-VS-Dynamic-Libray/
쉽고 빠른 애플리케이션 개발을 진행하도록 생산성 증대를 위해 사용합니다.