模块化是OSGi框架的主要部分之一,说到模块化,主要还是指bundle,以及对bundle之间关系的处理。
bundle的主要组成部分就是类(class)文件,class文件是bundle的可执行部分。在java中,类文件被组织到包里,每个包都有唯一的名字。
限制类仅对本地访问(私有bundle)是最简单的解决方法。
共享类使得bundle包含一些给其他bundle的库。可以依赖本地功能(或是根据需要下载)使得bundle可以更灵活和更小巧,从这个角度来看,
共享类是最好的解决。
然而,共享类意味着多个bundle可以提供同一个类,潜在的导致不同bundle中同一个类的版本不兼容问题。一个相关的问题就是对其他bundle的依赖。同样也有可能不同套的bundle使用同一个类,但需要该类的不同版本。OSGi用严格的规范和确定的方式来处理所有这些问题。
每个bundle都可以输入输出包(packages)。输出意味着这个包(一系列类)可以被其他的bundle使用。输入意味着需要使用的这个包是来自其他bundle的。如果多bundles同时输出相同的包(可能是不同的版本),则框架将为每个输入该包的bundle选择一个合适版本。
一个输出的package总是有唯一的版本。而输入者可以指定一个可以接受的版本范围。Framework尽力最小化输出的数量,但它支持同一个类的多版本的多类空间可以在同一时间使用。为了防止冲突,Framework要确保bundle注意获取class cast Exception.<o:p></o:p><o:p>
</o:p>
如果bundle输出一个java包,后来这个bundle被卸载了,OSGi Framework确保输入者都重起,以便它们能够和新的输出包绑定。这整个过程对bundle而言是透明的,因为是在它们停止的时候进行的。<o:p></o:p>
在JVM中为多个独立的bundle管理java类导入是很重要的任务。这个复杂领域里不同厂家的依从关系是由特定的小细节来完成的,这是OSGi Framework在所有情况下必须要做的。<o:p></o:p>
分享到:
相关推荐
OSGI是一种模块化系统,允许动态地部署、升级和卸载Java应用程序的组件,而Equinox是Eclipse基金会提供的一个OSGI实现。ServletBridge则是让OSGI环境与Servlet容器(如Tomcat)协同工作的一种工具。 描述中虽然没有...
这篇笔记可能探讨了如何将Spring的功能与OSGi的模块化优势相结合,以实现更灵活、可扩展的应用。 由于描述中没有提供具体信息,我们可以基于标题来推测笔记可能涉及的内容: 1. **OSGi简介**:笔记可能首先介绍了...
OSGi是一种Java模块化系统,它允许开发者将应用程序拆分成独立的、可热插拔的模块,每个模块称为一个Bundle。SpringDM提供了一种在OSGi容器中使用Spring IoC(Inversion of Control)和AOP(Aspect-Oriented ...
OSGi(Open Service Gateway Initiative)是一种Java模块化系统,允许动态地发现、加载和卸载服务。SpringDM(Spring Dynamic Modules)是Spring框架对OSGi的支持,它简化了在OSGi环境中开发和管理应用程序的过程。 ...
在SpringDM(Spring Dynamic Modules)框架中,OSGi(Open Service Gateway Initiative)服务注册与引用是核心功能之一,它使得模块化系统中的组件能够互相发现并交互。本篇笔记将探讨如何在OSGi环境中注册服务以及...
OSGi是一种Java模块化系统,它允许开发人员创建可独立更新和依赖管理的模块,极大地提高了软件的可维护性和可扩展性。以下是对这一主题的详细分析: 1. **OSGi概述** OSGi起源于20世纪90年代末,最初是为了解决...
在IT领域,OSGi是一种模块化系统和Java服务平台,它提供了一种动态管理软件组件的能力。本文将深入探讨OSGi的基本概念、架构以及如何使用它来构建可扩展和灵活的Java应用程序。 首先,我们需要了解OSGi的核心概念...
Apache Felix是一个流行的开源实现,遵循Java企业版(Java EE)中的服务组件运行时(OSGi)规范,用于创建模块化应用。在这个项目中,开发者可能在学习如何将应用分解为可独立更新和管理的模块。 描述中提到的链接...
Spring DM是Spring框架在OSGi(Open Service Gateway Initiative)环境下的扩展,它允许在模块化环境中管理Spring应用程序。 首先,让我们了解什么是Fragment Bundle。在OSGi框架中,Bundle是基本的部署单元,类似...
OSGI(Open Services Gateway Initiative)是一种Java模块化系统,它允许开发者将应用程序分解为独立的模块,称为bundle,每个bundle包含自己的类加载器和资源。这些bundle可以通过动态安装、启动、停止、更新和卸载...
OSGi(Open Service Gateway Initiative)是一种Java平台上的模块化系统和应用编程框架,用于构建可动态部署、管理和更新的模块化应用程序和服务。Karaf则是一个基于OSGi的容器,提供了丰富的功能和命令行接口,使得...
读书笔记:《Java应用架构设计模块化模式与OSGi》源代码
在本篇OSGi学习笔记中,我们将深入探讨OSGi(Open Service Gateway Initiative)这一模块化系统,特别是关于服务方面的知识。OSGi是一个Java平台上的动态模块化系统,它允许开发者创建可热部署、互相依赖的模块,...
OSGi(Open Services Gateway Initiative)是一种模块化系统和Java服务框架,它允许开发人员创建可独立部署、可热更新和可交互操作的模块化应用程序。本文将深入介绍OSGi的基本概念,包括其与J2EE的对比,以及模块...
通过OSGi框架,开发者能够创建具有高度模块化和动态化的Java系统,这些系统可以灵活地进行服务的注册、发现和升级。 OSGi Alliance成员共同开发并免费提供规范,但兼容性程序只对成员开放。目前OSGi Alliance有12个...
10. **运行时模型(Runtime Model)**:Eclipse插件在运行时以OSGi模块的形式存在,理解OSGi服务的概念和运行时模型对于深入插件开发至关重要。 11. **调试(Debugging)**:Eclipse作为强大的IDE,其插件开发也...
Eclipse基于OSGi框架,每个插件都是一个独立的模块,通过声明依赖关系与其他插件协同工作。在开始开发之前,你需要安装Eclipse IDE并配置相应的插件开发环境,这通常包括安装Plugin Development Environment (PDE)...
每个Eclipse插件都是一个独立的OSGi模块,可以导入和导出服务,确保运行时的动态性和模块化。 第一章通常会介绍Eclipse插件开发环境的搭建,包括安装Eclipse IDE for RCP and RAP Developers、配置插件开发工具PDE...
OSGi(Open Service Gateway Initiative)是一个Java模块化系统,它允许开发人员将应用程序分解为独立的模块或服务,这些模块可以独立地安装、升级、启动和停止,而不会影响其他模块。这一特性在大型企业级应用和...