프레임워크 :
원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대를 의미합니다.
- Spring이나 Android 같이 이미 만들어진 뼈대 안에서 개발자가 쉽게 개발할수 있게 만든것이 프레임워크.
- 예를 들어 다른 곳으로 이동할 때 '도구'인 비행기를 타고 이동하지만 '비행기'가 컨트롤하고 나는 가만히 있다.
- 예시 : Spring, Python, Django, Flask, Android, Ruby on Rails
라이브러리:
특정 기능을 모와둔 코드, 함수들의 집합이며 코드 작성 시 활용 가능한 도구들을 의미합니다.
- 자주사용되는 코드를 자율성 높고 편하게 사용 가능
- 예를 들면 '도구'인 '가위'를 사용해서 '내가' 직접 컨트롤하여 자르는게 라이브러리와 비슷함
- 예시 : Retrofit이나 Room DB 같은것들이 안드로이드에서 자주 사용되는 라이브러리
프레임워크 vs 라이브러리
프레임워크와 라이브러리의 차이점은 "제어 흐름"의 권한이 어디에 있는가입니다.
- 라이브러리 : 사용자
- 라이브러리를 사용할 때 사용자는 애플리케이션 코드의 흐름을 직접 제어해야 합니다.
- 라이브러리의 객체나 함수를 개발자가 직접 호출하여 사용한다.
- 프레임워크 : 프레임워크
- 프레임워크에는 분명한 제어의 역전 개념이 적용되어 있어야 합니다. 애플리케이션 코드는 프레임워크가 짜놓은 틀에서 수동적으로 동작해야 합니다.
- 개발자가 구현한 메서드가 프레임워크에 의해 호출된다.