OSGi 理论: 一些认知

简介: 什么是 OSGi 开放式服务网关工作小组 Open Service Gateway Initiative Java动态模块 Enabled greater dynamic modularity in Java 为我们带来的帮助 建立面向服务(SOA in VM)模块化的

什么是 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

目录
相关文章
|
JavaScript
关于“wap2app仅支持对已通过ICP备案的域名站点进行打包”问题解决
关于“wap2app仅支持对已通过ICP备案的域名站点进行打包”问题解决
关于“wap2app仅支持对已通过ICP备案的域名站点进行打包”问题解决
|
机器学习/深度学习 存储 数据采集
阿里云 ACP是什么?阿里云 ACP有什么用?
ACP是什么,它是阿里云企业推出的针对于数据分析工程师的资格认证,有极高的含金量。因为阿里云在国内市场处于领先地位,他们推出的资格认证自然而然受到很多人的欢迎,很多互联网行业从业人员都以获得阿里ACP认证为荣。那么,阿里云 ACP是什么?阿里云 ACP有什么用?在认证大使官网上查阅了相关资料,我得到了答案
3065 0
阿里云 ACP是什么?阿里云 ACP有什么用?
|
API 图形学
Unity 编辑器开发实战【AssetDatabase】- 获取资产的依赖项、引用项
Unity 编辑器开发实战【AssetDatabase】- 获取资产的依赖项、引用项
703 1
Unity 编辑器开发实战【AssetDatabase】- 获取资产的依赖项、引用项
|
API Apache 数据库
Springboot----项目整合微信支付(用户取消订单)
Springboot----项目整合微信支付(用户取消订单)
489 0
Springboot----项目整合微信支付(用户取消订单)
|
机器学习/深度学习 人工智能 自然语言处理
超强大NLP标注工具——Prodigy
超强大NLP标注工具——Prodigy
1786 0
超强大NLP标注工具——Prodigy
|
SQL 消息中间件 分布式计算
《海量数据处理与大数据技术实战》来咯,从实战出发,解读大数据技术!
随着大数据技术和云计算技术的发展,Hadoop 大数据生态系统中的各项技术越来越流 行,已然成为大数据开发领域的事实标准。特别是 Hadoop 大数据生态系统中各项技术的开 源特性,使得其核心技术和各种解决方案得到了广泛的应用。程序员要想进入大数据开发领 域,除了需要有扎实的编程基础外,还要融会贯通各种大数据框架,最好还要熟悉大数据领 域中有典型意义和实用价值的各类开发案例。这样才能在竞争日益激烈的大数据市场环境中 具备较强的职场竞争力。
《海量数据处理与大数据技术实战》来咯,从实战出发,解读大数据技术!
|
API 网络安全 Docker
docker 部署flask&matplotlib应用
Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。Flask是一个使用 Python 编写的轻量级 Web 应用框架。本文介绍通过Dockerfile生成镜像,对外部署通过API接口的方式调用绘图服务。
1154 0
docker 部署flask&matplotlib应用
|
自然语言处理
【Elasticsearch 技术分享】—— ES 查询检索数据的过程
ES 使用过程中常用的就是查询以及检索,那查询和检索的过程,什么样的呢?
1584 0