OSGi 理论: 一些认知

什么是 OSGi

开放式服务网关工作小组

Open Service Gateway Initiative

Java动态模块

Enabled greater dynamic modularity in Java

为我们带来的帮助

  • 建立面向服务(SOA in VM)模块化的 Java 应用
  • 帮助我们分离接口和实现
  • 更好的使用基于接口的开发模式,创建模块和管理应用
  • 将要软件要处理的每个具体问题放入分离的逻辑单元
  • 每个逻辑单元具有自已的逻辑边界
  • 逻辑单元保持简单和可维护性(Unix Slang: do one thing well!)

我们以前的几个主要问题

Java 模块化是建立在面向对象的类文件上
  • 并不支持更粗粒度的模块化
  • 其代码级是访问修饰符在于完成很细粒度的面向对象封装,而不是逻辑单元
Java 通过包( package ) 划分代码单元
  • 进行跨包访问Java的类需要将被访问类申明为 public (或protected, 如果是通过类继承的方式)
  • 这样会暴露实现细节破坏封装,会让客户端程序员误用我们的非公共 API
Java VM 通过 Class Path 加载类
  • 缺少代码的版本,类依赖,和一致性的约束 (Returns the first version it finds)
  • 我们无法部署指定版本的依赖和无法演进已部署的组件

OSGi 帮助我们解决了

  • 通过依赖检查,避免在运行期出现 ClassNotFoundException
  • 通过指定版本的依赖,避免在运行期出现错误的类依赖
  • 避免出现由于层次类装载体系出现的 bar instanceof Bar == false
  • 分逻辑单元打包部署 Jar 文件
  • 对包申明访问控制,更好的隐藏实现保护封装
  • 为应用提供强大扩展机制,包括运行期扩展

后续导读

