精通组件兼容性依赖

       <<精通组件兼容性依赖>>,这篇文章首先从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

时间: 2024-09-21 14:20:28

精通组件兼容性依赖的相关文章

[NHibernate]组件之依赖对象

目录 写在前面 文档与系列文章 组件之依赖对象 一个例子 总结 写在前面 周一至周四一直在成都出差,也一直没有更新博客了,一回到家第一件事就是扒一扒最近博客园更新的文章,然后把想看的收藏了,大概有20篇左右,包括基础的js或者jquery(快速浏览,复习基础),java方面的(主要了解实现业务的思想),asp.net webform\mvc(webform的快速浏览,mvc深入理解)等等,从昨天晚上到今天上午算是花费了7.8个小时的时间把收藏夹里面的文章看了一边. 现在就继续NHibernate

NHibernate之旅(8):巧用组件之依赖对象

本节内容 引入 方案1:直接添加 方案2:巧用组件 实例分析 结语 引入 通过前面7篇的学习,有点乏味了~~~这篇来学习一个技巧,大家一起想想如果我要在Customer类中实现一个Fullname属性(就是Firstname和Lastname的组合)该怎么做呢? 方案1:直接添加 "我知道!修改Customer类,添加一个Fullname属性!即Customer.Fullname!" "恩,完全正确......" "这就意味着在Customer类中把Fir

速救,精通浏览器兼容性的大牛,用过DevExpress控件的更好

问题描述 为什么同样的页面,本地打开调试效果和更新到服务器上的效果不一样,就是说我在本地调试好了样式,把文件更新到服务器上,用同样的浏览器效果居然不一样!!!我看了下源文件,居然也有差异,我没有访问错页面,也不是因为浏览器缓存,应该我每次都会看更改的标记.我本地用的是IE11浏览器,本地和服务器的IIS版本都是7.5.在谷歌浏览器上浏览是正常的.用过DevExpress的都知道,它有一个过滤框,在谷歌和IE8上都能过滤,但是在IE11就一直在loading了--最后上几张图~~~ 解决方案 解决

基于组件的.NET软件开发(2)

组件的继承 前面实现的将C#组件组合进VB工程中只是牛刀小试,现在我们来实现混合语言的面向对象编程(OOP),首先,我们来尝试一下混合语言组件的继承. 新建一个VB类库工程VBComponent,在工程中按上面的方法添加对CSharpClass.dll组件的引用,然后组件中增加一个新类:ExtendsFromCSharp,它继承自C#类CSharpClass,ExtendsFromCSharp类提供一个Add(x,y)方法,将两数相加,用UML表示如图4: 图 4 从C#类继承而来的VB类 具体

VB.NET中的组件开发

组件开发 先看段组件的代码:(临时写的,写得比较乱) ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '' 登录验证组件 '' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Imports System.Security.CryptographyImports System.TextImports System.DataImpo

开发模块化的JavaScript组件

现如今,虽然多数的web应用都使用了大量的JavaScript,但如何保持客户端功能的专注性.健壮性和可维护性依然是一个很大的挑战. 尽管其它编程语言和系统都已经将关注分离和DRY这样的基本原则视为理所当然的宗旨,但往往在进行浏览器端应用开发的时候,这些原则就被忽视了. 造成这一现象的部分原因是JavaScript语言本身就在不断挣扎的历史,在很长的一段时间内,它都难以获得开发者的认真关注和对待. 而更重要的原因或许是源于服务端与客户端的差异造成的.虽然在这方面已经有大量的架构风格方面的概念,例

尽可能摆脱对HttpContext的依赖

今天主要谈论HttpContext的依赖问题. 在ASP.NET中进行单元测试的天敌便是HttpContext,它是ASP.NET的核心,极端复杂,却无法进行 Mock1--可见微软能够写出那么庞大的ASP.NET框架真不那么容易.现在这个状况改善了不 少,因此大家已经可以使用System.Web.Abstractions.dll了,这个程序集中提供了对于HttpContext的抽 象,也就是HttpContextBase抽象类.因此在ASP.NET MVC中,各种组件均依赖于HttpConte

Composite Application Guidance for WPF(5)——依赖注入容器

依赖注入容器和Prism的基础服务已经在本系列随笔中提到过很多次,今天将其分离出来专门说一说 1, 为什么要使用依赖注入容器 我们知道, 在Composite Application中各个模块之间是松耦合的关系, 也就是在设计的时候尽可能地减少模块间的依赖, 但无论如何从业务角度讲, 他们之间总还是要相互通信与合作的. 所以依赖注入容器在这其中扮演了一个桥梁般的角色. 比如当创建某一个组件实例的时候, 其依赖于另外的一个组件或服务, 此时依赖注入容器会将其需要的信息"注入(Injection)&

Joomla扩展使用手记:ChronoComments文章评论组件

目标:继续找寻符合自己要求的文章评论组件,一直还没说自己的需求呢, 用了再说吧. 这次要安装试用的是:Chrono Comments,支持 Joomla 1.5.x,它包括两部 分: 1. Chrono Comments 文章评论组件 1.2 多国语言版,文件: ChronoComments_component_V1.2_J1.5_Chinese.zip 2. Chrono Comments 文章评论组件内容插件 1.2 多国语言版,文件: ChronoComments_plugin_v1.2_