면접 단골 질문으로 나오는 주제 “라이브러리 vs 프레임워크 vs API”를 식상하지만 정리해본다.
라이브러리
프로그래머가 코드를 작성할 때 빠르게 구현할 수 있도록, 관련된 기능들을 모아둔 코드의 집합. 일반적으로 호출 할 수있는 함수의 집합이며, 클래스로 구성. 각 호출은 일부 작업을 수행하고 클라이언트에서 제어를 결정한다.
프레임워크
빠르게 개발하기 위해 제공된 소프트웨어 환경. 한 가지 중요한 특징은 소프트웨어를 완성하기 위해 사용자가 정의한 메서드가 사용자의 애플리케이션 코드가 아닌 프레임워크 자체 내에서 호출되는 경우가 많다. IoC가 프레임워크를 나타낼 수 있는 가장 큰 특징이다.
API
응용 프로그램에서 사용할 수 있도록, 소프트웨어에서 제공하는 기능을 제어할 수 있는 인터페이스다. API에는 구현이 포함되어 있지 않는 것 유의해야된다. 구현과 독립적으로 사양만 정의되어 있다.
질문: 프레임워크가 라이브러리를 포함할 수 있는가?
결론부터 말하면 ‘그렇다’다. 사용자가 제어의 흐름을 완성할 때, 필요한 기능을 쉽게 구현할 수 있도록 충분히 프레임워크 안에 라이브러리가 준비되어 있을 수 있다. 대표적으로 Spring framework 안에 있는 Jackson 라이브러라가 있다. 프로그래머가 json 파일을 직렬화 또는 역직렬화 하기 쉽도록 해당 라이브러리를 제공하고 있다. (링크)
댓글남기기