API和SDK的区别主要在一个是抽象的,一个是具体的。
SDK是software development kit,软件开发工具包,一个SDK是一个具体的东西,例如Java的JDK,它一定以某种形式存在,比如说是一个jar包,一个可以依赖的lib,一分可以直接引用的js代码。
SDK与API的联系在于,实际上SDK包含了API的定义,API定义一种能力,一种接口的规范。
而SDK可以包含这种能力,包含这种规范。我们常常说,这个SDK具有某某些API可以用。
但SDK又不完完全全只包含API以及API的实现,它是一个软件工具包,它还有其他辅助性的功能。例如JDK定义了JDBC API的规范,定义xml解析api的规范,但它也提供了很多工具包,例如常用数据结构Map,list等的封装,目的是方便使用者开发程序。
更形象的方式解释一下:
你想提取公积金,于是你公司的HR告诉你,你需要去找一个能办理公积金业务的银行。
这里的能办理公积金业务代表一种能力,一种API。如果一个银行具有办理公积金业务的能力,那么就说这个银行具有这种API。
而这个银行呢,它就是一个SDK,它提供办理公积金的能力,所有细节,并且,它还可能给你提供额外的功能,例如免费复印身份证复印件的功能。
转自:https://segmentfault.com/q/1010000007096790