精通组件兼容性依赖

简介:        <<精通组件兼容性依赖>>,这篇文章首先从Java语言层面阐述了什么是兼容性,JDK是如何处理兼容性的?然后提出了一个最佳实践路线图,首先要保证你的组件包是面向接口编程的,别人可以稳定地依赖你的接口,而实现可以采用动态发现的机制去做。并用SLF4j和Maven Dependency插件作为推荐准则,讲解了它们的源码实现,顺便引出了臭名昭著的common

       <<精通组件兼容性依赖>>,这篇文章首先从Java语言层面阐述了什么是兼容性,JDK是如何处理兼容性的?然后提出了一个最佳实践路线图,首先要保证你的组件包是面向接口编程的,别人可以稳定地依赖你的接口,而实现可以采用动态发现的机制去做。并用SLF4j和Maven Dependency插件作为推荐准则,讲解了它们的源码实现,顺便引出了臭名昭著的commons logging的ClassLoader问题,感兴趣的同学可以顺藤摸瓜,一探究竟。其次介绍了组件签名&兼容性保护策略,使用开源已有工具可以轻松帮助我们解决这类问题。最后,也是重中之重,介绍了Dependency Mediator项目的初衷,和OSGI等模块化思路不同,它试图通过编译期检查而不是运行期隔离的方式,为我们降解三类常见运行期错误:NoSuchMethodError,NoSuchFieldError 和 NoClassDefFoundError。项目目前已经发布了1.0版本,而在2.0版本中,会有重量级的优化和功能,希望大家多多使用。

        当然,文章比较长,大家如果能耐心通读,势必会对兼容性依赖这个领域有更深刻的认识,也欢迎大家积极在Issue上提需求和BUG,好的产品离不开大家的帮助!


文章地址:Mastering Component Compatible Dependency

项目地址:dependency-mediator

目录
相关文章
|
5月前
|
Ubuntu iOS开发 MacOS
如何在使用Pygame时避免依赖额外的库带来的配置复杂性和兼容性问题?
【6月更文挑战第12天】如何在使用Pygame时避免依赖额外的库带来的配置复杂性和兼容性问题?
37 2
|
6月前
|
编译器 Linux C语言
Valgrind兼容性解析:从核心依赖到错误诊断
Valgrind兼容性解析:从核心依赖到错误诊断
243 0
|
开发框架 JavaScript 小程序
扩展应用功能的无限可能——UniApp生态系统中的组件库与插件探索
扩展应用功能的无限可能——UniApp生态系统中的组件库与插件探索
|
前端开发
多个前端项目中公共组件使用方案(npm包方式)
多个前端项目中公共组件使用方案(npm包方式)
多个前端项目中公共组件使用方案(npm包方式)
|
数据库
插件配置设计
插件配置设计
106 0
转载:OSGI组件依赖
原文链接: OSGi组件依赖     OSGi doesn’t allow you to specify class visibility at the class level, but instead at the level of the containing package. 1. The header:Export-Package and The directives for the Export-Package header     当指定一个package export,默认的它的subpackage是没有exportde,需特别指定。
856 0
|
JavaScript 前端开发 CDN
浅析组件库实现按需引入的几种方式
浅析组件库实现按需引入的几种方式
909 0
浅析组件库实现按需引入的几种方式
|
前端开发 小程序 项目管理
前端:组件、插件、模块、子应用、库、框架等区别
前端:组件、插件、模块、子应用、库、框架等区别
1050 0
版本依赖和插件管理
版本依赖和插件管理
100 0
|
Shell Serverless TensorFlow
开发函数计算的正确姿势 —— 安装第三方依赖
函数计算安装第三方依赖一大痛点,文章 [函数计算安装依赖库方法小结](https://yq.aliyun.com/articles/602147) 对可能会遇到的问题和解决方法做了细致总结,fun install 是基于之前的经验和成果将最佳实践的方法固化到工具中,方便用户便捷的安装依赖。
9351 0