【发布时间】:2009-06-11 21:23:56
【问题描述】:
与 SDK 的定义相比,公认的 API 定义是什么?两者似乎可以互换使用,所以我想一些被称为 API 的库实际上是 SDK,反之亦然。另外,这种区别有什么原因吗?
谢谢!
【问题讨论】:
标签: terminology
与 SDK 的定义相比,公认的 API 定义是什么?两者似乎可以互换使用,所以我想一些被称为 API 的库实际上是 SDK,反之亦然。另外,这种区别有什么原因吗?
谢谢!
【问题讨论】:
标签: terminology
API 或应用程序编程接口定义了一组类、函数和结构,供应用程序使用以利用某些库或子系统。例如,windows 多媒体子系统和 windows 套接字子系统都有自己的 API。 API 不是一个具体的实体,你不能指着一个文件说文件本身就是一个 API。 API 只是程序在使用库或子系统时需要使用的通信协议的规范。
SDK 或软件开发工具包包含工具、文档和所需文件,可针对 1 个或多个 API 进行编程。一些 SDK(但绝不是全部)可能包含示例代码来演示如何使用 API。 SDK 的 2 个示例是 Windows 平台 SDK 和 .NET Framework SDK。
这些术语可以互换使用的最可能原因是,有时一个 SDK 只包含一个 API 的工具、文档和文件,并且 API 和 SDK 使用相同的名称。用于开发 winamp 插件的 SDK 就是一个例子。
【讨论】:
API - 应用程序编程接口。这就是您编写代码的目的。
SDK - 软件开发工具包。这些是您需要的库,因此您可以编写代码。一个 SDK 中可能包含许多不同的 api。
【讨论】:
到目前为止,我所看到的所有答案都没有真正清晰完整地捕捉到它。
这两个术语不可互换,如果有人互换使用它们,则表示缺乏理解或严谨性。
API - 应用程序编程接口。由类库公开。由应用程序使用。当您构建使用该库的应用程序时,这是您的代码用来连接或调用该库的接口。换句话说,应用程序必须遵循一组规则和约定才能使用该库。 API 包括类、它们的方法、方法的参数列表和其他支持元素(如枚举、常量等)。 API 是一个抽象的工件:您不能下载 API 或安装 API。您可以描述一个 API,也可以使用一个。库本身就是API的具体实现,传递机制。
SDK - 软件开发工具包。这是一个具体的事情。您可以下载、安装、存储 SDK。 SDK 包括:
一个具体的例子:
【讨论】:
API 是一种应用程序编程接口——它是您的程序可以与之通信的东西。 SDK 通常包含一个 API 以及 API 文档。 API 不需要包含文档。 SDK 可能包含 API 组件,但始终包含文档。
【讨论】:
API 可以存在于 SDK 中,但反之则不行。 SDK 通常包含框架或环境的完整规范。例如,Java SDK 包含完整的 Java 语言规范、工具、外部库以及供应商决定提供的任何其他内容。 Java api 只是这些规范的接口。
【讨论】: