【问题标题】:Why do the terms API and an SDK seem to be used interchangeably?为什么术语 API 和 SDK 似乎可以互换使用?
【发布时间】:2009-06-11 21:23:56
【问题描述】:

与 SDK 的定义相比,公认的 API 定义是什么?两者似乎可以互换使用,所以我想一些被称为 API 的库实际上是 SDK,反之亦然。另外,这种区别有什么原因吗?

谢谢!

【问题讨论】:

    标签: terminology


    【解决方案1】:

    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 就是一个例子。

    【讨论】:

    • 如果可以的话,我会投票;今天没票了。这是迄今为止最好的答案。
    • 哇,你一定很忙,票用完了。我已经接近了,但还没有用完。
    【解决方案2】:

    API - 应用程序编程接口。这就是您编写代码的目的。

    SDK - 软件开发工具包。这些是您需要的库,因此您可以编写代码。一个 SDK 中可能包含许多不同的 api。

    【讨论】:

    • SDK 还可能包含一些支持/诊断工具,用于协助实施 API。
    • SDK 包含:库、工具、文档、示例代码等。它是一个工具包。
    【解决方案3】:

    到目前为止,我所看到的所有答案都没有真正清晰完整地捕捉到它。

    这两个术语不可互换,如果有人互换使用它们,则表示缺乏理解或严谨性。

    API - 应用程序编程接口。由类库公开。由应用程序使用。当您构建使用该库的应用程序时,这是您的代码用来连接或调用该库的接口。换句话说,应用程序必须遵循一组规则和约定才能使用该库。 API 包括类、它们的方法、方法的参数列表和其他支持元素(如枚举、常量等)。 API 是一个抽象的工件:您不能下载 API 或安装 API。您可以描述一个 API,也可以使用一个。库本身就是API的具体实现,传递机制。

    SDK - 软件开发工具包。这是一个具体的事情。您可以下载、安装、存储 SDK。 SDK 包括:

    • 如您所知,公开或提供 API 的库。
    • 头文件(如果适用)
    • 文档 - 自述文件、帮助文件、发行说明、参考文档、编程指南。实现为.CHM文件、pdf文档等
    • 工具 - 例如编译器、汇编器、链接器、分析器、调试器、优化器、测试工具等。
    • 示例代码和示例应用 - 展示如何使用 API
    • 可能是其他一些不属于上述类别之一的东西

    一个具体的例子:

    • Java SDK 是一个可下载的版本控制的东西。它提供库、工具(在 Windows 上:javac.exe、java.exe、jar.exe 等)、所有帮助文件和 API 文档以及库的源代码。
    • Java API 是您的代码调用库必须遵循的一组规则; API 文档中描述了这些规则。

    【讨论】:

    • 我喜欢我的回答,但这个更好,这是一个赞成票。
    【解决方案4】:

    API 是一种应用程序编程接口——它是您的程序可以与之通信的东西。 SDK 通常包含一个 API 以及 API 文档。 API 不需要包含文档。 SDK 可能包含 API 组件,但始终包含文档。

    【讨论】:

      【解决方案5】:

      API 可以存在于 SDK 中,但反之则不行。 SDK 通常包含框架或环境的完整规范。例如,Java SDK 包含完整的 Java 语言规范、工具、外部库以及供应商决定提供的任何其他内容。 Java api 只是这些规范的接口。

      【讨论】:

        猜你喜欢
        • 2021-01-09
        • 1970-01-01
        • 2015-05-15
        • 1970-01-01
        • 2017-04-06
        • 2020-11-21
        • 2015-08-27
        • 2019-09-20
        • 2019-10-27
        相关资源
        最近更新 更多