当我意识到我无法真正分辨出API和SDK之间的区别时,我正在研究各种API和SDK。您的程序可以与另一软件交互,并控制另一软件提供的资源,而无论该其他软件是Web服务,最终用户应用程序,OS服务或守护程序还是内核设备驱动程序。 >那么,SDK和API在语义上有什么区别?

评论

SDK是一个开发工具包,通常是一个客户端库,可简化API的使用。 API只是库/服务定义和/或文档。

另请参见”是库还是框架还是API?

#1 楼

我认为它符合“所有SDK都是API,但并非所有API都是SDK”的思路。

SDK似乎是一套完整的API,可让您执行创建应用程序所需的大多数操作。另外,SDK可能包括用于开发其平台/项目的其他工具。

另一方面,API只是一系列相关的方法,可能对于特定目的有用。

作为示例,JDK(Java开发工具包)包含API以及编译器,运行时和其他各种工具。 Java API只是构成您可以立即使用的核心语言的所有库。

评论


我想补充一点,SDK只是您与上述API交互方式的一个示例。

–松饼人
2011年8月17日在20:55

我想你可能已经把尼克弄倒了。 SDK是事物的超集,它包含(除其他事项外)与它的库进行交互的API(不是库本身,而是使用库的编码人员将使用的库接口)。

–丹尼·史泰博(Danny Staple)
11年8月17日在22:26

SDK可以包括API,工具,文档,示例以及所有其他需要的东西。

– gregmac
11年8月18日在2:02

@gregmac我没有传达这个事实吗?

–user7007
11年8月18日在2:12

实际上,可以说一个API最有可能仅包含类应实现的接口定义,而一个SDK可能包含具有大多数标准功能的基类吗?

–本
15年3月14日在10:50

#2 楼


API =应用程序编程接口
SDK =软件开发工具包

所以真正的区别是:API既不多于或不小于“某些服务”的接口, SDK是针对特定目的的一组工具,组件和/或类。实际上,SDK为您提供了与之交互的API。但是您可能会在没有底层组件的情况下使用API​​,例如,当通过Web服务提供API时。

API的示例:


Java API
Google Maps API
Flash Player API

SDK:


JDK
GWT
Flex SDK


评论


+10表示“您可能在没有基础组件的情况下使用API​​”。顺便说一句,第二个链接关闭了。

–起搏器
2014年8月27日4:10



#3 楼

API→已记录的接口(在某个时间点和特定的受众。文档可能不完整和/或不为大众使用,并且可能是有意为之,但这并没有使要记录的事实模糊不清供第三方使用。)

SDK→接口文档(+示例和工具)

评论


最后有人提到文档!

– gregmac
11年8月18日在2:02

并非所有API都有文档记录-有时您只需要检查/反映接口即可。

– JBR威尔金森
2014年8月3日18:12



“示例”不是API的一部分吗?

–起搏器
2014年8月27日下午4:15

@Pacerier ...绝对不是。示例可能是API文档的一部分,但是纯粹的接口可能是“未文档化的”(即,有关该文档的文档对外界保密:think ... idk,microsoft),同时仍然是API。这只是界面。函数,类,调用,也许是协议,也许是文件格式,但仅此而已。

– ZJR
2014年8月28日在12:40



#4 楼

“ SDK”在广义上比“ API”更具有集体意义。

您通常只能找到一个SDK来覆盖整个平台。例如,有一个MacOS X SDK和一个iOS SDK,并且每个都包含针对许多不同功能区域的API。

“ API”最初也被用作一个统称,现在仍然经常以这种方式使用(MAPI,WSAPI等),但通常仅限于某些特定技术。这些年来,“ API”所隐含的范围似乎有所缩小。人们过去常常谈论“ Mac Toolbox API”或“ Windows API”,两者显然都包含许多功能。如今,听到“ API”用来表示单个系统功能已经很普遍了。可以说一个新版本的操作系统包含数百个新的API,这意味着数百个新的系统调用。

评论


哈哈-这正是我的立场。这是一个广义的术语,它确实需要完整的上下文,因为我们可以通过任何必要的机制或媒介来实现软件来执行我们希望它执行的几乎所有工作-一切都有一个api,并且是一个api(即使sdk都有命令行界面它本身---底层的api和/ argument级别的语法---每个层都委托一些已编译的二进制文件或仍然是二进制文件的脚本---例如大多数项目中的/ bin文件夹) 。

– A-Dubb
20-10-04在20:08

#5 楼


http://www.differencebetween.com/difference-between-api-and-vs-sdk/

什么是API?

