WildFly的模块化系统

简介: WildFly,前身是JBoss AS,从V8开始为区别于JBoss EAP,更名为WildFly。Wildfly 8主要具备如下特性:Java EE7的参考实现(2013年7月止尚未得到Java EE7兼容认证)启动速度更快,占用内存更少模块化(JSR294)设计统一配置管理分布式domain管理

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再也不会看到依赖中有版本冲突的类,或者加载到一个不需要加载的资源。同时,按需加载模块可以明显地提高大型应用的启动时间。

image.png

与Jigsaw(JSR 294)的关系

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


与OSGi的关系

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

image.png

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

image.png

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

image.png

笔者观点】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的设计理念更贴近开发人员。

image.png

相关文章
|
机器学习/深度学习 算法 计算机视觉
作物叶片病害识别系统
作物叶片病害识别系统
|
Kubernetes Cloud Native 网络协议
云原生下的开发测试实践
近日,阿里巴巴旗下企业级一站式DevOps平台——阿里云·云效正式开启公测,为了让广大开发者更好地了解“新云效”,《云效说码》栏目特别策划了《为云研发而生 解密云效公测版专场》系列分享,邀请了多位阿里巴巴技术专家通过视频直播的方式与大家在线交流,分享云效产品的亮点和技术优势。本系列分享共有五节内容,本文整理自阿里巴巴技术专家林帆(金戟)和郑云龙(砧木)的视频分享《云原生下的开发测试》。
1826 82
云原生下的开发测试实践
|
弹性计算 安全 Linux
Alibaba Cloud Linux镜像操作系统详解(全方位解析)
Alibaba Cloud Linux是阿里云推出的Linux发行版,Alibaba Cloud Linux是基于龙蜥社区OpenAnolis龙蜥操作系统Anolis OS。Alibaba Cloud Linux针对云服务器ECS进行了深度优化,CentOS停止维护完全可以使用Alibaba Cloud Linux代替,Alibaba Cloud Linux兼容CentOS/RHEL生态,CentOS/RHEL中的大多数软件无需或仅需少量改造即可在Alibaba Cloud Linux中运行。
5235 0
Alibaba Cloud Linux镜像操作系统详解(全方位解析)
|
Web App开发 编解码 算法
发现一个非常好用的RTC(实时音视频通信)方案,做直播和视频通话都很牛
HaaS RTC是阿里云IoT联合视频云开发的IoT设备端上的实时通讯服务,主要面向直播,音视频通话等各种场景。
3031 20
发现一个非常好用的RTC(实时音视频通信)方案,做直播和视频通话都很牛
|
数据采集 存储 数据处理
数据治理:如何制定数据标准与规范
在当今这个数据驱动的时代,数据已成为企业最宝贵的资产之一。然而,随着数据量的爆炸性增长和数据来源的多样化,如何有效地管理和利用这些数据成为了企业面临的重大挑战。数据治理作为确保数据质量、安全性、合规性和可访问性的关键过程,其核心在于制定并执行一套科学、合理的数据标准与规范。本文将探讨如何制定数据标准与规范,以推动企业的数据治理实践。
2079 3
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python实现深度学习模型:智能数据隐私保护
使用Python实现深度学习模型:智能数据隐私保护 【10月更文挑战第3天】
622 0
|
SQL 存储 数据挖掘
SQL Server 日期格式查询详解
SQL Server 日期格式查询详解
1024 2
|
Kubernetes 监控 API
【K8S系列】深入解析滚动升级
【K8S系列】深入解析滚动升级
1554 0
|
数据可视化 算法 大数据
深入解析高斯过程:数学理论、重要概念和直观可视化全解
这篇文章探讨了高斯过程作为解决小数据问题的工具,介绍了多元高斯分布的基础和其边缘及条件分布的性质。文章通过线性回归与维度诅咒的问题引出高斯过程,展示如何使用高斯过程克服参数爆炸的问题。作者通过数学公式和可视化解释了高斯过程的理论,并使用Python的GPy库展示了在一维和多维数据上的高斯过程回归应用。高斯过程在数据稀疏时提供了一种有效的方法,但计算成本限制了其在大数据集上的应用。
1129 1
|
Kubernetes 负载均衡 网络协议
k8s学习--负载均衡器matelLB的详细解释与安装
k8s学习--负载均衡器matelLB的详细解释与安装
1134 0