프레임워크와 라이브러리의 차이

프레임워크 Link to heading

 프레임워크는 프로젝트의 전반적인 틀을 잡아주는 도구입니다. 한국어로는 뼈대이며, 영어로는 Frame + Work 두 단어를 합친 것입니다. 작품을 만들 때 뼈대 위에 살을 붙이듯, 프로젝트도 프레임워크에 맞추어 작성합니다. 프레임 안에서 작업한다고 생각하면 되겠습니다.

 프레임워크가 프로젝트의 설계나 스타일을, 개발 방향 등을 결정합니다. 개발자는 프레임워크에 맞추어 프로그래밍을 합니다. 개발자는 프레임워크의 메서드 등을 호출하기도 하지만, 보통은 프레임워크가 제공한 인터페이스에 맞추어 개발을 합니다. 프레임워크가 프로젝트 코드를 제어한다는 점에서, 제어의 역전(IoC)이 적용된다고 볼 수도 있겠습니다.

 프레임워크는 한번 정해지면, 다른 것으로 대체가 어렵습니다. 기존 프로젝트에 다른 프레임워크를 적용한다는 것은 전반적인 코드 설계 레벨에서 수정이 필요할 수도 있습니다.

Dagger2, .Net Framework, express.js, Spring, react, vue.js 등

호출 방향: 프레임워크프로젝트 코드


라이브러리 Link to heading

 라이브러리는 개발자가 필요에 의해 호출하는 도구입니다. 한국어로는 도서관입니다. 공부, 연구, 작업 등을 하다가 필요한 문서나 자료가 필요할 경우 책을 가져다가 참고하듯, 필요할 때 꺼내어 사용한다고 생각하면 됩니다.

 라이브러리를 호출한다고 해서 프로젝트 코드의 전반적인 설계나 스타일이 바뀌지는 않습니다. 그저 프로젝트에서 어떤 기능을 구현하기 위해 사용되는 다른 코드일 뿐입니다.

 라이브러리는 필요에 따라 다른 것으로 대체할 수 있습니다. 프로젝트에서 필요한 기능에 더욱 부합하는 라이브러리가 나온다면 얼마든지 대체가 가능하며, 해당 기능 또는 모듈에서의 라이브러리 호출&적용 코드만 수정해주면 보통은 문제가 없습니다.

Retrofit, Volley, Glide 등

호출 방향: 라이브러리프로젝트 코드