프레임워크 : 프레임워크는 원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격 , 뼈대를 말합니다.
애플리케이션 개발을 할때 필요한 기능들 , 예를 들어 알고리즘 ,DB연동과 같은 기능들을 위해 기본적인 뼈대를 제공해주고 이러한 뼈대 위에서 개발자들은 코드를 작성하여 애플리케이션을 개발합니다. 앱과 서버의 구동 , 이벤트 루프 , 메모리관리의 공통적인 부분들을 프레임워크가 관리해주고 개발자는 프레임워크에서 정해진 룰대로 클래스 및 메소드를 구현하면 됩니다.
프레임워크의 예시
라이브러리 : 소프트웨어를 개발할때 컴퓨터 프로그램이 사용하는 특정 기능들을 모와둔 코드, 함수들의 집합이며 코드 작성시 활용 가능한 도구를 말합니다.
라이브러리 예시
프레임워크 VS 라이브러리
라이브러리를 사용하는 애플리케이션 코드는 애플리케이션의 흐름을 직접 제어하고 동작하는 도중에 필요한 기능이 있을때 능동적으로 라이브러리를 사용할 뿐입니다.
반면에 프레임워크는 거꾸로 애플리케이션 코드가 프레임워크에 의해 사용됩니다.
프레임워크에는 제어의 역전 개념이 적용되어 있습니다.
결과적으론 프레임워크와 라이브러리의 차이점의 제어 흐름의 권한이 어디에 있는가로 알 수 있습니다.
라이브러리를 사용할때는 사용자가 애플리케이션 코드의 흐름을 직접 제어하지만 , 프레임워크는 애플리케이션 코드의 흐름이 프레임워크에 의해 제어됩니다.
애플리케이션 코드는 프레임워크가 짜 놓은 틀에서 수동적으로 동작하기 때문에 제어의 흐름은 프레임워크가 가지고 있고 사용자가 그 안에 필요한 코드를 작성하게 됩니다.