0408(월) Java의 Library vs Framework - hwj0623/ios_swift GitHub Wiki
레퍼런스
원문 출처 : Java - Library vs Framework
Martin Fowler - Inversion of Control Containers and the Dependency Injection pattern
1. Key Difference and Definition of Library and Framework
- 라이브러리와 프레임워크의 핵심적인 차이점은
Inversion of Control
에 있다. 당신이
라이브러리로부터메서드를 호출
할 때, 호출자는 제어흐름(control) 내에 존재한다.- 그러나, 프레임워크에서 메서드 호출할 때,
제어가 역전되어
프레임워크가 당신을 호출한다.
Library
- 라이브러리는 클래스 정의들의 집합이다.
- 이유 :
code reuse - 다른 개발자에 의해 쓰여진 코드들을 가져다 쓰는 것
을 의미
- 이유 :
- 일반적으로
class
들과method
들은 특정 영역의 도메인 내에서 특정한 연산들로 정의된다.- Ex; 수학과 관련된 몇가지 라이브러리들이 있다고 하자. 개발자들은 이 라이브러리들의 알고리즘의 작동방법의 재구현없이 단순히 함수 호출이 가능하다.
Framework
- 모든 제어의 흐름이 프레임워크 내에 존재한다.
- 미리 정의된 white spots 묶음이 존재하며, 그것들을 당신의 코드로 채우는 방식. (spring framwork 생각해봐라)
- 프레임워크는 일반적으로 더욱 복잡하다.
- 프레임워크는
뼈대
를 정의한다. 해당뼈대
를 토대로 (이 뼈대를 App의 특징에 따라 채우기 위해) 애플리케이션은 자기자신의 특징을 정의한다. - 이러한 방식에서 당신의 코드는 프레임워크에 의해 적절하게 호출될 것이다.
- 장점 : design의 좋고 나쁨을 걱정할 필요 없이, 개발자는 도메인의 특정 함수들의 구현에 집중할 수 있다.
2. Their Relation
-
공통점 : Framework이나 Library나 공통적으로 프로그래머가 사용할 API를 정의한다.
-
a 라이브러리 : an 애플리케이션의 특정한 함수
-
a 프레임워크 : the 애플리케이션의 골격
-
API : library와 framework를 연결하는 커넥터.
-
A typical development process normally starts with a framework, and fill out functions defined in libraries through API.