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

framework-vs-library

  • 라이브러리와 프레임워크의 핵심적인 차이점은 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.