Answers:
我认为它应该遵循“所有SDK都是/包含API,但并非所有API都是SDK”的思路。
SDK似乎是一套完整的API,可让您执行创建应用程序所需的大多数操作。此外,SDK可能包括用于为其开发的平台/项目开发的其他工具。
另一方面,API只是一系列相关的方法,可能对特定目的有用。
例如,JDK(Java开发工具包)包含API以及编译器,运行时和其他杂项工具。Java API只是构成您可以立即使用的核心语言的所有库。
因此,真正的区别在于,API至少等于或等于“某些服务”的接口,而SDK是针对特定目的的一组工具/组件/类。实际上,SDK会为您提供与之交互的API。但是您可能会在没有基础组件的情况下使用API,例如,通过Web服务提供API时。
API的示例:
SDK的示例:
API→已记录的界面(在某个时间点和特定的受众。对于公众,文档可能是不完整和/或不可用的,这可能是故意的,但这并没有使要记录的事实变暗供第三方使用。)
SDK→界面文档(+示例和工具)
“ SDK”比“ API”在更大的意义上是集体的。
通常,您只能找到一个涵盖整个平台的SDK。例如,有一个MacOS X SDK和一个iOS SDK,并且每个都包含用于许多不同功能区域的API。
“ API”最初也被用作集体术语,并且仍然经常以这种方式使用(MAPI,WSAPI等),但通常仅限于某些特定技术。这些年来,“ API”所隐含的范围似乎有所缩小。人们过去常常谈论“ Mac Toolbox API”或“ Windows API”,两者显然都包含许多功能。如今,听到“ API”用来表示单个系统功能已经很普遍了。可以说一个新版本的操作系统包含数百个新的API,这意味着数百个新的系统调用。
没有上下文,这两个术语都不是非常精确。
什么是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。
SDK只能是API(用于帮助与另一个应用程序接口的文件),而通常包括用于帮助调试的其他代码以及用于IDE的其他部分。
我全都没有缩写词。
我的两分钱:我相信API一词经常被错误地使用。
API是应用程序编程接口。
尽管名称有点笨拙,但这意味着它是一个接口。因此,一个应用程序可能具有允许其他应用程序与其通信的API。一件软件(例如,OO系统中的类)可能会提供API,以允许系统中的其他模块与其进行通信。
但是,术语API通常被用作“库”的同义词。我认为这不是正确的用法。部分库是一个API,允许代码中使用它,但库不是一个API。
SDK是一种库,因此可能会造成混淆。
我想比较一下。
如果您是使用Microsoft工具的开发人员:
API = Microsoft.Net Framework与SDK = Visual Studio
如果您是使用Java的开发人员:
API = Java运行时与SDK =任何提供开发套件(JDK)的工具
我猜一个SDK一定会依赖于相应的API-没有API就没有SDK。