More specifically, for Java libraries, what makes them an API and/or SPI?

解决方案the API is the description of classes/interfaces/methods/... that you call and use to achieve a goal and

the SPI is the description of classes/interfaces/methods/... that you extend and implement to achieve a goal

Put differently, the API tells you what a specific class/method does for you and the SPI tells you what you must do to conform.

Usually API and SPI are separate. For example in JDBC the Driver class is part of the SPI: If you simply want to use JDBC, you don't need to use it directly, but everyone who implements a JDBC driver must implement that class.

Sometimes they overlap, however. The Connection interface is both SPI and API: You use it routinely when you use a JDBC driver and it needs to be implemented by the developer of the JDBC driver.

java spi与api,SPI和API之间的区别?相关推荐

  1. java和python的web自动化有什么区别-Java Web开发和Python Web开发之间的区别

    今天的文章讨论了Java Web开发和Python Web开发之间的区别.我不鼓励我们在这里从Java Web迁移到Python Web开发.我只是想谈谈我的感受.它不一定适合所有情况,仅供我们参考. ...

  2. 解析java中方法的重载和重写之间的区别与联系

    解析java中方法的重载和重写之间的区别与联系 1 不同点 1.1 方法重写是在不同的类中(父子类),方法重载是在同一类中 1.2 方法重载最初的目的是构造方法的多样化,方法重写的目的是让重写的方法满 ...

  3. java ordered list_关于并行处理:Java 8的forEachOrdered()和sequence()方法之间的区别?...

    我正在使用Java 8并行流,并且希望以并行流的方式打印元素是某种顺序(例如插入顺序,反向顺序或顺序顺序). 为此,我尝试了以下代码: System.out.println("With fo ...

  4. java executequery_java execute、executeQuery和executeUpdate之间的区别

    在用纯JSP做一个页面报警功能的时候习惯性的用executeQuery来执行SQL语句,结果执行update时就遇到问题,语句能执行,但返回结果出现问题,另外还忽略了executeUpdate的返回值 ...

  5. Java面试-String、StringButtfer和StringBuilder之间的区别

    String     StringBuffer     StringBuilder String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量 ...

  6. java jli.dll_JVM、JRE、JDK之间的区别和联系,你居然还不知道?

    JDK包含了JRE,JRE包含了JVMJDK:java开发工具包,针对java开发人员,可以编译运行java程序 JRE:java运行时环境,针对使用java程序的客户,可以运行字节码(.class) ...

  7. Java中的frontcolor_关于java:Color.red和Color.RED之间的区别

    setXxx(Color.red)和setXxx(Color.red)的定义之间的真正区别是什么? 我在网上找到了以下解释. 这是关于命名约定的吗? Java originally defined a ...

  8. java switch table_关于java:JVM的LookupSwitch和TableSwitch之间的区别?

    我很难理解Java字节码中的LoopUpwitter和TabLeSwitCH. 如果我理解得很好,LoopUpTwitter和TabLaswitCH都对应于Java源的EDCOX1×0语句吗?为什么一 ...

  9. java allocatedirect_java – ByteBuffer.allocateDirect()和MappedByteBuffer.load()之间的区别

    我试图通过使用MappedByteBuffer对特定文件进行内存映射来实现两个或多个JVM之间的一种共享缓存.从规范我看到当我们使用MappedByteBuffer.load()它应该将数据加载到直接 ...

  10. Java随笔——逻辑运算符和(|和||)之间的区别

    "&"和"&&"的区别: 使用 & 时,左边的运算无论真假,右边都进行运算: 使用 && 时,如果左边的运算为真 ...

最新文章

  1. 使用指针交换i,j,k的值
  2. 【Kali渗透全方位实战】Aircrack-ng拿隔壁女神家的wifi密码
  3. Python 文件和目录操作总结
  4. Android Studio 使用Log
  5. 可以创建专业的客户端/服务器视频会议应用程序的音频和视频控件LEADTOOLS Video Conferencing SDK...
  6. jmeter一个线程组多个请求_分享一些我在实际项目中使用jmeter压测的一些技术点跟一些踩过的坑吧...
  7. (54)Verilog HDL下升沿采样
  8. mysql sql option_MySQL 报错MySQL server syntax to use near 'OPTION SQL_SELECT_LIMIT=DEFAULT'
  9. 在cad如果用计算机,CAD如何使用快速计算器为中的变量区域功能
  10. 读我是一只IT小小鸟有感
  11. 数据库系统工程师输给了计算机等级考试二级
  12. Vue Element校验validate
  13. OptiSystem器件学习(一)
  14. 电脑快捷键快速关机方法,电脑如何快速关机
  15. 激励是改善业绩的关键
  16. metaWRAP bin_refine 模块如何优化分箱结果
  17. C/C++新手学习项目(三) 魔兽世界之三:开战
  18. 路由器CFE-固件-NVRAM
  19. 虚拟数字人市场现状研究分析-
  20. DeDeCMS v5.7 SP2正式版 前台任意用户密码修改 漏洞复现

热门文章

  1. python requests 示例_Python3中requests库学习01(常见请求示例)
  2. java利用递归解决汉诺塔问题
  3. python制作图片墙_利用python生成照片墙的示例代码
  4. cad vba编程从入门到精通_【CAD教程】CAD2020零基础入门到精通全套视频教程
  5. java虚拟机编码格式_Java虚拟机(JVM)默认字符集详解
  6. android布局置顶_Android布局图片置顶
  7. 服务器文件绝对路径,服务器文件绝对路径
  8. pcm5102a解码芯片音质评测_一台可换芯片的解码机评测--对比PCM1794和CS4398芯片(下)...
  9. 初分配和再分配图解_针织好看暖和的儿童帽子图解教程,宝妈们千万不要错过...
  10. python适用于哪些芯片_用pyusb在Python中开发CY7C68013,利用,PyUSB,进行,芯片,的,上位,机...