OSGi 理论: 分层
OSGi 理论: 模块元数据 (Bundle's manifest file)
OSGi 实践: 包装 OSGi bundle

时间: 2024-09-21 20:56:54

OSGi 理论: 一些认知的相关文章

OSGi 理论: 分层

OSGi 架构分层 模块层 (Module Layer) 生命周期层 (Lifecycle Layer) 服务层 (Service Layer) 模块层 关注于代码包和重用代码 模块在 OSGi 中被称为 bundle 模块包含: 元数据.类文件和资源文件 模块向外部申明可见包 (exported packages) 和依赖包 (imported packages) 模块解析: 进行导入.导出包的一致性检查 生命周期控制层 关注于模块在运行期的安装.更新.初始化.销毁等过程管理 通过 (inst

OSGi 理论: 模块元数据 (Bundle's manifest file)

OSGi 模块或者说 Bundle: 由 Java 字节码组成的相关的服务组件和依赖库,并通过 OSGi 元数据条目进行描述,按逻辑单元打包并部署的 JAR 文件 OSGi 模块元数据 由于篇幅原因,未详尽之处请参考 The OSGi Alliance OSGi Core - Release 6 的 3.2 小节 存放于标准 JAR 文件的 manifest file META-INF/MANIFEST.MF 一个 bundle 元数据实例 $ java -jar bnd-2.4.0.jar p

OSGi 实践:包装 OSGi bundle

阅读本节需要一些上下文知识,推荐阅读: OSGi 理论: 一些认知 OSGi 理论: 分层 我们曾在 OSGi 理论: 模块元数据 (Bundle's manifest file) 中讨论过关于 OSGi bundle 元数据.这些元数据用于模块部署人员了解模块,以及 OSGi 运行时识别.连接模块和其约束性检查等.但在实践中我可能会遇到一些我们目标模块所依赖的 JARs 并没有写入这些元数据(比如:一些厂商的 JDBC Driver等),也就是说这些 JARs 不能直接用 OSGi 运行环境.

深层学习:心智如何超越经验3.2 新颖产品理论

3.2 新颖产品理论 创造性问题已经吸引了大量关注,但仍然无法解答,所以创造研究领域是不切实际答案的坟墓.本章剩余部分的目的是用墓志铭给那些失败者以荣耀,来承认他们的贡献.在看起来多种多样的创造性文献中我辨别了三个原则,以此来回答创造的可能性的问题.每一个原则都只涉及真理的一个方面,没有哪个能抓住全部真理.每一个都生成了一系列概念和假设,这些概念和假设在清晰度和解释力上也与日俱增,而且这些进步需要追溯其原始文本并且进一步告知新一代创造性理论.本节中将节选一些理论并合理地进行重构,有些按年代顺序,

大数据究竟是什么?一篇文章让你认识并读懂大数据

在写这篇文章之前,我发现身边很多IT人对于这些热门的新技术.新趋势往往趋之若鹜却又很难说的透彻,如果你问他大数据和你有什么关系?估计很少能说出一二三来.究其原因,一是因为大家对新技术有着相同的原始渴求,至少知其然在聊天时不会显得很"土鳖":二是在工作和生活环境中真正能参与实践大数据的案例实在太少了,所以大家没有必要花时间去知其所以然. 我希望有些不一样,所以对该如何去认识大数据进行了一番思索,包括查阅了资料,翻阅了最新的专业书籍,但我并不想把那些零散的资料碎片或不同理解论述简单规整并堆

《游戏设计快乐之道(第2版)》一第2章 大脑如何运作

"游戏"有很多种定义. 有一种理论称为博弈论(game theory)1,它与游戏有些许关系,更多地涉及心理学,而且大量涉及数学,但与游戏设计却关系不大.博弈论主要研究对手之间如何做出最佳选择,它经常应用于政治和经济学中,但往往运用得并不正确. 靠查字典是无法真正理解"游戏"的定义的.我们可以先抛开定义,不妨四处看看,你会发现游戏的概念无处不在.娱乐和消遣有时会竞相出现.有趣的是,没有一个定义会把快乐作为一个要求,最多也只是考虑一下娱乐性而已. 有些学者曾给游戏下了

一篇对大数据深度思考的文章,让你认识并读懂大数据

在写这篇文章之前,我发现身边很多IT人对于这些热门的新技术.新趋势往往趋之若鹜却又很难说的透彻,如果你问他大数据和你有什么关系?估计很少能说出一二三来.究其原因,一是因为大家对新技术有着相同的原始渴求,至少知其然在聊天时不会显得很"土鳖";二是在工作和生活环境中真正能参与实践大数据的案例实在太少了,所以大家没有必要花时间去知其所以然. 我希望有些不一样,所以对该如何去认识大数据进行了一番思索,包括查阅了资料,翻阅了最新的专业书籍,但我并不想把那些零散的资料碎片或不同理解论述简单规整并堆

SQL Server · 特性分析 · 2012列存储索引技术

摘要 MS SQL Server 2012首次引入了列存储索引(Columnstore Index)来加速数据分析(OLAP)和数据仓库(Data Warehouse)场景的查询,它主要是通过将数据按列压缩存储的方式来减少查询对磁盘IOPS开销和CPU开销,最终达到提升查询效率,降低响应时间的目的.当然,列存储索引也不是一把万能的钥匙,在SQL Server 2012版本中它有诸多非常严苛限制条件. 这篇文章会从以下几个方面来介绍列存储索引: 列存储索引所涉及到的基本概念 列存储索引的结构 列存

SQL Server 2012列存储索引技术

title: SQL Server 2012列存储索引技术 author: 风移 摘要 MS SQL Server 2012首次引入了列存储索引(Columnstore Index)来加速数据分析(OLAP)和数据仓库(Data Warehouse)场景的查询,它主要是通过将数据按列压缩存储的方式来减少查询对磁盘IOPS开销和CPU开销,最终达到提升查询效率,降低响应时间的目的.当然,列存储索引也不是一把万能的钥匙,在SQL Server 2012版本中它有诸多非常严苛限制条件. 这篇文章会从以