Library
단순 활용이 가능한 도구들의 집합
-라이브러리는 주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 집합입니다. 여기에는 미리 작성된 코드, 변수, 함수, 클래스가 포함될 수 있습니다. 쉽게 말하면, 개발자가 개발하는데 필요한 것들을 모아둔 도구들의 나열로 필요할 때 호출하여 사용하는 방식을 취하고 있습니다.
FrameWork
소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합
-프레임워크는 소프트웨어 어플리케이션이나 솔루션의 개발을 수월하게 하기 위해 소프트웨어의 구체적 기능들에 해당하는 부분의 설계와 구현을 재사용 가능하도록 협업화된 형태로 제공하는 소프트웨어 환경을 말합니다.
프레임워크는 애플리케이션 개발 시 필수적인 코드, 알고리즘, 데이터베이스 연동 등과 같은 기능을 위해 어느정도 뼈대를 제공해주는 것입니다. 그리고 그러한 뼈대 위에 개발자가 코드를 작성하여 애플리케이션을 완성해야합니다. 어느정도 뼈대를 제공해 주기 때문에 객체지향 개발을 하면서 일관성 부족 등의 문제를 해결해 줍니다.
Library vs FrameWork
프레임워크와 라이브러리의 차이는 흐름(Flow)에 대한 제어 권한이 어디에 있느냐의 차이입니다. 프레임워크는 전체적인 흐름을 자체적으로 가지고 있으며, 프로그래머가 그 안에 필요한 코드를 작성하는 반면에 라이브러리는 사용자가 흐름에 대해 제어를 하며 필요한 상황에 가져다 쓰는 것입니다. 이 내용을 한 문장으로 정리하자면 프레임워크에는 제어의 역전(Inversion Of Control)이 적용되어있다는 것입니다.
라이브러리 코드
LIbrary에서는 개발자가 전체 실행흐름을 주도하면서 라이브러리 코드가 필요한 곳에서 라이브러리를 호출합니다.
전체실행흐름에 대한 제어를 개발자가 합니다.
프레임워크 코드
스프링에서는 DispatcherServlet이라는 서블릿을 제공해주고 요청이 올때마다 DispatcherServlet이 요청을 처리합니다.
요청을 처리하는 과정에서 개발자가 작성한 @Controller가 붙은 클래스의 메소드를 실행합니다.
즉, 스프링에서는 전체흐름에 대한 제어를 프레임워크가 가지고 있고,
프레임워크의 코드가 실행되면서 개발자가 작성한 코드가 필요할 때만 개발자코드를 실행합니다.
라면?