在现代软件开发中,构建可扩展、可管理和可升级的应用程序是一项关键任务。为了满足这一需求,Java的OSGi(Open Service Gateway Initiative)框架提供了一种模块化的解决方案。本文将介绍OSGi框架的概念和特点,并通过一个代码示例来演示如何使用OSGi构建一个模块化的Java应用程序。
Java的OSGi(Open Service Gateway Initiative)框架提供了一种模块化的解决方案
这两天在研究Kotlin时,看到Kotlin和和OSGi的完美融合,就有必要介绍下OSGi。 OSGi是什么 OSGi是Open Services Gateway initiative的缩写,叫做开放服务网关协议。我们说到OSGi时,根据上下文不同,通常可能指OSGi联盟、OSGi标准或者OSGi框架。OSGi联盟成立于1999年,当时是为了建立一套将可管理的服务(Managed Service)通过网络交付到设备中的开放标准。可见,OSGi最开始面向的是从嵌入式和移动设备,这也不难理解OSGi名称的由来了
我们学习和开发过程中用到Java的地方,就有Eclipse的影子,Eclipse平台是目前流行的Java开发工具之一,很重要的一个原因是它开源免费;有人会说我用的是MyEclipse,它的功能更强大,其实MyEclipse是Eclipse的升级版,使用更方便但它是收费的,不管它免费还是收费,它们都极大的方便了我们的开发;Eclipse之所以能升级为MyEclipse,是因为Eclipse平台是建立在OSGi框架之上,插件式开发,每个开发者都可以实现自己的插件,是不是很牛啊,可以做编程工具了,下面学习一下Ec
开发web的两种方式 基于OSGI开发B/S应用有两种方式: 1)在OSGI框架中嵌入Http服务器 2)在Servlet容器中嵌入OSGI框架 Http服务器嵌入到OSGI框架环境配置
OSGi中的每个模块(称为Bundle)与普通的Java类库区别并不太大,两者一般都以JAR格式进行 封装[2],并且内部存储的都是Java的Package和Class。但是一个Bundle可以声明它所依赖的Package(通 过Import-Package描述),也可以声明它允许导出发布的Package(通过Export-Package描述)。在OSGi 里面,Bundle之间的依赖关系从传统的上层模块依赖底层模块转变为平级模块之间的依赖,而且类库的可见性能得到非常精确的控制,一个模块里只有被Export过的Package才可能被外界访问,其他的 Package和Class将会被隐藏起来。以上这些静态的模块化特性原本也是OSGi的核心需求之一,不过它和后来出现的Java的模块化系统互相重叠了,所以OSGi现在着重向动态模块化系统的方向发展。
前言: 为了方便灵活性,ONOS采取的是一种模块化结构,一方面能灵活地组织各种模块,容易让开发者扩展出新的模块,同时通过隔离令系统的模块各司其职而不会互相干扰。实际上ONOS是由多个子系统组成,本文将对ONOS中几个比较有代表性的子系统进行介绍。 基础——OSGi: ONOS由多个模块组合而成,实际上ONOS是基于OSGi bundles实现的。OSGi是一个基于插件式的软件架构,包含OSGi框架和插件。这种插件被称之为Bundle,Bundle可以被动态地加载和卸载,动态升级也就可以被实现了(有点像Erl
当前product是以solution的方式进行售卖,但是随着公司业务规模的快速夸张,随之而来的是新客户的产品开发,老客户的产品维护,升级以及修改bug,团队的效能明显下降,为了解决此类问题,必须站在公司战略的统一高度来重构系统。
对于今天的大型分布式系统OSGi提供了一个和小型、嵌入式应用一样的模块化的架构来减少系统复杂性。从内部和现成的模块来构建系统可以显著的减少开发和维护的成本。OSGi编程模型就是实现组件为基础的系统。
上篇我们简单地和OpenDaylight控制器打了个照面,后续篇章会逐步介绍OpenDaylight的系统架构和实现机制。不过呢,在揭开其面纱之前熟悉它的背景技术是很有必要的。不然讨论OpenDaylight时我们就会丈二和尚——摸不着头脑。 那么OpenDaylight控制器使用了哪些核心技术?它的工程技术架构又是怎样的呢? 万殊一辙。OpenDaylight的工程技术架构其实就像一座高楼大厦的构造,核心技术如同风靡建筑行业的装配式技术。 OSGI---OpenDaylight的“装配式技术 【画外音】
OSGI全称为Open Service Gateway Initiative(开放服务网关规范),有两个层面的含义,一方面它指OSGi Alliance组织;另一方面指该组织制定的一个基于Java语言的服务(业务)规范——OSGi服务平台(Service Platform)。
什么是OSGI OSGi(Open Service Gateway Initiative)有双重含义。一方面它指OSGi Alliance组织;另一方面指该组织制定的一个基于Java语言的服务(业务)规范——OSGi服务平台(Service Platform)。 OSGi Alliance是一个由Sun Microsystems、IBM、爱立信等于1999年3月成立的开放的标准化组织, 最初名为Connected Alliance。该组织及其标准原本主要目的在于使服务提供商通过住宅网关,为各种家庭智能设备提
项目简介:积木报表,免费的企业级WEB报表工具。专注于“专业、 易用 、优质”的报表设计器和大屏设计器。支持打印设计、数据报表、图形报表、大屏设计器。
在现有软件开发中,业务越来越复杂,代码规模越来越大,依赖的人力也越来越多。为了降低系统模块内部耦合度,减少开发难度,也为了能够支持多团队的并行开发,插件式开发架构变得愈加流行,尤其是在桌面软件、移动端应用中。对于后端开发,微服务的形式也越来越流行,但是据笔者看来,微服务的很多设计思路,和插件式开发架构的设计理念也有相近之处。Eclipse, Visual Studio, VSCode等,都是插件式开发架构的典型案例。
最近阅读了一本架构方面的入门图书叫《从零开始学架构:照着做,你也能成为架构师》,部分内容比较不错,先做书摘总结,以便加深印象与未来回顾学习。
该文介绍了类设计中的SOLID原则,包括单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则和依赖反转原则。同时介绍了在具体实现中如何应用这些原则,包括物理分层、发布接口、依赖抽象、接口实现、模块化和代码重用等。
做为一名无证驾驶ODL这辆SDN战车3年多的老司机,在基于ODL进行商用SDN控制器的研发过程中,总结了一些经验和教训,也有一些心得体会,借这个机会与大家一起交流分享。以下虽非真理和圣经,但确确实实来源于项目实践和个人的点滴思考。在今后的一段时间里,我将会带着我的故事和大家一起学习ODL,帮助大家更好的理解和掌握ODL。
ODL项目成立于2013年4月,是由Linux基金会管理管理的开源SDN项目。项目的目的是提供一个开放的,全功能的,厂商中立的SDN解决方案。目前ODL有超过40个公司作为成员,例如Cisco,IBM,Huawei等。乐观人士认为:ODL对networking的意义就像Linux对computing的意义一样。
CTK Plugin Framework设计参考了OSGi(Open Service Gateway Initiative,开放服务网关协议)(Java的动态组件系统),并提供了一种能让应用程序(动态地)由许多不同的可重用组件组成的开发模型,允许通过服务进行通信。
在这篇文章中,我们将挑选一些Liferay DXP的新功能,并对它们进行详细的探讨。
1. 简介 本次我们从开始设计到最终完成一个应用的开发,主要设计datastore和RPC定义和实现。Opendaylight 开发使用了OSGi框架,OSGi框架的好处在于程序设计模块化,实现紧聚合和松耦合。 Apache Karaf 是一个OSGi的容器,它可以支持部署新的应用。在OSGi里面一个bundle可能会依赖于其他的bundle。这里可能会出现一种情况,假如bundle A依赖与bundle B,bundle B 依赖于 bundle C,那么如果我们想解析bundle A,则必须解析bund
一般建议 parallel scavenge (JDK8默认GC),适用大部分场景。
目前以设备提供商为代表的OpenDaylight阵营目前发展势头正劲,而由斯坦福大学和加州大学伯克利分校SDN先驱创立的非营利性组织ON.Lab也紧锣密鼓地推出了自己的开源SDN操作系统——ONOS。此次打造的商业级的以用户为导向的ONOS开放网络操作系统是以服务提供商为首,并且得到了开放网络基金会ONF的鼎力支持,意欲与OpenDaylight一决高下。具体的性能究竟孰好孰坏还需要等待发布之后的评测,下面小编就从不同的方面比较一下这两个业界最知名的网络操作系统。 1. 驱动方式不同 ONOS白皮书中写道,
编者按:OpenDaylight两大技术特色:1.采用了OSGi框架;2.引入了SAL,而今天我们主要介绍服务抽象层(SAL)适配的南向协议之一OF协议模块。 OF协议模块启动与消息处理 OSGi框架
关于Servicemesh是什么,能做什么,此处不再进行赘述,相关文章已经非常之多。读者可以自行上网查阅。Servicemesh是一个比较新的名词,在2017年才逐步传播开来。之前主要集中于各种云服务的解决方案中使用。我们在开始阐述Servicemesh之前,先来系统地回顾下微服务的发展历程,其更有助于我们对Servicemesh的了解。以下会根据我实际的经验,以及一些方法论,来穿插推进论证整个发展历程。
通过本文你将知道: Maven Archetype的基本原理以及如何使用Maven Archetype生成适用于不同版本的ODL子项目。 本文将着重讲解cli命令开发,以及Carbon Release中新引入的Blueprint的一些基本知识。OpenDaylight Carbon Release中模块运行的大致流程以及对于api和impl的开发可以参考ODL碳版本模块开发及流程梳理还有ODL controller官方开发指南(它对DataStore的描述相当不错)。 如何将编写好的应用添加到一个正在运行的
一 ODL的诞生背景 随着互联网的普及,用户数量不断攀升,网络不堪重负。移动终端发展势如破竹,智能手机不断更新换代,各种手机软件层出不穷,手机控随时随地上网,导致流量需求与日俱增,负荷过度的网络无法满足用户需求。网络体系庞大,架构臃肿,不够灵活,不能适应不断涌现出的新业务需求,服务质量得不到保证。网络体系复杂,网络操作需要与其他IT操作的集成与协作,导致网络部署困难。网络更新麻烦,动手操作过多,网络管理员分身乏术。改良已经无法解决现有的网络问题,网络改革势在必行,于是SDN应运而生。 SDN是美国斯坦
有几种适用于Java的开源覆盖技术。在实现Eclipse插件EclEmma时,观察到它们都不是真正为集成而设计的。它们中的大多数特别适合特定工具(Ant任务,命令行,IDE插件),并且不提供允许在不同上下文中嵌入的文档化API。EMMA和Cobertura是最好的和广泛使用的两个开源工具。这两个工具都不再由原始作者积极维护,并且不支持当前的Java版本。由于缺乏回归测试,因此很难进行维护和添加功能。
上节,我们探讨了动态代理,在前几节中,我们多次提到了类加载器ClassLoader,本节就来详细讨论Java中的类加载机制与ClassLoader。 类加载器ClassLoader就是加载其他类的类,它负责将字节码文件加载到内存,创建Class对象。与之前介绍的反射和注解和动态代理一样,在大部分的应用编程中,我们不太需要自己实现ClassLoader。 不过,理解类加载的机制和过程,有助于我们更好的理解之前介绍的内容,更好的理解Java。在反射一节,我们介绍过Class的静态方法Class.forNa
有几种适用于Java的开源覆盖技术。在实现Eclipse插件EclEmma时,观察到它们都不是真正为集成而设计的。它们中的大多数特别适合特定工具(Ant任务,命令行,IDE插件),并且不提供允许在不同上下文中嵌入的文档化API。 EMMA和Cobertura是最好的和广泛使用的两个开源工具。这两个工具都不再由原始作者积极维护,并且不支持当前的Java版本。由于缺乏回归测试,因此很难进行维护和添加功能。
OSGI(Open Service Gateway Initiative) 是一个为 Java 平台设计的动态模块化系统框架。它提供了一种模块化管理应用程序功能的机制,使得开发者可以将应用程序拆分成独立的模块,这些模块可以动态地添加、移除或替换。每个模块都有自己的生命周期和依赖关系,可以独立地进行部署和升级。
区别于API模式,本质是一种服务接口规范定义权的转移,从服务提供者转移到服务消费者。
上一篇文章,我们介绍了微内核架构的概念、起源、拓扑结构,以及设计的关键问题。本篇将继续探讨微服务架构的更多细节。
²学习OSGi规范 R4.1,掌握OSGi核心概念; ²学习OSGi R4实现框架的实现机制,以更好的使用这些框架; ²学习基于Equinox开发OSGi Based的应用; ²扩展Equinox,更好的基于Equinox来开发各类应用; ²学习分布式OSGi; OSGi20094qh.pptx
服务编程 Akka Toolkit:JVM中分布性、容错事件驱动应用程序的运行时间; Apache Avro:数据序列化系统; Apache Curator:Apache ZooKeeper的Java库; Apache Karaf:在任何OSGi框架之上运行的OSGi运行时间; Apache Thrift:构建二进制协议的框架; Apache Zookeeper:流程管理集中式服务; Google Chubby:一种松耦合分布式系统锁服务; Linkedin Norbert:集
今天为大家推荐一些翻译整理的大数据相关的非常棒的学习资源,希望能给大家一些帮助。 服务编程Akka Toolkit:JVM中分布性、容错事件驱动应用程序的运行时间; Apache Avro:数据序列化
我选择放弃该方案,使用Servlet 3.0提供的热插拔来实现插件模式,只是需要重新加载应用上下文,因此,建议各位部署多实例节点,在升级服务时,采用灰度发布来降低影响。
作者:陌霖Java架构 链接:www.juejin.im/post/5be7bc195188255e9b618c93
导读:《架构设计》系列为极客时间李运华老师《从0开始学架构》课程笔记。本文为第十一部分。主要介绍了如何面向功能拆分架构,首先介绍了微内核架构的基本架构设计,以及几种常见架构的实现与特点。最后分享了微内核架构典型开源规则引擎 JBoss Drools。
转(http://blog.csdn.net/xinqidian2015/article/details/50537325)
模块化的规范 在Java中现在是没有一个模块化的概念的,或者说没有一个事实上的标准。就是如何组成一个模块,然后哪些模块是给内部使用,哪些模块是给外部使用的。 OSGI就可以解决上面的问题,应用程序可以像搭积木一样完成搭建,例如对于一个正在运行的系统,压根日志服务,但目前系统中没有提供日志服务的模块,那么可以直接开发出相应的日志服务模块,然后动态的加载到系统中,不需要重新启动服务,只需要动态的注册就可以,这样日志服务就可以使用了。 这是一个使用osgi的开源系统 ToyBricks(积木)(以下简称To
是 Java 类加载层次中最顶层的类加载器,负责加载 JDK 中的核心类库,如:rt.jar、resources.jar、charsets.jar 等
听阿里P10大佬毕玄找工作的经历,发现作为一名非计算机专业的生物系学生,写博客数次给他找工作带来了直接帮助。
每个成功的男人背后,都有一个伟大的女人;每个成功的产品后面都有一套强进的架构 ---- 题记
—.背景 谈论服务化框架的时候,我们首先先了解这些概念:SOA、ESB、OSGi、servicemix、微服务、Spring Boot SOA:面向服务架构,传统简单的网站系统采用MVC架构,随着系统需求不断的变化和业务不断的扩展,MVC显得很无力,MVC不断的变大,维护开发越来越困难,SOA解决的是MVC里面大而核心的功能,抽离出来做成服务提供给不断变化的业务使用。SOA提出多年,它仅仅是一个概念—一切皆服务,并不是一种技术的实现。 ESB:企业服务总线,是
[OSGI] Felix基本环境搭建及操作 : https://blog.csdn.net/hechaomax/article/details/42641643
如上图所示,假设写一个类A存储为A.java,通过javac A.java编译生成A.class,A.class中存储了各种描述A类的信息。
经常使用Qt Coding,无意中接触到CTK,也就因此查到了所谓的OSGi,其中OSGi架构中的“模块化”和“热插拔”看起来很厉害的样子,于是就打算研究一下,以此系列博客作为学习笔记。
JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化,下面我们就分别来看一下这五个过程。
领取专属 10元无门槛券
手把手带您无忧上云