간단히 말해 프레임워크는 개발자가 애플리케이션 개발을 하는데 기본적으로 필요한 구조를 제공
하여 기능구현에 집중할 수 있도록 도와주는 도구다. 다른 개발자들과 협업을 할 경우, 프레임워크의 구조에 맞춰 개발하게 된다면 유지보수에 있어서 편리함이 있다.
라이브러리는 앱 개발을 위한 필요한 기능들을 미리 구현해 둔 기능이다. 사용자가 필요할 때 언제든 불러와서 사용가능하며 재사용성이 뛰어나다.
공통점은 둘 다 애플리케이션을 개발하는데 있어 쉽고 빠른 생산성을 제공하여 개발 속도를 줄여줄 수 있다.
차이점은 제어흐름
에 대한 주도권이 누구에게 있는가
에 있다. 프레임워크의 경우 정해진 구조 안에서 개발자가 코드를 짜는 반면, 라이브러리는 개발자가 직접 라이브러리를 호출하여 원하는 곳에서 사용하기 때문이다.
정적 라이브러리의 경우 애플리케이션의 크기가 라이브러리를 합친 용량이 되기 때문에 직접 구현하는 것보다 성능상으로 떨어질 경우가 있다. 또한 라이브러리안의 코드를 비슷한걸 쓰거나 중복되는 것을 사용하는 경우 메모리 공간을 중복으로 차지하기 때문에 효율성이 떨어진다.
동적 라이브러리의 경우 외부에서 파일을 불러오기 때문에 컴파일때는 문제가 없지만, 실행할 경우 라이브러리의 버전이 맞지 않거나 없다면 문제가 발생할 수 있다.