공통점
- 재사용 가능한 코드의 모음
- 프로그래밍을 쉽게 할 수 있도록 도와주는 역할
차이점
프레임워크 (Framework)
- 프레임워크는 정해진 매뉴얼, 룰을 제공한다. 개발 시 필수적인 코드와 알고리즘 같은 기능을 제공하는데 이 룰을 지켜야 한다.
- 클래스와 라이브러리가 합쳐진 구조이며, 이러한 협업 형태를 제공하는 것이다.
예를 들어, 콜백 함수의 정의는 개발자가 하지만 정해진 알고리즘에 따라 그 콜백 함수를 실행하는 건 프레임워크이다.
- 개인이 라이브러리로 이러한 규칙을 구축하는 데에는 시간과 돈이 필요하므로 이미 구축되어 있는 프레임워크를 사용하여 제작에만 집중하는 것이다.
- Java 개발에서 사용되는 Spring 프레임워크나 Python 개발에 사용되는 Django, 안드로이드 앱개발에 사용되는 Android 등이 있다.
라이브러리 (Library)
- 라이브러리는 개발에 필요한 것들을 미리 구현해놓은 도구라고 할 수 있다. 재사용이 가능한 기능을 미리 구현해놓고 필요한 곳에서 호출하여 사용 가능하도록 만들어진 집합이다.
- 라이브러리를 사용하더라도 프레임워크가 정한 방식에 따라야 하지만 어떻게 사용할 지는 개발자가 정할 수 있다.
- C++의 STL 이나 Python의 Pip로 설치한 패키지/모듈(pandas, tensorflow 등)이 있다.