WildFly评估之WildFly的模块化系统

news/2024/7/5 5:35:30

感谢朋友【吴杰】投递本文。

WildFly,前身是JBoss AS,从V8开始为区别于JBoss EAP,更名为WildFly。Wildfly 8主要具备如下特性:

  • Java EE7的参考实现(2013年7月止尚未得到Java EE7兼容认证)
  • 启动速度更快,占用内存更少
  • 模块化(JSR294)设计
  • 统一配置管理
  • 分布式domain管理

本文主要讨论一下WildFly 8的模块化系统。

WildFly之所以启动很快,模块化组件jboss-modules功不可没。作为OSGi和Jigsaw(JSR 294 http://jcp.org/en/jsr/detail?id=294)“夹击”之下的衍生物,与jboss-msc成为WildFly的全新内核。

jboss-modules解决什么问题

JBoss Modules就是解决传统的层级机制的ClassLoader所带来的Jar Hell问题:

(1)     JAR被加载后不使用导致资源浪费。

(2)     同名JAR包的不同版本混在导致依赖冲突。

JBoss Modules使所有的jar都打包成为模块,一个jar再也不会看到依赖中有版本冲突的类,或者加载到一个不需要加载的资源。同时,按需加载模块可以明显地提高大型应用的启动时间。

图 1 传统的ClassLoading vs. jboss-modules的ClassLoading

传统的ClassLoading vs. jboss-modules的ClassLoading

与Jigsaw(JSR 294)的关系

Jigsaw已经被延迟到Java SE 9。JBoss Modules会与JSR294兼容,如果Jigsaw项目能够稳定,并且成为OpenJDK的一部分,JBoss承诺将维护JBoss Modules的兼容性。

与OSGi的关系

个人认为是互补的关系,通过Jboss-modules进行模块化的应用服务器,使得OSGi的Bundle形式不再成为模块化的唯一方式,更加灵活。另外它更为小巧,没有OSGi的Sevice层,或者其他OSGI提供的更高层次的功能,它只做一件事情,就是模块化。

图 2 WildFly Architecture

WildFly Architecture

注:上图中的Subsystems没有列全,full-ha Profile的子系统如下图:

图 3 full-ha的子系统一览

full-ha的子系统一览

接下来简单与Oracle的Java EE 7的RI,GlassFish V4.0做一个简单的架构对比

图 4 GlassFish V4.0与WildFly 8的系统栈图

GlassFish V4.0与WildFly 8的系统栈图

笔者观点】GlassFish与WildFly在架构实现上最大区别在于模块系统的构成。

GlassFish的做法

采用OSGi的模块化作为GlassFish的模块化系统/基盘;用HK2替代了OSGi的服务层。

WildFly的做法

鉴于Jigsaw的难产,JBoss推出自己的模块化实现并作为WildFly的模块化系统/基盘;将JBoss MSC(Module Service Container)作为其服务容器。默认情况下将OSGi排除在WildFly系统栈之外(从8.0.0.Alpha3开始OSGi子系统已经从WildFly移除,今后将提供以add-on的形式与Wildfly集成。https://issues.jboss.org/browse/WFLY-1638),该点与GlassFish不同(GlassFish与OSGi运行时是紧耦合的)。

排除厂商利益因素,笔者更喜欢JBoss的设计,原因以下:

(1)     通过JBoss Modules将WildFly与OSGi解耦,并且兼容Jigsaw。设计上更为优雅,且更具远见。

(2)     OSGi在Java EE开发领域并没有被广泛接受(如下图,来自于zeroturnaround),离真正落地尚需时日。JBoss的设计理念更贴近开发人员。

图 5 2012年度Java标准的被接受度一览

2012年度Java标准的被接受度一览


文章转自 并发编程网-ifeve.com

http://lihuaxi.xjx100.cn/news/242260.html

相关文章

软件测试中的白盒测试是什么?

软件测试中的白盒测试是什么?软件测试培训需要学习的知识有很多,白盒测试就是其中的一种,白盒测试也叫结构测试或逻辑驱动测试。了解产品内部工作流程,通过试验可以检测出产品的内部活动是否按规定进行。 根据程序内部结构检测程序&#xff…

贺州学院计算机协会,2019年广西高等教育学会数学教学专业委员会年会暨学术交流会在贺州学院召开...

2019年12月27日至29日,由广西高等教育学会数学教学专业委员会主办、贺州学院数学与计算机学院承办的2019年广西高等教育学会数学教学专业委员会年会暨学术交流会在贺州学院召开。广西高等教育学会数学教学专业委员会理事长、南宁师范大学党委副书记侯代忠&#xff0…

对于正交频分复用的异构网络的理解

正交 来看百度百科的定义—— 物理中:运动的独立性,也可以用正交来解释。正交频分复用 来看百度百科的定义—— 将信道分成若干正交子信道,将高速数据信号转换成并行的低速子数据流,调制到在每个子信道上进行传输。正交信号可以通…

【Android 基础】Animation 动画介绍和实现

转载自:http://www.cnblogs.com/yc-755909659/p/4290114.html1.Animation 动画类型Android的animation由四种类型组成:XML中alph渐变透明度动画效果scale渐变尺寸伸缩动画效果translate画面转换位置移动动画效果rotate画面转移旋转动画效果JavaCode中Alp…

怎样找到适合自己的UI设计培训班

UI设计这个行业近几年有越来越多的人都比较关注,市面上的UI设计培训机构也越来越多,很多零基础同学都在寻找适合自己的UI设计培训机构,那么怎样找到适合自己的UI设计培训班呢?来 怎样找到适合自己的UI设计培训班? 一、看课程内容 UI设计行业…

《Python数据科学指南》——1.8 使用迭代器

本节书摘来自异步社区《Python数据科学指南》一书中的第1章,第1.8节,作者[印度] Gopi Subramanian ,方延风 刘丹 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.8 使用迭代器 毫无疑问,对于数据科学的程…

计算机考试批处理试题,2015计算机三级考试pc技术模拟试题及答案(八)

2015计算机三级考试pc技术模拟试题及答案(八)1.关于Windows 98中的网上邻居的相关叙,( )是错误的。A.通过网上邻居可以游览和使用网上的全部计算机资源B.通过网上邻居可以浏览网上的打印机C.通过网上邻居不可以浏览网上的打印机D.网上邻居位于桌面上参考答案&#…

软件测试的4W1H(第1-2课时)

1.Why(软件测试为什么会出现) • 通过测试可以发现软件缺陷,进而清除软件缺陷; • 软件中存在缺陷带来的损失是巨 大的——测试的必要性和重 要性。 测试是所有工程学科的基本组成单元,是软件开发的重要组成部分。 • 测试人员水平…