개발을 하다보면 프레임워크와 라이브러리에 대해 굉장히 많이 듣게 되는데 대충 알것 같으면서도 명확한 차이는 알지 못했습니다.
그래서 둘이 뭐가 다른데? 물어보면 할말 없고, 뭔가 비슷하긴해서 물어보는 거겠지..? 싶은 마음 뿐이었습니다 ㅎㅎ
이번에 기회를 통해 프레임워크와 라이브러리의 개념을 알아보고 어떤 차이가 있는지 소개해보겠습니다.
프레임워크
프레임워크를 왜 사용할까라는 질문부터 들어가는 것이 효율적일 것 같습니다.
웹 개발을 하다보면 굉장히 정형화되고 반복되는 작업들이 많을 수 밖에 없습니다. 그리고 기술만 있다면 전 세계 사람들이 웹에 접근하고 유지보수를 하는 만큼 어느 정도의 형식이 필요하겠지요.
이러한 이유에서 프로그래밍 언어별로 개발을 용이하고 효율적으로 할 수 있게끔 틀을 제공하는 필요해졌고, 그렇게 탄생한 것이 프레임워크입니다.
프레임워크의 개념 및 특징👇
위와 같은 특징으로 인해 프레임워크를 사용한다고 생각하시면 됩니다.
큰 특징으로, 구조화되어 있기에 운영 및 유지보수가 유지하다는 점과 반복되는 코드를 최소화 할 수 있다는 점이 현재 느낄 수 있는 가장 큰 이점입니다 ㅎㅎ
프레임워크의 종류👇
라이브러리
라이브러리는 그럼 뭘까요? 전 자세히 알아보기 전에는 프레임워크 안에 포함된 함수의 모음집 정도로 생각했습니다.
맞는 부분도 있지만 전부라고 설명하지도 못하죠.
우선 라이브러리의 예시를 들면 조금더 이해하기 쉬울 것 같습니다.
위 두개는 개발하는 사람이라면 프론트, 백엔드를 막론하고 다 알만한 라이브러리 입니다. 우선 라이브러리라 할려면 아무 함수나 모아 놓는다고 되는 것이 아닙니다. 우리가 도서관에서 문화관련 서적을 모아놓은 곳에 갔는데 컴퓨터공학서적이나 공무원 문제집들이 있으면 굉장히 난해하고 왜 섹션을 정해놓은 건지 모르겠죠?
자바스크립트를 용이하게 작성할 수 있게끔 함수를 모아놓은 컨셉의 jQuery, API 정보 교환에 최적화된 컨셉의 JSON처럼 특정 기능의 함수의 모음집이 라이브러리라고 할 수 있습니다.
Java에서도 마찬가지로 우리가 원하는 모든것은 객체 즉, 클래스 단위로 작성하여 프로그램을 작성하는데 Java에서는 자주 사용되고 유용한 기능을 하는 class들을 만들어 놓고 제공을 합니다. 이떄 이 클래스들을 관련된 기능별로 분류하여 패키지 단위로 묶어서 관리하는데 이 패키지 파일을 라이브러리라고 합니다.
프레임워크와 라이브러리의 차이
가장 근본적인 차이입니다.
프레임워크: 사용자를 규칙으로 제어하고 코딩을 정해진 틀에서 하게끔 제어
라이브러리: 사용자가 필요시 호출하여 제어
제어의 흐름을 보면 프레임워크는 사용자를 제어하고 사용자는 라이브러리를 제어합니다. 그에 따라서 프레임워크의 수동적인 성향고 라이브러리의 자율적인 성향이 도드라지게 됩니다.
결국 이 근본적인 차이로 아래의 표와 같은 차이가 발생하게 됩니다.
프레임워크와 라이브러리의 차이는 솔직히 이해하기 어렵지는 않습니다. 그렇지만 제대로 공부하기 전에는 애매하게 알 수밖에 없기도 하죠.
'제어의 흐름'을 잘 기억하면 둘의 차이에 대해서 더 쉽게 기억할 수 있을 것 같습니다~
참고자료