API 即应用编程接口(Application Programming Interface)。通常是某个系统对开发者开放的函数式编程的声明以及相关功能的二进制实现。比如:
Windows API,总的来说所有的Windows 可供代码调用的功能都以C函数声明的形式存放在<Windows.h> 以及相关的头文件中进行声明。同时提供lib 和dll 供开发者静态/动态地在自己的应用中调用这些功能的实现。
SDK 即软件开发包(Software Development Kit)。通常是为了方便开发者为系统开发应用而提供的API、开发辅助工具以及文档的集合。从这方面来说,SDK 的内涵要大于API。比如:
Windows SDK,除了包含Windows API 即<Windows.h>系列头文件以及.lib 和.dll 以外还有可供开发者查阅的文档,以在线/离线的方式向开发者提供。同时还包括一系列的工具,比如代码签名工具集,调试工具集Debugging Tools for Windows,性能工具集Windows Performance ToolKit 等等。开发者在编写代码的过程可以参考SDK 的开发文档,了解API 的功能,同时还可以使用SDK 中的工具帮助自己实现某些数据的转换、代码的声明等等。在代码编写完成之后,可以通过各种工具集对代码的稳定性、性能等等各个方面进行验证和分析。
Java SDK 简称JDK。内含有Java 定义的基础功能包,如http://Java.Io 等,这属于API的部分。在JDK的bin 目录下还有jmap、Jstat、jvisualvm 等一系列工具帮助开发者动态地分析Java 代码的运行情况。同时,JDK 中还包含了大量的文档,对Java API 和各种工具的使用有完整详细的说明。
Android SDK,iOS SDK,.NET Framework SDK 等等内涵基本上都是一样的。
假设你要做一款WiFi可视门铃,APP功能有:
1. 视频对讲
2. APP开锁
3. 访客截图
4. 移动侦测
5. 触发警报
6. 人脸识别
首先,要做1-6的API, 组成了SDK, 然后根据SDK开发Project File项目文件,制作APP, 门铃上写入Firmware固件(Firmware是门铃的软件,是SDK和门铃沟通的桥梁)。
如下图:
后来,你想升级门铃,加入新功能 7. 虹膜识别,做API-7, 组成新的SDK, 生成新的Firmware, 更新到门铃,搞定。