라이브러리 대 프레임 워크 대 API? [닫은]


33

라이브러리, 프레임 워크 및 API의 차이점은 무엇입니까? 그들은 모두 나에게 똑같아 보입니다. 나는 사람들이 이것을 생각하고 싶다.





2
@ 조그 : 당신은 답변으로 이것을 제출해야합니다. 그것은 경계선 스팸이며 페이지를 막습니다.

2
@Sergio-Jörg W Mittag는 SO에 대해 1171 개의 사려 깊고 잘받는 답변을 받았습니다 (42 개의 사려 깊고 잘받는 답변은 여기). 그는 어려워하지 않습니다. 그는이 질문이 얼마나 불필요한지를 보여줌으로써 P.SE를 향상 시키려고 노력하고있다 (여기서 답이 프레임 워크의 특징을 언급하지 않았다는 것은 말할 것도 없다).
Corbin March

답변:


35

라이브러리는 특정 목적을 수행하는 함수 / 객체 모음입니다. 다양한 프로젝트에서 라이브러리를 사용할 수 있습니다.

프레임 워크는 응용 프로그램 작성에 도움이되는 패턴 및 라이브러리의 모음입니다.

API는 다른 프로그램이 직접 액세스하지 않고도 프로그램과 상호 작용할 수있는 인터페이스입니다.

다시 말해서 라이브러리를 응용 프로그램의 애드온 / 조각으로, 프레임 워크를 응용 프로그램의 골격으로, API를 응용 프로그램의 외부를 향한 부분으로 생각하십시오.


7
이것은 프레임 워크의 정의가 아닙니다. 나는 실제로 어떤 프레임 워크를 "패턴과 라이브러리의 집합"이라고 부르지 않을 것이다.
TheLQ

프레임 워크는 구축 환경과 비슷합니다. 그 외에 +1
Klaim

그래, 나는 그 단어에 대해 약간의 손실을 입었다. 누구든지 더 나은 제안이 있습니까? 다른 현명한 편집 자유롭게. 프레임 워크를 호출하는 wikipedia를 살펴 보았습니다. "프레임 워크는 잘 정의 된 API (Application Programming Interface)에 래핑 된 코드의 재사용 가능한 추상화이므로 소프트웨어 라이브러리의 특별한 경우입니다." 도움보다는이 질문의 맥락.
GSto

3
라이브러리는 코드를 담당 할 때 (코드는 "라이브러리를 사용"함) 프레임 워크는 담당 할 때입니다 (프레임 워크는 "코드를 실행합니다"). 예를 들어, 프레임 워크는 어떤 순서로 수행해야하는지 (스윙, 서블릿) 반면, 라이브러리는 언제 어떻게 사용되는지 (이미지 변환, 암호화) 결정합니다. API는 호출 할 수있는 많은 함수의 정의 일 뿐이며 라이브러리와 프레임 워크의 일부입니다.
Martin Wickman

14

지금까지는 좋은 대답을했지만 한 가지 핵심 사항이 누락되었습니다 . 프레임 워크는 IoC를 사용합니다 . 코드는 프레임 워크로 둘러싸여 있습니다. 그 안에 살고 있습니다. 대조적으로 코드 는 라이브러리 또는 API 만 사용 합니다. 그것은 바깥에 산다. IoC가 그 차이입니다.


반드시 사실 일 필요는 없습니다. 프레임 워크는 IoC를 사용할 수 있으며 응용 프로그램은 프레임 워크 안에있을 수 있지만 반드시 그럴 필요는 없습니다. 어리석게도 Frameworks의 Wikipedia 항목은 이것을 프레임 워크의 '구별 특징'으로 나열하고이 논문 " dirkriehle.com/computer-science/research/dissertation/… "을 참조 하지만 논문 자체에는 'inversion'이라는 문구가 포함되어 있지 않습니다. '또는'ioc '이며 실제로는 "일반적으로 응용 프로그램은 하나의 프레임 워크뿐만 아니라 여러 프레임 워크를 사용합니다"라고 말합니다. (p26, ref p9)
Kirk Broadhurst

