API와 SDK의 차이점은 무엇입니까?


174

내가 정말 뭔가라는 차이 말할 수 없다는 것을 깨달았을 때 나는, 다양한 API 및 SDK를 통해보고 된 API 라고 뭔가 SDK를 .

둘 다 개념적으로는 다른 소프트웨어가 웹 서비스, 최종 사용자 앱, OS 서비스 또는 데몬 또는 커널인지 여부에 관계없이 프로그램이 다른 소프트웨어에서 제공하는 리소스와 인터페이스하고 제어하는 ​​방법입니다. 장치 드라이버.

그렇다면 SDK와 API의 의미 상 차이점은 무엇입니까?


3
SDK는 개발 키트로, 일반적으로 API 사용을 용이하게하는 클라이언트 측 라이브러리입니다. API는 라이브러리 / 서비스 정의 및 / 또는 문서 일뿐입니다.
dietbuddha

답변:


175

나는 그것이 "모든 SDK는 / API를 포함하지만 모든 API는 SDK는 아닙니다"라는 라인에 해당한다고 생각합니다.

SDK는 애플리케이션 작성에 필요한 모든 조치를 수행 할 수있는 완전한 API 세트 인 것 같습니다. 또한 SDK에는 플랫폼 / 항목 용으로 개발하기위한 다른 도구가 포함될 수 있습니다.

반면에 API는 특정 목적에 적합 할 수있는 일련의 관련 메소드 일뿐입니다.

예를 들어, JDK (Java Development Kit)에는 API, 컴파일러, 런타임 및 기타 기타 도구가 포함되어 있습니다. Java API는 기본적으로 사용할 수있는 핵심 언어를 구성하는 모든 라이브러리입니다.


7
SDK는 해당 API와 상호 작용하는 방법의 샘플 일 뿐이라고 덧붙이고 싶습니다.
머핀 맨

10
닉을 뒤집어 놓은 것 같아요 SDK는 라이브러리와 상호 작용하기위한 API를 포함하는 것 (라이브러리 자체가 아니라 라이브러리를 사용하는 코더가 사용하는 라이브러리의 인터페이스)을 포함하는 상위 세트입니다.
Danny Staple

7
SDK에는 API, 도구, 설명서, 샘플 및 기타 필요한 모든 것이 포함될 수 있습니다.
gregmac

4
@gregmac 나는 그 사실을 전달하지 않았습니까?

실제로 API에는 클래스가 구현해야하는 인터페이스 정의 만 포함하고 SDK에는 이미 프로그래밍 된 대부분의 표준 기능이 포함 된 기본 클래스가 포함되어 있다고 말할 수 있습니까?
Ben

85
  • API = 응용 프로그래밍 인터페이스
  • SDK = 소프트웨어 개발 키트

따라서 실제 차이점은 API는 "일부 서비스"에 대한 인터페이스 일뿐 아니라 SDK는 특정 목적을위한 도구 / 컴포넌트 / 클래스 세트라는 것입니다. 실제로 SDK는 인터페이스 할 API를 제공합니다. 그러나 API가 웹 서비스를 통해 제공되는 경우와 같이 기본 구성 요소없이 API를 사용할 수 있습니다.

API의 예 :

SDK의 예 :


3
"기본 구성 요소없이 API를 사용할 수 있습니다"+10 Btw, 두 번째 링크가 다운되었습니다 .......
Pacerier

24

API → 문서화 된 인터페이스 (특정 시점 및 특정 대상) 문서가 불완전하거나 사용 불가능할 수 있으며 이는 의도적 인 것일 수 있지만 문서화 된 사실을 어둡게하지는 않습니다. 타사에서 사용할 수 있습니다.)

SDK → 인터페이스 설명서 (+ 예제 및 도구)


4
마지막으로 문서를 언급 한 사람!
gregmac

4
모든 API가 문서화되어있는 것은 아닙니다. 때로는 인터페이스를 검사 / 반영하기 만하면됩니다.
JBR 윌킨슨

"예"가 API의 일부가 아닙니까?
Pacerier

1
@Pacerier ... 절대적으로 아닙니다. 예제는 API 문서의 일부일 수 있지만 깎아 지른 인터페이스는 "언급되지 않은" 문서 일 수 있습니다 (즉, 관련 문서는 외부 세계에 비밀로 유지됩니다 : think ... idk, microsoft ). 인터페이스 일뿐입니다. 함수, 클래스, 호출, 프로토콜, 파일 형식 등은 아닙니다.
ZJR

