夏钺的博客

一条咸鱼

【转】什么是SDK——SDK概念

https://www.toutiao.com/i6683722668333597192/

 


一、何为SDK

SDK是一系列程序接口,文档,开发工具的集合,是的,集合,sdk即单单不是一个开发工具,也不是一个程序。一个完整的SDK应该包括以下内容:(1)接口文件和库文件(2)帮助文档(3)开发示例(4)实用工具。

接口文件和库文件就是API,将底层的代码进行封装保护,提供给用户一个调用底层代码的接口;

帮助文档解释接口文件和库文件功能,以及介绍相关的开发工具,操作示例等等;

开发示例就是做出来的一个DEMO展示,也要包括源代码;

实用工具是用来协助用户进行二次开发的工具,比如二次开发向导、API 搜索工具、软件打包工具等。

有过java编程经历的都知道,要运行java需要在电脑上安装jdk。jdk就是java SDK ,其安装过程就是下载一个EXE(Windows下)的应用程序,点一下就OK了,看起来好像jdk就是一个应用程序。实际上这个在网上下载下来的应用程序只是jdk的一个安装向导,它帮你在电脑上安装了Java的运行环境,一堆Java工具和Java基础的类库,这些东西组合起来才是JDK的核心内容。

通过上述的示例,相信你大概明白了sdk包含些什么东西了。

那么学C的同学又会问,为什么在windows下运行c语言,没见要下载什么'C SDK'什么的啊?

因为C语言没有特定SDK,也不需要像Java一样在虚拟机上运行程序示例。但是C语言有丰富的API,同时C语言不需要像Java一样使用Java开发商提供的API,它可以直接调用系统本身的API。

实际开发中,可以轻松的获得多种多类的软件开发的工具(如keil uvision, eclipse,Visual C++等),这些工具集成了语言的开发环境、编译环境,还提供纠错功能。可以通过这些工具将SDK中的函数,框架类导入,使用别人写好的类,协助软件的开发。

 

 

二、关于SDK与API的区别

 

1、引例

研发人员A开发了软件A,研发人员B正在研发软件B。
有一天,研发人员B想要调用软件A的部分功能来用,但是他又不想从头看一遍软件A的源码和功能实现过程,怎么办呢?
研发人员A想了一个好主意:我把软件A里你需要的功能打包好,写成一个函数。你按照我说的流程,把这个函数放在软件B里,就能直接用我的功能了!
其中,API就是研发人员A说的那个函数。

这就是API的诞生。

 

2、那SDK又是什么?

SDK 就是 Software Development Kit 的缩写,翻译过来——软件开发工具包。这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做SDK。

SDK被开发出来是为了减少程序员工作量的。

比如——

有公司开发出某种软件的某一功能,把它封装成SDK(比如数据分析SDK就是能够实现数据分析功能的SDK),出售给其他公司做开发用,其他公司如果想要给软件开发出某种功能,但又不想从头开始搞开发,直接付钱省事。

 

3、现在可以谈谈API和SDK的区别了。

总的来说,两者没有值得比较的区别,因为是具有关联性的两种东西。

你可以把SDK想象成一个虚拟的程序包,在这个程序包中有一份做好的软件功能,这份程序包几乎是全封闭的,只有一个小小接口可以联通外界,这个接口就是API。

比如——

我们现在要在企业ERP系统中增加某个功能(比如自动备份、数据分析、云存储等),但又不想耗费大量时间、也没那么多研发亲自去做这个功能。这时我们可以选择使用这个“SDK”软件包,把ERP系统连接上API接口,就可以使用SDK软件包里的功能。

 4、举个实例辅助理解:

【中铁大桥科研院】有一个自研的信息平台,用于管理业务数据。

但他们曾面临一个问题——尽管有信息平台,却因为系统的独立性,数据的上传和备份,需要依靠人工在excel里来回操作,效率很低。

由于系统的开发周期长、成本高,桥科院将目光聚焦到现成的功能软件上。

后来通过API将简道云直接插入公司数据库,数据可自动上传至信息平台上并统一展示;再通过webhook把数据推送到服务器,实现自动备份。

API将信息平台与简道云相连

在这一过程中,简道云扮演的角色就是SDK,而简道云配备API接口,可以对接外部系统,让桥科院不用开发直接实现了数据自动上传、备份的功能。

 

最后,贴近生活讲讲两者的关系:

有一杯密封饮料,它的名字叫做“SDK”。

饮料上插着吸管,吸管的名字叫“API”。

把你叫做“XX系统”。

如果你想喝到SDK里的饮料(让系统拥有SDK中的功能),你必须通过API这根吸管来实现(通过API连接你的系统和SDK工具包),否则你就喝不到饮料。

所以:

SDK=放着你想要的软件功能的软件包

API=SDK上唯一的接口

 

不知道你这次真的懂了没?

 

相关介绍:

简道云,以阿里云为依托的云办公平台。以表单为基础,特色的流程协作、图表分析等功能,让用户简单灵活的搭建管理应用,免去开发成本的同时,享受到数字化管理。

(点击进入:「简道云官网」

 

作者:简道云
链接:https://www.zhihu.com/question/21691705/answer/770586138
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
文章转载源:https://www.toutiao.com/i6683722668333597192/
posted @ 2020-10-14 21:35  Applied_Energetic  阅读(1892)  评论(0编辑  收藏  举报