API是一个接口允许软件程序相互交互。它定义了一组规则,程序必须遵循这些规则才能相互通信。 API通常指定应如何定义例程,数据结构等,以便两个应用程序进行通信。 API提供的功能有所不同。有一些通用API提供了诸如Java API之类的编程语言的库功能。也有提供特定功能的API,例如Google Maps API。还有依赖于语言的API,这些API只能由特定的编程语言使用。此外,还有独立于语言的API,可以与多种编程语言一起使用。通过仅将所需的功能或数据暴露给外部,同时保持应用程序的其他部分不可访问,需要非常仔细地实现API。在Internet上,API的使用已变得非常流行。允许通过API将某些功能和数据传递到Web外部已经变得非常普遍。可以组合使用此功能以为用户提供改进的功能。

什么是SDK?

SDK是一组工具,可用于开发针对特定平台的软件应用程序。 SDK包含工具,库,文档和示例代码,可帮助程序员开发应用程序。大多数SDK可以从互联网上下载,并且许多SDK是免费提供的,以鼓励程序员使用SDK的编程语言。一些广泛使用的SDK是Java SDK(JDK),其中包括所有库,调试实用程序等,这将使用Java编写程序更加容易。 SDK使软件开发人员的工作变得容易,因为无需寻找彼此兼容的组件/工具,并且所有组件/工具都集成在易于安装的单个软件包中。

API和SDK有什么区别?

API是一个接口,允许软件程序相互交互,而SDK是一组可用于开发针对性的软件应用程序的工具一个特定的平台。 SDK的最简单版本可以是API,其中包含一些与特定编程语言进行交互所需的文件。因此,可以将API视为没有所有调试支持等的简单SDK。

评论


我和@Caleb一样,也分享您的观点-这是一个庞大的元术语,就像我们在任何给定的工程公司中无限量的开发人员角色一样。

– A-Dubb
20-10-4在20:10

#6 楼

SDK只能是API(用于帮助与另一个应用程序交互的文件),但通常包括用于帮助调试的其他代码以及用于IDE的其他部分。

我全都没有缩写词。

评论


很快,给自己更多的TLA!

–梅森·惠勒
11年8月17日在22:19

我即将准备EIEIO。

– JeffO
2011年8月18日在1:10

#7 楼

前面提到的一切都是对的,但是关于SDK,我想补充一点,一个软件开发工具包是(或者应该是)一个非常完整的程序包,其中包含(几乎)开发过程所需的所有工具,而API只是一个接口与之互动。

#8 楼

我的两分钱:我相信API一词经常被错误地使用。

API是一个应用程序编程接口。 。因此,一个应用程序可能具有允许其他应用程序与其通信的API。而且一件软件(例如OO系统中的类)可能会提供API,以允许系统中的其他模块与其进行通信。图书馆”。我认为这不是正确的用法。该库的一部分是允许代码使用它的API,但该库不是API。

SDK是一种库,因此可能会造成混乱。
/>

评论


我同意。我可能会说这是“不正确的”。这艘船已经航行,对“ API”的使用发生了变化。但我确实同意,“库”通常是人们称为“ API”的更好的词

–哈里·伍德(Harry Wood)
16年6月1日,0:59



#9 楼

其他许多答案都说明SDK是一种工具,但它们都不是直接出来的,而是说API是一种规范。编写与X交互的其他组件。组件X的SDK可能包含一些库例程,这些例程使您可以更轻松地编写该组件,但是这些库不是API:它们仅仅是API的一种体现。 />

评论


这仅仅是您的意见,还是可以通过某种方式予以支持?

– gna
16年8月29日在17:24

“当库是这套规则的实际实现时,API描述并规定了预期的行为”,en.wikipedia.org / wiki /…

–所罗门慢
16年8月29日在17:45

根据我的阅读,这与您要提出的观点无关:“ API是一种规范”

– gna
16年8月29日在17:47



#10 楼

我想用这种方式进行比较。

如果您是使用Microsoft工具的开发人员:


API = Microsoft.Net Framework vs SDK = Visual Studio


如果您是使用Java的开发人员:


API = Java RunTime Vs SDK =可以提供开发套件(JDK)的任何工具


我想一个SDK一定必须依赖于相应的API-没有API的SDK就没有。

评论


我认为您所说的关于Visual Studio的是一个IDE,可以提供对一个或多个SDK和/或API的访问。

– KeithS
11年8月18日在16:58

Visual Studio不是SDK,但是某些版本包含Windows或.NET SDK,因为您可能是使用VS为它们开发的。

– JBR威尔金森
2014年8月3日在18:18

#11 楼

这是一个简单的类比... API就像您可以使用的单词,而SDK就像是为您组合在一起的句子。

#12 楼

随着应用程序与其他应用程序的接口开发和增强,需要
允许其他应用程序(逻辑)与核心逻辑进行接口-这是通过一组定义的API来完成的。用于创建/制作使用API​​与其他应用程序进行交互的代码。

评论


这似乎没有提供任何实质性的超过11点答案的观点

– gna
2014年8月2日14:06