查看原文
其他

SDK 和 API 的区别是什么?

推荐关注

扫码关注“后端架构师”,选择“星标”公众号

重磅干货,第一时间送达!

责编:架构君 | 来源:简道云

链接:zhihu.com/question/21691705/answer/770586138


上一篇好文:最新 955 不加班的公司名单(2022版)


大家好,我是后端架构师。


不知道区别的人,大概率是你还没搞懂API、SDK是什么。


# 讲个小故事:

研发人员A开发了软件A,研发人员B正在研发软件B。  

有一天,研发人员B想要调用软件A的部分功能来用,但是他又不想从头看一遍软件A的源码和功能实现过程,怎么办呢?  

研发人员A想了一个好主意:我把软件A里你需要的功能打包好,写成一个函数。你按照我说的流程,把这个函数放在软件B里,就能直接用我的功能了!

其中,API就是研发人员A说的那个函数。



这就是API的诞生。


日常生活中,我们有很多类似API的场景,比如:


电脑需要调用手机里面的信息,这时候你会拿一根数据线将电脑手机连接起来,电脑和手机上连接数据线的接口就相当于“API接口”。如图所示:

# 那SDK又是什么?


SDK 就是 Software Development Kit 的缩写,翻译过来——软件开发工具包。这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做SDK。另外,搜索公众号Java架构师技术后台回复“Spring”,获取一份惊喜礼包。


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


比如——

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


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


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


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


比如——


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

# 举个实例辅助理解:


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


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


由于系统的开发周期长、成本高,桥科院将目光聚焦到现成的功能软件上。后来通过API将简道云直接插入公司数据库,数据可自动上传至信息平台上并统一展示;再通过webhook把数据推送到服务器,实现自动备份。


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


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


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


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


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


把你叫做“XX系统”。


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


所以:


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

  • API=SDK上唯一的接口


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


PS:如果觉得我的分享不错,欢迎大家随手点赞、转发、在看。


最后给读者整理了一份BAT大厂面试真题,需要的可扫码加微信备注:“面试”获取。


版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢!

END

最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。在这里,我为大家准备了一份2021年最新最全BAT等大厂Java面试经验总结。

别找了,想获取史上最全的Java大厂面试题学习资料

扫下方二维码回复「面试」就好了

历史好文:

比特币又爆了。。。

分享一个牛逼的开源后台管理系统,不要造轮子了(附源码)!

基于SpringBoot 的CMS系统,拿去开发企业官网真香

10w 行级别数据的 Excel 导入优化记录

面试官:MySQL 批量插入,如何不插入重复数据?

写代码爬取了某 Hub 资源,只为撸这个鉴黄平台!

如何搭建一台永久运行的个人服务器?

突发!JetBrains 官宣支持乌克兰,制裁俄罗斯...

比 Navicat 还要好用,功能还很强大的 工具!

俄罗斯,制裁名单 ,有点凉凉了 !

突发!刚刚行程码崩了。。。

为什么不建议用 try catch 处理异常?


扫码关注“后端架构师”,选择“星标”公众号

重磅干货,第一时间送达!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存