Framework & Library : 둘 다 application을 개발하는데 있어 편의성(쉽고 빠르게) + 코드 재사용 가능
Framework
소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합
설계는 내가 할게 너는 구현만 해!
- application 개발하는데 있어 기본적으로 필요한
구조(뻐대)와 구성
을 갖추고 있음(클래스와 라이브러리가 합쳐진 구조)
=>뼈대 위에 개발자가 코드를 작성
하여 Application을 완성- Framework만으로 프로그램이 동작하는것이 아니라 뼈대를 제공하고 그 위에 개발자가 코드를 올려 동작하게끔
- 코드가 프레임워크에 의해 사용됨(
제어의 역전
개념이 적용되어 있어야함)
ex) Spring, Django, Android, Vue.js
- ex) 콜백 함수의 정의는 개발자가 하지만 정해진 알고리즘에 따라 그 콜백 함수를 실행하는 건 프레임워크
💡프레임워크 = 밀키트
이미 주어진 재료를 가지고 정해진 레시피 대로만 하면 요리완성!
요리의 완성도는 어느정도 보장되어 있지만 자유도는 떨어짐
Framework의 장점
가이드 제공 + 기본적인 설계 + 라이브러리 제공 ~
- 개발자가
기능구현
에 집중할 수 있도록 함 - 개발속도 향상
- 코드의 재사용성 높음, 확장성 높음
- 객체지향 개발을 하는데 있어 시스템을 일관성있게 관리할 수 있도록 도와줌
- 여러명의 개발자들이 각자의 취향에 따라 설계하고 코딩하면 관리측면에서 어려움
-> Framework가 제공하는 뼈대와 가이드에 맞게 설계하고 개발
-> 시스템의 통합, 일관성 유지 가능
- 여러명의 개발자들이 각자의 취향에 따라 설계하고 코딩하면 관리측면에서 어려움
Framework의 단점
- framework에 따른 별도학습 필요
- 프로젝트 용량 증가
- 자유롭고 유연한 개발 불가능
Library
코드작성 시 활용가능한 도구
- 재사용이 가능한
기능을 미리 구현
해놓음
->필요한 곳에서 호출
하여 사용할 수 있도록 만들어진 함수들의 집합
=> 개발자가 만든 클래스에서 호출해 사용 - 단지 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 사용할 뿐
ex) JQuery, React.js
- 💡
라이브러리 = 팬트리
요리하는 데에 정해진 규칙은 없지만 재료는 준비되어 있음
팬트리에 있는 식재료와 식기 등을 원하는 대로 가져가 원하는 대로 요리
-> 어떤 결과일지는 아무도 모름
Framework & Library 차이점
Flow(흐름)에 대한 제어 권한
이 어디에 있는가!
- Framework는 틀이고, 그 안에서 재사용이 가능하도록 만들어진 도구들이 라이브러리
Framework
: 전체적인 흐름을 자체적으로 가지고 있음 + 개발자가 그 안에 필요한 코드를 작성Library
: 개발자가 흐름에 대해 제어 + 필요한 상황에 가져다 쓰는 것
= 어디서, 언제 호출할 지 개발자가 결정
=> 한 문장으로 정리하자면 Framework에는 제어의 역전(Inversion Of Control)
이 적용되어있음
제어의 역전(Inversion Of Control)
어떠한 일을 하도록 만들어진 프레임워크에 제어의 권한을 넘김
-> 클라이언트코드가 신경써야 할 것을 줄임
- 일반적으로 프로젝트를 생성하고 Main 함수에서 프로그램의 흐름을 정하는 것은 프로그래머의 몫
- 개발자가 어떠한 순서를 부여하느냐에 따라서 흐름을 제어하는 것이 일반적인 사고
- but Framework는 실행의 흐름을 프레임워크 자체가 가지고 있어서 코드를 필요에 따라 프레임워크안에 넣어서 개발을 진행해야 함
Reference
https://mangkyu.tistory.com/4
https://cocoon1787.tistory.com/745
https://eroul-ri.tistory.com/5
https://velog.io/@nemo/framework-library-gfreqbgx