여러 종류의 Framework와 Library들을 접하면서 대충은 구별을 하지만 정확히 어떤 차이가 있고 그 종류에는 무엇이 있는지 명확히 알고 싶어서 정리해보았다.


Framework란?

프로그램 개발에서의 큰 틀, 뼈대가 되어주는 것으로서 개발자는 원하는 기능의 구현에만 집중하여 빠르게 개발할 수 있도록 기본적으로 필요한 기능들을 갖추고 있다.

장점

  • 체계적으로 만들어지기 때문에 유지보수가 쉽다.
  • 필요한 기능 개발에만 집중할 수 있기때문에 생산성이 높다.

프레임워크의 예시

Java: Spring

Python: Django

JavaScript: Angularjs, React, Vuejs

PHP: Laravel

Library란?

라이브러리는 주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다.

조금 더 풀어서 말하자면 재사용이 필요한 기능들을 따로 Class나 Function으로 만들어두어 필요할 때 마다 불러와서 쓸 수 있게 한 것이다. 보통 코딩할 때 import해서 사용하는 함수들이 라이브러리 함수들이다.

장점

  • 코드의 중복이 줄어 가독성이 좋고 유지보수가 쉽다.
  • 프로그래밍 시간을 줄일 수 있어 생산성이 높다.

라이브러리의 예시

Java: lombok

JavaScript: jQuery

Framework와 Library의 차이점

Framework와 Library의 차이점의 가장 중요한 포인트는 “제어의 주체가 무엇이냐”이다.

라이브러리는 그저 개발자가 프로그래밍 할 때 필요한 경우 가져와서 쓰는거라 프로그램의 흐름을 개발자의 코드가 직접 제어하게된다. 반면 프레임워크는 (라이브러리를 사용한)개발자의 코드가 프레임워크에 의해 사용되기때문에 제어의 역전이 일어난다.

즉 라이브러리는 개발자의 코드가 제어의 주체로서 사용하는 것이고 프레임워크는 프레임워크가 제어의 주체가 되어 개발자의 코드를 사용하는 것이다.