본문 바로가기

CS

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

1. 라이브러리

  라이브러리는 개발을 할 때 프로그램이 사용할, 적용할 비휘발성의 자원의 모임이다. 즉 자주 사용되는 코드들을 모듈화한 것으로 이해하면 좋다. 데이터, 문서, 미리 작성된 코드, 클래스 등 여러 요소가 포함될 수 있다. Java를 예시로 들자면 java.lang, java.util 등을 얘기할 수 있다.

2. 프레임워크

  프레임워크는 일종의 뼈대를 뜻한다. 프로그램의 기반 구조이며 소프트웨어의 특정 문제를 해결하기 위한 클래스와 인터페이스의 집합이기도 하다.

  • 특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성되어 있다..  
  • 추상적인 개념들이 문제를 해결하기 위해 같이 작업하는 방법을 정의한다.
  • 컴포넌트들은 재사용이 가능하다. 
  •  높은 수준에서 패턴들을 조작화 할 수 있다.

3. 라이브러리 VS 프레임워크

  둘 모두 개발을 할 때 개발자의 편의를 위한 것은 동일하나 가장 큰 차이점은 제어흐름의 주도권이 누구에게 있냐는 점이다. 즉 프로그램의 흐름을 누가 쥐고 있냐이다. (개발자or프레임워크)

  프레임워크는 흐름의 주도권을 스스로가 쥐고 그 사이사이 필요한 부분을 개발자가 채워넣는다. 이에 반대로 라이브러리는 사용자가 전체적인 흐름을 구상하며 그 사이에 라이브러리를 이용해 가져다 채워넣는다. 즉 들어가서 채워넣는다 VS 가져와서 사용한다의 느낌으로 이해할 수 있다. 

 

4. 요약

라이브러리는 그냥 함수들이나 기능 모음을 가져다가 쓰는 것. 프레임워크는 특정 디자인 패턴이나, 전/후처리에 필요한 동작과 기능들을 수행하기 위해서 프레임워크가 실행되다가 중간에 특정 비지니스나, 구현 단에서만 사용자의 코드를 사용하는 형태