Framework와 Library
Framework
소프트웨어의 특정 문제를 해결하기 위해 상호 협력하는 클래스와 인터페이스의 집합
- 뼈대, 골조
- 프로그래밍을 하기 위한 어떠한 틀이나 구조를 제공하는 역할을 한다.
- 객체 지향 개발의 통합성, 일관성의 부족 문제 해결하는 방법 중 하나
- 재사용할 수 있는 수많은 워크를 통합시킨 것.
💡 프레임워크는 완성된 제품이 아닌 완성된 제품을 만들기 위해서 개발자를 도와주고 기반이 되는 역할을 한다.
Framework의 특징
- 제어의 역전 개념이 적용된 대표적인 기술이다.
- 특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성되어 있다.
- 추상적인 개념들이 문제를 해결하기 위해 같이 작업하는 방법을 정의한다.
- 컴포넌트들은 재사용이 가능하다.
- 높은 수준에서 패턴들을 조작화 할 수 있다.
💡 제어의 역전(IOC : Inversion Of Control)
어떤 일을 하도록 만들어진 프레임워크에 제어의 권한을 넘김으로써 클라이언트 코드가 신경 써야할 것을 줄이는 전략
Framework의 장단점
Framework의 장점
Framework의 단점
- 내가 사용하고자 하는 프레임워크에 대한 학습이 필요하다.
- 자유롭고 유연한 개발이 어렵다
Library
소프트웨어 개발에 쓰이는 단순 활용가능한 도구들의 집합이다.
- 애플리케이션을 개발하는 데 사용되는 일련의 데이터 및 프로그래밍 코드
- 개발자가 만든 클래스에서 호출하여 사용하거나 클래스들의 나열로 필요한 클래스를 불러서 사용하는 방식
Framework와 Library의 차이
💡 제어 흐름의 주도성(IOC)
- ❗프레임워크 : 전체적인 흐름을 주도하여 개발자가 프레임워크 안에서 필요한 코드를 짜 넣는다.
- ❗라이브러리 : 사용자가 전체적인 흐름을 주도하여 라이브러리를 가져다 사용한다.
💡라이브러리는 가져와서 사용의 개념, 프레임워크는 프레임워크 내에서 사용의 개념
💡 애플리케이션 코드는 프레임워크가 짜놓은 틀에서 수동적으로 동작