Framework
애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 연동과 같은 기능들을 위해 어느 정도 뼈대(구조)를 제공한다.
앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분은 프레임워크가 관리하며, 사용자는 프레임워크가 정해준 방식대로 클래스나 메서드들을 구현해야 한다.
📌 장점
📌 단점
ex)
- Django: Python의 웹 프레임워크
- Flask: Python의 마이크로 웹 프레임워크
- Ruby on Rails: Ruby의 웹 프레임워크
- Laravel, Codeigniter, CakePHP, Symfony, Zend: PHP의 웹 프레임워크
- Bootstrap: 트위터의 JavaScript 기반 웹 프레임워크
- Express.js, NestJS, meteor : Node.js 프레임워크
- Angular, Vue.js : 웹 프론트엔드의 SPA용 프레임워크
- Next.js : 웹용 React.js 프레임워크
Library
개발을 하기 위해 필요한 것들을 미리 구현해 놓은 대상, 도구.
재사용이 가능한 기능을 미리 구현해 놓고 필요한 곳에서 호출하여 사용할 수 있도록 만들어진 집합들을 말한다.
라이브러리는 혼자서 동작하는 완전한 프로그램이 아닌, 특정한 부분 기능만을 수행하도록 제작된, 컴파일되어 기계어의 형태로 (또는 대상 플랫폼에 따라서는 바이트코드로) 존재하는 프로그램이다.
Framework와 Library의 차이
어플리케이션의 제어 흐름의 권한을 누가 가지고 있느냐가 핵심이다.
라이브러리의 경우 사용자는 애플리케이션 코드의 흐름을 직접 제어한다.
개발 시 필요한 기능에 따라 능동적으로 라이브러리를 호출하여 사용하거나 기존에 구성된 함수나 코드를 가져다 쓰는 방식이다.
반면 프레임워크는 애플리케이션의 코드가 프레임워크에 의해 호출된다.
애플리케이션 코드는 프레임워크가 짜 놓은 틀에서 수동적으로 동작하기 때문에 제어의 흐름은 프레임워크가 가지고 있고 사용자가 그 안에 필요한 코드를 작성하게 되는 것이다.
✔
간단히 정리하면 프레임워크는 스스로 흐름을 가지고 있어 짜여진 틀에 맞게 사용자의 코드를 제어하는 반면, 라이브러리를 사용할 때에는 사용자가 흐름을 직접 제어한다. 어디서, 언제 호출할지 사용자가 결정짓게 되는 것이다.