OSGi vs Jigsaw:Kirk Knoernschild访谈
Kirk Knoernschild是OSGi领域的专家,DZone最近有机会对他做了一次关于2012年模块开发思想的访谈,kirk最近出了一本书《java应用架构:使用osgi模块化模式》,这本书介绍了18中模式,帮助你开发模块化的软件。
问题:模块化为何很重要,有什么好处?
Kirk:模块化的软件很容易扩展,重用、维护和使用,也很容易理解修改的影响范围。所以,当你修改一些有大量依赖的代码的时候,你会非常确切的知道会发生什么。从大的方面说,模块化能够帮助你快速响应需求,因为你会很容易知道变更会有哪些影响。但是模块化开发并不是当前软件设计的主流,你还是可以按照以前的方式设计软件,但是你也应该抬头看看早晨即将升起的太阳,我们需要知道未来将要发生什么,很明显,模块化开发将是未来软件发展的方向。
原来的基于分层的软件架构,即开发一个视图层,一个业务层,一个接口层等,然后打包发布为一个软件。这种架构将不再适合当今的软件环境,因为我们面临的是一个多渠道的世界,一个软件将不再仅仅采用一种方式使用,它会有WEB界面,也会有手机界面,也会有平板电脑的界面等等。这个对软件的模块的可复用提出了很大的要求。模块化是一个未来架构模型,我们必须使用它来开发软件。现在主流的软件开发商已经认识到这一点,OpenJDK也知道这一点,企业开发人员也需要认识这一点。
模块化开发最典型的例子就是IBM提供的Eclipse平台,其中的插件架构完全基于模块化开发,另外一个比较新的例子也是IBM提供的,即Liberty Profile,他很酷,因为其实现了本地环境对应用提供合适的响应的能力。他们大部分都是基于OSGi框架实现的。
问题:
OSGi是一个实现模块化的框架,另外一个就是java 8即将提供的Jigsaw,还有其他的方式实现模块化么?
kirk:我觉得有几种方式实现模块化并不重要,重要的是他们都是互相兼容的。我关注的是,即使你不使用其中任何一种框架,你开发的模块也能运行。我推荐的开发模式能够帮助你快速迁移到osgi或者jigsaw.
问题:你自己对osgi和Jigsaw有什么看法?
kirk:osgi最大的优势就是它存在很久了,且是一个已经被证明可用的框架,成熟的框架。而jigsaw却还在开发阶段,将在2013年随着Java8发布,但是jigsaw也有一个优点,就是他是JAVA平台支持的模块化方法,伴随JAVA SE发布,不用安装新的包。
但是最重要的还是两者能够兼容,你开发的模块能够在两个框架中运行。
问题:现在osgi到底有多流行,当jigsaw发布后,会有什么变化?
Kirk:很好的问题,现在几乎每个软件开发人员都是osgi的消费者,因为几乎所有的IDE都是用osgi来构建。目前主流的平台提供者包括IBM,ORACLE,RED HAT等都是用OSGi来构建平台。但是有趣的是,目前企业软件开发这块还没有被OSGi渗透。至少,OSGi还没有成为主流软件设计方式,一些人抱怨其太复杂,或许因为设计一个模块化的软件真的比较难吧,确实是。
总之,我不能预研未来会发生什么。OSGi是一个成熟的框架,而Jigsaw将会成为标准。接下来的数年在java平台上将会有一个有趣的竞争,很多事情将会发生变化。
分享到:
相关推荐
OSGi and Equinox:Creating Highly Modular Java Systems
1. OSGi Revealed 2. Mastering Modularity 3. Learning Lifecycle 4. Studying Services 5. Delving Deeper into Modularity 6. Moving Toward Bundles 7. Managing Bundles and Applications 8. Testing ...
OSGi与Equinox:创建高度模块化的Java系统》分为四个部分。第一部分主要介绍了OSGi和Equinox,以及OSGi标准的Eclipse实现;第二部分采用非正式教程的方式教给读者如何从零开始构建真实的Toast应用,针对每一个步骤都...
osig与spring:springDM开发环境配置,eclipse配置osgi开发环境,及命令
这是来自cnblogs博主 静默虚空 的文章 ,为方便离线查看,转存为了pdf
这是来自cnblogs博主 静默虚空 的文章 ,为方便离线查看,转存为了pdf
这是来自cnblogs博主 静默虚空 的文章 ,为方便离线查看,转存为了pdf
简单的OSGi启动器 我讨厌复杂的发射器。 我只想运行OSGi项目,而无需进行配置和部署。 该项目提供了一个maven插件,该插件允许从OSGi捆绑包maven项目创建可执行的jar文件。 只需将所需的包指定为项目的运行时依赖...
cayenne-osgi-示例 一个简单的 OSGi 包,展示了如何在 OSGi 下使用 。 先决条件 Cayenne 4.0.M2 或更新。 一个 OSGi 容器。 (此示例的所有测试均使用 4.2.1 完成) 配置 OSGi 容器 安装一堆包。 您可以从 Maven ...
凡人的OSGi 这是我在 NA 2011,EU 2012和EU 2014上的“ OSGi的凡人”演示文稿的代码。 这是使用OSGi Declarative Services从头开始构建的最小的独立RESTful服务器,旨在证明OSGi不仅适用于超人大师。 该示例演示了...
org.jbundle.util.osgi.wrapped.org.apache.http.client-4.1.2.jar
深入理解OSGi:Equinox原理、应用与最佳实践.pdfOSGi应用开发
java运行依赖jar包
blueprint-osgi-bundle
OSGi服务定义该存储库定义了我发现有用的OSGi服务,并且在多个项目中定义了类似的服务。 该项目中没有应用程序,只有服务定义。 服务定义已部署到Maven Central。项目状况声纳云该项目中定义的服务no.priv.bang....
java web OSGi (Open Services Gateway Initiative) provides a programming model for service components. Programming based on OSGi can bring many advantages, such as modular, standardized, service ...
OSGi框架 使用OSGi框架的简单生产者-消费者项目 OSGi_service_publisher和OSGi_service_subscriber是单独的项目。 您应该单独运行它们
osgi三本教程:osgi进阶,osgi原理与最佳实践,osgi实战