17

"SDK"는 "API"보다 더 큰 의미로 종합적입니다.

일반적으로 전체 플랫폼을 지원하는 SDK는 하나뿐입니다. 예를 들어 하나의 MacOS X SDK와 하나의 iOS SDK가 있으며 각각 하나의 기능 영역에 대한 API를 포함합니다.

"API"는 원래 총체적인 용어로도 사용되었지만 여전히 그 방식 (MAPI, WSAPI 등)으로 자주 사용되지만 일반적으로 특정 기술로 제한됩니다. "API"에 의해 암시 된 범위는 수년에 걸쳐 줄어든 것으로 보인다. 사람들은 "Mac Toolbox API"또는 "Windows API"에 대해 이야기했습니다. 둘 다 분명히 많은 기능을 포함하고 있었습니다. 요즘, 단일 시스템 기능을 의미하는 "API"를 듣는 것은 드문 일이 아닙니다. 새로운 버전의 운영 체제에는 수백 개의 새로운 API가 포함되어 있으며 수백 개의 새로운 시스템 호출이 의미합니다.

문맥이 없으면 용어가 모두 정확하지 않습니다.


11

API 란 무엇입니까?

API는 소프트웨어 프로그램이 서로 상호 작용할 수있는 인터페이스입니다. 서로 통신하기 위해 프로그램이 따라야하는 일련의 규칙을 정의합니다. API는 일반적으로 두 응용 프로그램이 통신하기 위해 루틴, 데이터 구조 등을 정의하는 방법을 지정합니다. API는 제공하는 기능이 다릅니다. Java API와 같은 프로그래밍 언어의 라이브러리 기능을 제공하는 일반 API가 있습니다. Google Maps API와 같은 특정 기능을 제공하는 API도 있습니다. 언어 별 API도 있으며 특정 프로그래밍 언어에서만 사용할 수 있습니다. 또한 여러 프로그래밍 언어와 함께 사용할 수있는 언어 독립적 인 API가 있습니다. API는 필요한 기능이나 데이터 만 외부에 노출시키면서 응용 프로그램의 다른 부분에는 액세스 할 수 없도록하여 매우 신중하게 구현해야합니다. 인터넷에서 API 사용이 대중화되었습니다. 일부 기능 및 데이터를 API를 통해 웹 외부로 허용하는 것이 매우 일반적이되었습니다. 이 기능은 사용자에게 향상된 기능을 제공하기 위해 결합 될 수 있습니다.

SDK 란 무엇입니까?

SDK는 특정 플랫폼을 대상으로하는 소프트웨어 응용 프로그램을 개발하는 데 사용할 수있는 도구 모음입니다. SDK에는 프로그래머가 응용 프로그램을 개발하는 데 도움이되는 도구, 라이브러리, 설명서 및 샘플 코드가 포함되어 있습니다. 대부분의 SDK는 인터넷에서 다운로드 할 수 있으며 프로그래머가 SDK의 프로그래밍 언어를 사용하도록 장려하기 위해 많은 SDK가 무료로 제공됩니다. 널리 사용되는 일부 SDK는 모든 라이브러리, 디버깅 유틸리티 등을 포함하는 Java SDK (JDK)로, Java에서 프로그램 작성을 훨씬 쉽게 해줍니다. SDK는 서로 호환되는 구성 요소 / 도구를 찾을 필요가없고 모든 패키지가 설치하기 쉬운 단일 패키지에 통합되어 있기 때문에 소프트웨어 개발자의 삶을 쉽게 만듭니다.

API와 SDK의 차이점은 무엇입니까?

API는 소프트웨어 프로그램이 서로 상호 작용할 수있는 인터페이스 인 반면 SDK는 특정 플랫폼을 대상으로하는 소프트웨어 응용 프로그램을 개발하는 데 사용할 수있는 도구 모음입니다. 가장 간단한 버전의 SDK는 특정 프로그래밍 언어와 상호 작용하는 데 필요한 일부 파일이 포함 된 API 일 수 있습니다. 따라서 API는 모든 디버깅 지원 등이없는 간단한 SDK로 볼 수 있습니다.


7

SDK는 API (다른 앱과의 인터페이스를 돕는 파일) 일 수 있지만 일반적으로 IDE의 디버깅 및 기타 부분을 돕는 다른 코드를 포함합니다.

