라이브러리와 프레임워크의 차이
프레임워크는 라이브러리의 집합이다.
쉽게는 라이브러리와 프레임워크의 차이를 단수와 복수라 할 수 있고,
좀 더 정확하고 기술적으로 차이를 얘기해보자면, 개발의 제어권이 어디있는가로 구별된다.
- 라이브러리 : 단일 문제 해결을 위한 단일 도구 = “뭐가 필요해? 자, 이거 가져가”
- 프레임워크 : 다수 문제 해결을 위한 도구 집합 = “네가 뭘 좋아할지 몰라서, 모든걸 다 준비했어”
- 다수의 라이브러리 제공 : 개발에 필요한 라이브러리들을 한데 묶어, 개발 편의성 제공
- 다수의 인터페이스 제공 : 개발을 위한 껍데기를 제공할뿐 필요한것은 직접 구현 혹은 라이브러리 교체
1). 라이브러리
라이브러리는 상세 구현체를 제공하고, 개발자는 필요한 기능 사용을 위해 라이브러리를 가져와 코드와 합친다.
- 합친다 : 개발자는 자신의 코드와 라이브러리가 합쳐지도록 개별 설정 및 코딩 필요
- 고-통 : 개발자의 역량에 따라 라이브러리가 제대로 기존 어플리케이션 코드에 합쳐지지 않을 가능성
- 즉, 개발자는 라이브러리 사용에 대한 책임과 모든 제어권을 갖는다 : 흐름 제어권 = 개발자 몫
라이브러리는 상세 구현체를 제공하고, 개발자는 라이브러리를 어떻게 설정, 사용할지 기존 로직과 연결에 대한 제어권 가짐
2). 프레임워크
프레임워크는 껍데기만 주어질 뿐 상세 구현체는 개발자가 직접 개발하거나, 다른 라이브러리들을 가져와 꽂는다.
- 꽂는다 : 프레임워크는 라이브러리를 편하게 바꿔쓸 수 있도록 공통 인터페이스 제공
- 편-안 : 개발자 역량에 상관없이 쓰고싶은 라이브러리가 있다면, 그냥 가져다가 꽂기만하면 만사해결
- 즉, 프레임워크는 라이브러리 사용에 대한 책임과 모든 제어권을 갖는다 : 흐름 제어권 = 프레임워크 몫
- IoC (Inversion of Control, 제어권의 역전) : 개발, 흐름 제어권이 개발자에서 프레임워크로 이동
프레임워크는 모듈화를 통해 함수 모든 로직의 연결에 대한 제어권을 제공하고, 개발자는 각 모듈의 상세 구현체만 신경
(이미지 넣기)
- 굳이 단점이라 한다면, 개발자는 프레임워크가 짜여진 틀 안에서 상세 구현을 해야하는 제약이 있다.
- Framework 는 프로그램 유기 관계 및 동작에 대한 제어권을 미리 다 정해놓고
- 개발자는 곳곳에 비워진 각 부분에 대한 상세 구현만 생각하면 되기때문