栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

概念区分:API SPI SDK

Java 更新时间:发布时间: 百科书网 趣学号
API

API (Application Programming Interface)在大多数情况下,都是实现方制定接口并完成对接口的实现,调用方仅仅依赖接口调用,且无权选择不同实现。

图源:Java基础之SPI机制
例如,厂商将自己的提供的服务写成接口,提供给其他开发人员使用。开发人员只需要调用相关接口,而不需要了解内部是什么。相当于我想实现什么功能我就调一下。

SPI

SPI(Service Provider Interface),是Java提供的一套用来被第三方实现或者扩展的接口,它可以用来启用框架扩展和替换组件。 SPI的作用就是为这些被扩展的API寻找服务实现。

图源:Java基础之SPI机制
例如,我调用数据库的一些增删改查接口,但是不同的数据库底层实现机制可能不同,驱动程序也有不同。这就需要数据库厂商自己去实现自己的数据库驱动逻辑,我们只需要调用接口,不需要关心具体实现细节以及不同厂商之间的区别。
举例:高级开发必须理解的Java中SPI机制
实际上是基于接口的编程+策略模式+配置文件组合实现的动态加载机制。调用者根据实际使用需要,启用、扩展、或者替换框架的实现策略。
例子:

  • 数据库驱动加载接口实现类的加载
  • 日志门面接口实现类加载
  • Spring中大量使用了SPI
  • Dubbo中大量使用了SPI
SDK

SDK(Software Development Kit)即软件开发工具包 ,就是帮助我们开发出软件的工具集合,除了代码之外,一般还要搭配文档、示例等。

一般SDK都是需要引入到项目中使用的,比如JDK就是Java Development Kit,是一套用来开发Java的工具包,通过import语句来引入这个工具包。
SDK中可能提供很多的API供开发者使用。例如JDK中提供了很多用于IO处理(java.io)、容器工具(如java.util.concurrent)等,Windows SDK提供了很多Windows开发的相关工具和文档。
使用SDK的好处是,相当于复用别人的轮子,那么就对SDK的提供者需要有一些要求,如:命名简洁、统一风格、注释清晰、轻度依赖、可扩展、升级兼容、迁移平滑等等。
SDK除了包括提供的API,还包括运行/开发环境、编译器、调试器、测试分析工具等等。SDK的唯一访问入口是API,可以把SDK简单地理解为打包了一系列API的工具包。

参考

SDK 和 API 的区别是什么?
Java基础之SPI机制
大厂的 SDK 写法,偷学到了!
高级开发必须理解的Java中SPI机制

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/956794.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号