프레임워크

프로그래밍 언어로 애플리케이션을 만들 때 템플릿처럼 사용할 수 있는 틀이자 뼈대.
뼈대를 제공하고 그 위에 개발자가 디테일한 기능 구현 코드를 올려 동작하게끔 해주며,
객체지향 개발을 할때에 시스템을 일관성있게 관리할 수 있게 도와준다.
ex) 자바의 Spring, 파이썬의 Django 등

라이브러리

개발을 하며 필요한 것들을 미리 구현해 놓은 도구.
반복적인 코드의 작성을 없애고, 필요할 때마다 호출해서 재사용 할 수 있음.
ex) 자바스크립트의 jQuery, 윈도우의 dll 확장자 등

‘제어의 역전’

프레임워크와 라이브러리의 차이는 애플리케이션에 대한 제어의 흐름을 누가 가지고 있느냐이다.
라이브러리를 사용한다고 하더라도 애플리케이션의 주도성은 사용자에 있으며 라이브러리를 언제 호출할지는 사용자가 결정한다.
그러나 프레임워크는 전체적인 흐름을 스스로가 가지고 있다.
프레임워크가 흐름을 주도하고 그 중에 사용자의 코드를 사용하도록 하는 방식으로
사용자가 프레임워크를 호출해서 사용한다기보다는 그 안에 들어가서 사용한다는 느낌으로 인식할 수 있다.

Updated: