Framework , Library , API

Framework , Library , API ?


프로젝트나 IT공부를 하다보면  Framework , Library , API 라는 용어가 계속해서 나온다.

한번 정리가 필요할 것 같아서 이번에 정리를 해봤다.

Framework (프레임 워크)


프레임 워크는 개발자에게 일정 요소들과 틀(규칙, 규약)을 제공하여 특정 프로그램을 개발.

단어 뜻 그대로 뼈대.

개발자가 이 어느 정도의 뼈대를 제공받아 그 안에서 일관성, 생산성, 통합성을 늘릴 수 있다.

프레임 워크를 특정 프로그램을 만들기 위해서 상호 협력하는 클래스와 인터페이스의 집합으로 정의하고 있다.

Library (라이브러리)


라이브러리는 특정 기능에 대한 함수 나 도구들을 모아 놓은 집합. 

개발자들이 단순 활용 가능한 도구들의 집합.

프레임워크와 라이브러리의 차이


흐름에 대한 제어

라이브러리는 개발자가 흐름에 대한 제어를 하며 필요한 상황에 가져다가 사용한다.

프레임 워크는 자체적으로 전체적인 흐름(Flow)을 가지고 있어서 프레임워크는 개발자가 그 안에 필요한 코드를 작성해 집어넣는다.

이를 프레임워크는 제어의 역전 (Inversion Of Control)이 적용되어있다고 말한다.
제어의 역전(IOC)

제어의 역전(Inversion Of Control)이란 애플리케이션 실행 흐름을 프레임워크 자체가 가지고 있어서 개발자의 코드가 프레임워크에 의해 사용되는 것.
어떠한 일을 하도록 만들어진 프레임워크에 제어의 권한을 넘김으로써 클라이언트 코드가 신경 써야 할 것을 줄일 수 있다.

API ( Applicaition Programming Interface )


응용프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
   
인터페이스, 말 그대로 두 얼굴 사이.

어떤 기능을 제공하는 운영체제, 프로그램들과 소통하는 방법, 규칙을 뜻한다.

정리


도구(=라이브러리) 통해서 사람(=개발자)이 기차(=프레임워크)를 만든다.

사람이 기차(=프레임워크) 안에서 운전(=코드를 작성)한다.

기차 안(=프레임워크)에서 운전(=코드를 작성)을 하는것이라서 바다를 떠다니진 않을 것이다.
(제어의 역전으로 개발자의 코드가 프레임워크(틀)에 의해서 사용되는 것이므로)

기차를 만들 때 나에게 없는 커다란 합판이 필요하면 제철소(=API)에 가서 요구
(어떤 기능을 사용하고 싶으면 이 곳으로 연결하자 라는 공통된 약속을 만들어 놓은 것이 API)