나는 머리 글자에서 모두 벗어났습니다.


8
빨리, 더 많은 TLA를 얻으십시오!
메이슨 휠러

4
EIEIO에 대한 준비가되었습니다.
JeffO

5

앞에서 언급 한 모든 것이 사실이지만 SDK에 대해 소프트웨어 개발 키트는 개발 프로세스에 필요한 모든 도구가 포함 된 (또는 거의) 완전한 패키지이며 API는 인터페이스 일뿐입니다. 상호 작용합니다.


1

내 두 센트 : 나는 API라는 용어가 종종 잘못 사용된다고 생각합니다.

API는 응용 프로그래밍 인터페이스입니다.

어색한 이름이지만 인터페이스 라는 의미 입니다. 따라서 애플리케이션 에는 다른 애플리케이션과 통신 할 수있는 API 가있을 수 있습니다 . 또한 소프트웨어 (예 : OO 시스템의 클래스)는 시스템의 다른 모듈이 통신 할 수 있도록 API를 제공 할 수 있습니다.

그러나 종종 API라는 용어는 "라이브러리"의 동의어로 사용됩니다. 나는 그것이 그 단어를 올바르게 사용한다고 생각하지 않습니다. 일부 라이브러리는 코드를 사용할 수 있도록하는 API이지만, 라이브러리가 아닌 API를.

그리고 SDK는 일종의 라이브러리이므로 혼동 될 수 있습니다.


1
동의한다. 나는 그것이 "정확하지 않다"고 말하지 않을 것입니다. 이 배는 항해했고 "API"사용이 바뀌 었습니다. 그러나 "라이브러리"가 사람들이 "API"라고 부르는 것에 대해 더 나은 단어라는 데 동의합니다.
Harry Wood

0

다른 답변들도 SDK가 툴링 을하고 있다고 설명 하지만, 어느 것도 직접 나오지 않고 API가 사양 이라고 말합니다 .

compoonent X 용 API는 X와 상호 작용할 다른 구성 요소를 작성하는 데 필요한 모든 정보입니다. 구성 요소 X 용 SDK에는 해당 구성 요소를보다 쉽게 ​​작성할 수있는 라이브러리 루틴 이 포함될 수 있지만 라이브러리는 그렇지 않습니다. API : 그것들은 단지 API의 실시 예일뿐입니다 .


이것은 단지 당신의 의견입니까, 아니면 어떻게 든 백업 할 수 있습니까?
gnat

"API는 라이브러리가이 규칙 세트를 실제로 구현하는 동안 예상되는 동작을 설명하고 규정합니다" en.wikipedia.org/wiki/…
Solomon Slow

내 독서 당 이것은 당신이하려고하는 포인트와 관련이 없습니다 : "API는 사양입니다"
gnat

-3

이 방법을 비교하고 싶습니다.

Microsoft 도구를 사용하는 개발자 인 경우 :

API = Microsoft.Net Framework Vs SDK = Visual Studio

Java를 사용하는 개발자 인 경우 :

API = Java RunTime Vs SDK = 개발 키트 (JDK)를 제공하는 모든 도구

SDK는 반드시 해당 API에 의존해야한다고 생각합니다 .API가없는 SDK는 없습니다.


Visual Studio와 관련하여 이야기하는 것은 하나 이상의 SDK 및 / 또는 API에 대한 액세스를 제공 할 수있는 IDE라고 생각합니다.
KeithS

1
Visual Studio는 SDK는 아니지만 VS를 사용하여 개발할 가능성이있는 일부 에디션에는 Windows 또는 .NET SDK가 포함되어 있습니다.
JBR 윌킨슨

-3

여기에 간단한 유추가 있습니다 ... API는 사용할 수있는 단어와 같으며 SDK는 여러분을 위해 조합 된 문장과 같습니다.


-4

다른 응용 프로그램과 인터페이스하여 응용 프로그램을 개발하고 향상시킬 때 다른 응용 프로그램 (논리)이 핵심 논리와 인터페이스 할 수 있어야합니다. 이는 정의 된 API 세트를 통해 수행됩니다. SDK는 API를 사용하여 다른 응용 프로그램과 상호 작용하는 코드를 만들거나 만드는 데 사용됩니다.


1
이것은 이전의 11 가지 답변에서 언급되고 설명 된 포인트를 넘어서는 실질적인 내용을 제공하지 않는 것 같습니다
gnat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.