OSGi为什么重要:向模块化转移的主攻手
创始人
2024-03-27 04:11:47
0

【51CTO快译】本文为JavaLobby社区上的一篇文章。OSGi是一个Java企业级开源框架,近年来得到了很多方面的关注。看到很多博客文章都在询问OSGi为什么重要,OSGi的推广者Patrick Paulin写下了此文。如果你同很多人一样,也在环顾着OSGi使用量的增加,同时想知道它对你来说是否重要,那么请看他的答案。

51CTO编辑推荐:OSGi入门与实践全攻略

Patrick:我要以一个非常大胆的说法开始,即OSGi是在过去20年间兴起的最重要的技术之一。听起来虽然不算什么,但OSGi确实是一种革命性的技术。事实上,OSGi非常重要,因为它代表了长期软件开发发展中下一个合理的步骤。

OSGi的开端

为了能够让你理解我的意思,让我们回到20到30年前。那时候,面向对象语言刚开始流行,我们之所以采用面向对象语言的主要原因之一是,它能够让我们隐藏很多代码的实现细节。

从过程式语言到面向对象语言的转变,让我们能够开发类,定义访问权限,共享公共方法。

过程式语言到面向对象

其结果是,我们的大部分代码在其类外是不可见的。这对我们开发软件的方式产生了深刻的影响。通过接受这种明显的可见度限制,我们获得了极大的使用自由。我们可以自由地重用类,而不需要知道它们的实现细节。我们可以自由地重构我们的代码,而不必担心类的使用者。

你能想像如果开发软件而没有信息隐藏是多么痛苦吗?

OSGi的优势

现在设想如果不仅可以隐藏类的方法,还可以隐藏JAR中的整个类集,那将会是一种怎样的情形呢。设想JAR可以定义类运作的公共规则,这些规则将被应用于开发和运行时。设想我们可以获得信息隐藏的所有的优点(管理复杂性,代码重用,易测性,重构等)。

OSGi让这一切成为了可能。它提供了标准的Java软件包,作为一个新的信息隐藏单元。当我们的代码是运行在一个OSGi框架内时,JAR中的每个包对于使用者来说都可以可见或隐藏。

JAR包

就如同类可以用一组小的公共方法来描述其与使用者之间的规则,一个模块化的Jar文件(OSGi术语称bundle)用一组小的导出包来描述公共规则。大部分代码都隐藏在内部包中,对于其它JAR并不可见。

设想可以重命名类、分割或合并类、把类从一个包转移到另一个包、把整个包从一个JAR移动到另一个JAR,所有这些操作都不必担心会影响到JAR的使用者。这么多种类型的重构操作现在都不必再担心会出问题。基于包层次的信息隐藏给予我们施行重构的信心,让我们能够及时迎合用户的需求。

相关阅读:JAR文件包及jar命令详解

模块化不可避免

OSGi如果想获得成功,基于JAR层次的信息隐藏是不可避免的。在今后5到10年,我们将考虑是否有可能不采用这种机制。

目前,OSGi是我们不得不完成这一使命的唯一工具。幸运的是,OSGi是一个考虑周全、测试良好、基于标准的解决方案。我想不出任何开发OSGi替代品的理由(除了可能会修改它的名字)。OSGi就在这里,它工作良好,让我们使用它吧。

OSGi时代来临

Steve McConnell曾说过一句非常漂亮的话,这句活真正接触到了OSGi正努力实现的核心目标。

在Code Complete中,他写道:

“通过增加聚集粒度,软件开发已经在很大程度上取得了进步。”

因为这种聚集的粒度是如此重要,从非模块化转移到模块化,同从过程化转移到面向对象化同样重要。20年来,我们一直局限于使用类作为提取单元,现在正是向模块转移的时候,OSGi时代即将来临。

原文:Why is OSGi important by Patrick Paulin

【编辑推荐】

  1. 初探Java企业级开源框架OSGi
  2. 基于OSGi和Spring开发Web应用
  3. OSGi和Java企业级开发的未来方向
  4. 专题:Java基础教程

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
P2P的自白|我不生产内容,我... 现在一提起P2P,人们就会联想到正在被有关部门“围剿”的互联网理财服务。×租宝事件使得劳...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...