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

目录
相关文章
|
XML 存储 JSON
软件工程的配置化思想
软件工程的配置化思想
189 0
|
6月前
|
算法 Java 程序员
在Java的编程世界里,多态不仅仅是一种代码层面的技术,它是思想的碰撞,是程序员对现实世界复杂性的抽象映射,是对软件设计哲学的深刻领悟。
在Java的编程世界里,多态不仅仅是一种代码层面的技术,它是思想的碰撞,是程序员对现实世界复杂性的抽象映射,是对软件设计哲学的深刻领悟。
95 9
|
6月前
|
敏捷开发 安全 测试技术
软件工程:从概念到实践
【8月更文第20天】随着信息技术的快速发展,软件在现代社会中扮演着越来越重要的角色。从简单的移动应用到复杂的操作系统,软件已经成为连接人与数字世界的桥梁。为了有效地开发和维护这些软件系统,软件工程应运而生。本文将探讨软件工程的基本概念、目标、原则以及常用的生命周期模型。
363 0
编写s=1+2+3+...+n思路打破认知
最近在和领导讨论架构设计,其中涉及到如何通过代码来体现面向对象?通过一个例子来打破了原有的认知,以此总结记录自己的提升和成长
|
前端开发 程序员
引入软件工程的思想
引入软件工程的思想
|
Oracle JavaScript Cloud Native
【JVM深层系列】「云原生时代的Java虚拟机」针对于GraalVM的技术知识脉络的重塑和探究
【JVM深层系列】「云原生时代的Java虚拟机」针对于GraalVM的技术知识脉络的重塑和探究
395 1
【JVM深层系列】「云原生时代的Java虚拟机」针对于GraalVM的技术知识脉络的重塑和探究
|
Java Android开发 数据库管理
Android插件化开发基础之Java反射机制研究(1)
Android插件化开发基础之Java反射机制研究(1)
132 0
《认知颠覆》读书笔记之七
突然要你介绍一下自己,你准备怎么讲?
168 0
|
Android开发
《认知颠覆》读书笔记之二
认知是一种奇妙的东西,一起踏上深入之旅吧
155 0
|
架构师
带你读《软件架构理论与实践》之二:软件架构的概念
本书是上篇基础理论篇,重点介绍软件架构的基本理论和方法,内容包括软件架构的发展历史、软件架构的概念和建模方法、软件架构风格和模式、软件架构描述语言,以及软件架构与敏捷开发之间的关系等。