11
@Kirk Broadhurst-는 실제로 Martin Fowler에 대해 생각하고있었습니다 . "제어의 반전은 프레임 워크를 라이브러리와 다른 점에서 중요한 부분입니다. (...) 서브 클래 싱 또는 자신의 클래스를 연결하여 프레임 워크의 다양한 위치에 동작을 삽입해야합니다. 프레임 워크의 코드는 코드를 호출합니다 ... "IoC가 차별화 된 기능이 아니라고 판단되면 특징을 구별-그들은 모두 동일하고 재미 없다.
Scant Roger

@ScantRoger, Java Collections Framework가 IoC를 사용합니까? ..
Pacerier

3

라이브러리는 일반적인 작업을 수행하기 위해 작성된 코드 모음입니다. 라이브러리 코드는 비교적 안정적이며 버그가없는 경향이 있습니다. 적절한 라이브러리를 사용하면 작성해야하는 코드의 양을 줄일 수 있습니다. 응용 프로그램의 코드 줄 수를 줄이면 기능 제공 속도가 높아집니다. 대부분의 경우 자신의 코드를 작성하는 것보다 라이브러리 루틴을 사용하는 것이 좋습니다.

API (Application Programming Interface)는 응용 프로그램이 사용 가능한 기능에 액세스 할 수 있도록하는 일부 기능에 대한 인터페이스입니다. API는 인터페이스라고 할 수 있습니다. API는 시스템, 라이브러리, 프레임 워크, 프로그램 및 응용 프로그램을 포함한 여러 수준으로 존재합니다. API를 구현하는 코드가 구현되기 전에 API를 정의해야합니다.

API의 일부는 여러 가지 이유로 더 이상 사용되지 않을 수 있지만 API는 안정적이어야합니다. API를 더 광범위하게 사용할수록 변경하기가 더 어렵습니다. 많은 메소드가 더 이상 사용되지 않지만 대부분의 Java 1.0 API를 계속 사용할 수는 없습니다.

프레임 워크는 응용 프로그램을보다 간단하게 구축하도록 설계된 API 모음입니다. 프레임 워크는 재사용 가능한 컴포넌트에 대한 구현을 제공합니다. 좋은 프레임 워크는 애플리케이션에 특화된 경향이 있습니다.

Java Collections Framework는 콜렉션을 처리하는 데 사용할 수있는 다양한 유형의 오브젝트에 대한 API 콜렉션입니다. 다양한 컬렉션에 API 계층을 제공합니다. Java Collections Framework에서 SortedSet 인터페이스는 Set 인터페이스를 확장하여 Collection 인터페이스를 확장합니다. 이 API는 추상 인터페이스이며 실제 구현은 이름이 다릅니다. Collections Framework는 컬렉션 구현을 단순화하고 개발 중에 구현 변경을 단순화합니다.

J2EE 개발을 목표로하는 Java Spring Framework에서 볼 수 있듯이 프레임 워크는 더 작은 프레임 워크로 빌드 될 수 있습니다. Spring은 12 개 이상의 프레임 워크로 구성되며, 그 중 많은 프레임 워크는 자체적으로 사용되거나 다른 프레임 워크로 대체 될 수 있습니다.

적절한 라이브러리, API 및 프레임 워크를 사용하면 개발을 단순화 할 수 있습니다. 이러한 구성 요소는 일반적인 문제를 처리하고 개발 팀이 응용 프로그램 관련 문제에 집중할 수 있도록합니다.


2

프레임 워크는 라이브러리에서 한 단계 향상됩니다. 툴박스가 라이브러리라면 작업장이 프레임 워크가됩니다.

위키 백과는 말합니다

API는 소프트웨어 시스템의 구성 요소가 사용하는 일련의 기능과 상호 작용하기위한 인터페이스를 설명하는 추상화입니다.

API와 사용자 인터페이스의 중요한 차이점은 API를 통해 다른 소프트웨어 / 서비스가 솔루션과 프로그래밍 방식으로 상호 작용할 수 있다는 것입니다.

API는 애플리케이션 (dll 또는 플러그인을 통해) 또는 웹 사이트 및 서비스 (REST 및 웹 서비스를 통해) 모두에 대해 빌드 될 수 있습니다.


좋은 비유 ...
sunwukung

1

API는 소스에서 사용할 수있는 객체 및 메소드와 관련하여 다른 것을 사용하는 방법을 정의합니다. 예를 들어 Twitter 또는 Facebook을 사이트에 통합하면 Twitter 또는 Facebook의 API를 사용하여 올바른 데이터가 업데이트됩니다.

