SDK 和 API 的区别是什么?

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

讲个小故事:

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

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

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

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

e610cd31d873767f1d702c168699f8fa.jpeg

这就是API的诞生。

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

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

bd05dff56aebc237b19c26c4db4b4752.jpeg

那SDK又是什么?

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

SDK被开发出来是为了减少程序员工作量的。推荐,公众 号Java精选,回复java面试,获取面试资料。

比如——

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

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

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

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

比如——

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

  • 举个实例辅助理解:

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

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

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

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

d94c43840076f7d72351069f2957e1a5.jpeg

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

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

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

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

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

把你叫做“XX系统”。

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

所以:

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

API=SDK上唯一的接口

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

原文:

https://zhihu.com/question/21691705/answer/770586138

公众号“Java精选”所发表内容注明来源的,版权归原出处所有(无法查证版权的或者未注明出处的均来自网络,系转载,转载的目的在于传递更多信息,版权属于原作者。如有侵权,请联系,笔者会第一时间删除处理!

最近有很多人问,有没有读者交流群!加入方式很简单,公众号Java精选,回复“加群”,即可入群!

Java精选面试题(微信小程序):3000+道面试题,包含Java基础、并发、JVM、线程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架构设计等,在线随时刷题!

------ 特别推荐 ------

特别推荐:专注分享最前沿的技术与资讯,为弯道超车做好准备及各种开源项目与高效率软件的公众号,「大咖笔记」,专注挖掘好东西,非常值得大家关注。点击下方公众号卡片关注

文章有帮助的话,点在看,转发吧!

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值