프레임워크란?
프레임워크는 뼈대, 기반구조를 의미합니다.
다양한 framework 종류 프로그래밍에서는 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화 된 형태로 클래스들을 제공하는 것으로, 개발자는 프레임워크의 뼈대 위에서 코드를 작성하여 프로그램을 개발할 수 있습니다.
라이브러리란?
라이브러리란 특정 기능에 대한 도구 또는 함수들의 집합을 의미합니다. 재사용이 가능한 기능을 미리 구현해놓고, 필요한 곳에서 호출하여 사용할 수 있도록 만들어진 도구들의 집합입니다.
프레임워크와 라이브러리의 차이점
프레임워크와 라이브러리는 쉽고 빠른 개발을 위해 사용한다는 공통점을 가지고 있습니다.
그러나 가장 큰 차이점은 흐름을 누가 가지고 있냐의 차이입니다.
프레임워크는 스스로 흐름을 가지고 있으며, 개발자는 그 뼈대 위에서 필요한 코드를 작성합니다.
반면 라이브러리는 개발자가 전체적인 흐름을 가지고 있으며, 자신이 원하는 기능을 구현하고 싶을 때 라이브러리를 가져와 사용합니다.
예를 들어, 프레임워크는 사람이 타서 운전하는 자동차, 비행기 등에 비유할 수 있으며, 라이브러리는 사람이 사용하는 톱, 망치 등의 도구에 비유할 수 있습니다.
IoC(Inversion of Control, 제어의 반전)
제어의 반전이란 어떤 일을 하도록 만들어진 프레임워크에 제어의 권한을 넘김으로써 클라이언트 코드가 신경써야 할 것을 줄이는 전략입니다.
일반적으로 라이브러리는 개발자가 작성하는 클라이언트 코드가 라이브러리의 메소드를 호출해서 사용합니다. 반면, 프레임워크에서는 프레임워크의 메소드가 개발자의 코드를 호출하며 이를 제어의 반전이라 합니다.