Framework
는 기본적으로 프로그래밍을 하기 위한 어떠한 틀이나 구조를 제공한다.서로 다른 애플리케이션 간의 통신이나, 데이터를 데이터 저장소에 저장하는 등의 다양한 기능들 역시 Framework이 라이브러리 형태로 제공함으로써 개발자가 애플리케이션의 핵심 로직을 개발하는 것에 집중할 수 있도록 해준다.
우리가 사용하는 Framework의 규약에 맞게 코드를 작성하기 때문에, 유지보수가 필요한 경우 더 빠르고 쉽게 문제점을 파악해 수정할 수 있다.
동시에 내가 작업했던 코드를 다른사람이 수정할 경우에도 이미 Framework에 규약에 맞게 작성된 코드이기 떄문에, 빠르게 코드를 파악하고 수정하기 용이하다.
이는 곧 유지보수 이외에도 비슷한 기능을 개발할때 코드의 재사용이 용이하고 기능의 확장또한 쉽게 확장이 가능하다.
내가 사용하고자 하는 Framework에 대한 학습이 필요하다.
자유롭고 유연한 개발이 어렵다.
우리가 사용하는 Framework에 규약을 벗어나기가 어렵다. 이미 만들어진 애플리케이션에서 Framework를 변경하거나, 유연한 개발을 위해 Framework를 사용하지 않게 변경할 경우 많은 노력이 필요하다.
애플리케이션을 개발하는 데 사용되는 일련의 데이터 및 프로그래밍 코드
애플리케이션을 개발할 때 필요한 기능을 미리 구현해놓은 집합체
자동차를 예시로 자동차를 구성하고 있는 요소에서
Framework
는 자동차의 뼈대, 즉Frame
을 의미한다. 그리고,Library
는 자동차에서 다양한 기능을 제공하는 부품을 의미한다.
한번 정해진 Framework를 교체하는일은 어렵지만, Library는 쉽게 교체가 가능하며 필요한 Library들을 선택적으로 사용할 수 있다.
Framework은 개발자가 애플리케이션의 핵심 로직을 개발하는 것에 집중할 수 있도록 해준다.
Library는 애플리케이션 흐름의 주도권이 개발자에게 있는 반면, Framework은 애플리케이션 흐름의 주도권이 개발자가 아닌 Framework에 있다.