API vs Library vs Framework

한량·2023년 5월 4일
0
post-thumbnail

API

  • Application programming interface
  • 응용 프로그램에서 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
    • Application: 운영 체제를 제외한 나머지 소프트웨어
    • Interface: 하나의 시스템을 구성하는 2개의 구성 요소가 상호 작용하기 위해선 경계가 필요. 이 경계에서 각 구성요소가 상호 접속하기 위한 하드웨어, 소프트웨어, 조건, 규약 등을 포괄적으로 가리키는 말

API의 특징

  • 구현과 독립적으로 사양만 정의됨
  • API에 따라 접근 권한이 필요할 수 있음
  • Java API 등 여러 기업들의 오픈 API가 존재

API의 종류

  • 접근 방식에 따라 3가지로 분류
  • Private API : API를 기업이나 연구 단체 등에서 사용하는 다양한 애플리케이션과 시스템의 통합을 위해 사용하는 것으로 단체 내부에서만 사용할 수 있도록 하는 것
  • Partner API : API를 특정 비즈니스 파트너와 공유하는 것으로, 공유받은 API를 품질 저하 없이 사용할 수 있으며 수익 창출을 목표로 사용하는 것
  • Public API : 모든 사람들에게 API를 제공하는 것으로, 개인이 API와 상호작용하는 프로그램을 무료로 개발할 수 있음.

Library

  • 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임(기능 모음)

Library의 특징

  • 독립성을 가짐
  • 응용 프로그램이 능동적으로 라이브러리를 사용
  • Apache Commons, Guava, jQuery 등

Framework

  • 추상 클래스나 인터페이스를 정의하고 인스턴스 사이의 상호작용을 통해 시스템 전체 혹은 일부를 구현해 놓은 재사용 가능한 설계
  • 응용 프로그램이나 소프트웨어의 솔루션 개발을 수월하게 하기 위해 제공된 소프트웨어 환경

Framework의 특징

  • 상호협력하는 클래스와 인터페이스의 집합
  • 응용 프로그램이 수동적으로 프레임워크에 의해 사용됨

Library vs Framework

등장 배경

  • 설계 재사용을 강조하는 디자인 패턴으로는 코드를 재사용할 수 없음
    • 디자인 패턴: 반복적으로 발생하는 문제를 어떻게 해결할지에 대한 솔루션

  • 코드 재사용의 끝판왕인 컴포넌트 조합 방식은 실패(각 어플리케이션마다 도메인이 달라지기 때문에 최적화가 불가능)

Library, Framework의 차이

  • 라이브러리: 특정 기능들에 대한 코드 재사용
  • 프레임워크: 설계 재사용, 코드 재사용을 적절한 수준으로 조합. 코드를 재사용함으로써 설계 아이디어를 재사용

제어의 역전

  • 라이브러리: 프로그래머가 작성하는 클라이언트 코드가 라이브러리의 메소드를 호출해서 사용하는 것을 의미
  • 프레임워크: 프레임워크가 객체의 생성, 관계 설정, 사용, 생명주기 등을 제어

Reference

profile
놀고 먹으면서 개발하기

0개의 댓글