평소 개발을 진행하면서 프레임워크와 라이브러리를 많이 사용하는데, 이 둘의 차이점을 잘 알지 못하고 있었다. 이에 인터넷으로 여러 사람들의 블로그 내용을 정리하면서 둘의 차이점을 확실하게 알고자 글을 작성하게 되었다.
: 원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대
: 앱/서버 등의 구동, 메모리관리, 이벤트 루프 등 공통된 부분은 프레임워크가 관리하고, 사용자는 프레임워크가 정해준 방식대로 클래스, 메소드를 구현
: 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임
: 특정 기능을 모와둔 코드, 함수들의 집합이며 코드 작성 시 활용 가능한 도구
: 미리 작성된 코드, 변수, 함수, 클래스가 포함된다.
주도권 : 프레임워크
-> 프레임워크가 제공하는 기능을 이용하거나 허용하는 범위 내에서만 추가 도구 사용 가능
프레임워크는 모델하우스를 짓는것에 비유할 수 있다. 모델하우스의 소파의 위치, 의자와 책상의 위치, 방의 용도 등. 우리가 수정할 수 있는 범위는 제한적이다. 주방의 위치, 기둥의 개수, 방의 개수 등 집을 이루고있는 굵직한 뼈대는 수정할 수 없다. 사용자는 모델하우스가 제공하는 청사진 안에서"만" 움직일 수 있다. 프레임워크가 제공하는 틀에 따라 코드를 작성해야 하는것이다.
주도권 : 개발자
-> 기능 구현을 원하는 방향으로 진행
-> 쓰고싶은 도구, 쓰고싶은 기술 사용
라이브러리는 이케아에서 산 재료로 가구를 조립하는것에 비유할 수 있다. 집에서 사용할 가구를 조립하거나 만들기 위해 벌목부터 시작해서 목공을 하거나, 가죽을 얻기위해 사냥을 하고싶은 사람은 거의 없을것이다. 그래서 이케아 혹은 가구점에 가서 기본적인 재료를 사서 입맛대로 조립하고 배치할 수 있다.
[ 토비의 스프링 中 ]
- 프레임워크는 단지 미리 만들어준 반제품이나, 확장해서 사용할 수 있도록 준비된 추상 라이브러리의 집합이 아니다. 프레임워크가 어떤 것인지 이해하려면 라이브러리와 프레임워크가 어떻게 다른지 알아야 한다.
- 라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어한다.
단지 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 사용할 뿐이다.- 프레임워크는 거꾸로 애플리케이션 코드가 프레임워크에 의해 사용된다.
프레임워크에는 분명한 [제어의 역전] 개념이 적용되어 있어야 한다.- 애플리케이션 코드는 프레임워크가 짜 놓은 틀에서 수동적으로 동작해야 한다.
어플리케이션의 Flow(흐름)를 누가 가지고 있는가
프레임워크
라이브러리
참고 링크 :