프레임 워크는 때때로 자체 언어를 거의 형성 할 수 있기 때문에 약간 더 커지는 경향이 있습니다. jQuery는 자체 구문을 가지며 내 코드에 대한 의미에서 약간 더 많은 가중치를 부여하는 프레임 워크의 예입니다. 프레임 워크는 또한 API와 유사한 의미로 플랫폼을 구성 할 수 있습니다. 예를 들어 Win32API 또는 .Net Framework에는 각각 응용 프로그램을 빌드하는 수많은 방법이 있으므로 API가 포함 된 프레임 워크와 프레임 워크로 간주되는 API가있을 수 있습니다.

라이브러리는 API 또는 프레임 워크를 구현하는 이진 파일 인 경향이 있으므로 일부 경우 API 또는 프레임 워크를 사용해야하는 비트입니다. 적어도 이것이 제가이 용어들과 그 차이점을 보는 방식입니다.


1

도서관으로 가서 책을 읽기 시작하십시오. 당신이 응용 프로그램이라면 도서 모음은 도서관입니다. 선반, 찬장 및이 모든 것을 수용하는 화합물이 프레임 워크를 구성합니다. 책을 읽는 작업을 수행하는 동안 연락하는 모든 것은 API입니다.


이것은 훌륭한 답변입니다.
Magus

0

라이브러리는 일반적인 작업을 단순화하는 데 사용되는 코드 모음입니다. 클래스, 함수 또는 언어 또는 플랫폼에 특정한 것이 될 수 있습니다. 일반적인 작업 (문자열 작성, 분할, 검색 또는 정렬 등)에 대한 도우미를 제공하는 문자열 조작 라이브러리가 좋은 예입니다.

API (application programming interface)는 다른 응용 프로그램, 시스템 또는 기술과 함께 작동하는 방법에 대한 정의 ( '인터페이스')입니다. 본질적으로 다른 시스템과 상호 작용할 수있는 작업을 정의합니다. API 라이브러리 일 있습니다 (API가 라이브러리 또는 클래스 세트로 랩핑됨을 의미 함). 그러나 API는 데이터베이스, 웹 서비스, 다른 애플리케이션 또는 운영 체제에 관계없이 항상 외부 시스템을 참조한다는 점이 다릅니다 그 자체.

프레임 워크는 더 큰 개념입니다. 일반적으로 일반적인 작업을 수행하기위한 많은 라이브러리와 API가 포함됩니다. 개념 수준이 높을뿐 아니라 도구 모음뿐만 아니라 디자인 패턴, 모범 사례 및 방법론 모음이기도합니다. 소프트웨어 프레임 워크는 일반적인 프레임 워크 의 확장입니다. 의미는 사물을 구축하는 기반이되고 지원 및 구조를 제공하며 요구 사항에 대한 지침과 정의를 제공합니다.


0

응용 프로그램은 프레임 워크를 기반으로하는 라이브러리를 사용하여 개발되며 API를 통해 통신합니다.

앱을 구축 할 때 온라인 이미지 처리 애플리케이션이라고하면

  • 사전 작성된 이미지 처리 라이브러리를 사용할 수 있습니다.
  • 응용 프로그램을 구성하는 데 도움이되는 모든 프레임 워크에서.
  • 당신은 외부 세계와 상호 작용할 수있는 방법을 응용 프로그램에 제공 할 것입니다. 그것은 다른 세계에 응용 프로그램 API가 될 것입니다.

응용 프로그램에 전화가 올 때

  • 프레임 워크의 지침으로 디자인 한 방식으로 처리됩니다.
  • 라이브러리가 수행 한 호출 처리
  • 이 함수는 외부 세계에서 API를 통해 액세스됩니다

발신자에게

이것이 존재하는 이유 :

  • 라이브러리 : 바퀴를 재발견하는 것을 막아줍니다
  • 프레임 워크 : 프레임 워크 자체에 결함이없는 경우 시스템 디자인 및 처리의 예기치 않은 함정을 방지합니다.
  • API : 실제 액세스에서 코어를 인터페이스하여 애플리케이션의 보안을 보장합니다
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.