Java模块化应用:jlink构建自定义运行时与模块粒度解析

java模块化应用:jlink构建自定义运行时与模块粒度解析

在使用`jlink`工具构建Java自定义运行时镜像时,模块系统默认以整个模块为单位进行添加,而非按需选择特定包。这种设计确保了运行时配置的可靠性,避免了因缺失依赖而导致的运行时错误。对于追求极致镜像大小优化的场景,可以考虑利用GraalVM Native Image等AOT编译技术,通过“摇树”(tree-shaking)机制实现更细粒度的代码剪裁。

理解Java模块系统与jlink

Java模块系统(Jigsaw项目)旨在提高应用程序的可靠性、安全性、性能和可维护性。它将JDK本身以及应用程序分解为离散的模块,每个模块明确声明其依赖关系和导出的API。jlink工具是JDK提供的一个强大功能,允许开发者根据应用程序的需求,创建只包含所需模块的自定义运行时镜像。这对于部署小型、自包含的Java应用程序尤其有用,因为它能显著减小部署包的大小。

例如,为一个非模块化的Spring Boot应用创建自定义运行时,可能需要添加java.desktop模块,即使应用本身并非桌面应用:

jlink --module-path $JAVA_HOME/jmods --add-modules java.desktop --output mycustomrt

这条命令会创建一个名为mycustomrt的运行时镜像,其中包含了java.desktop模块及其所有传递性依赖。

立即学习“Java免费学习笔记(深入)”;

模块添加的粒度:为什么是整个模块?

在Java模块系统中,当通过–add-modules选项添加一个模块时,如java.desktop,系统会包含该模块的全部内容,包括其声明导出的所有包。开发者可能会注意到,像java.desktop这样的模块包含大量与桌面UI、音频等相关的包(如java.awt、javax.swing、javax.sound等),而这些包对于一个纯后端或命令行应用来说是完全不必要的。

九歌 九歌

九歌–人工智能诗歌写作系统

九歌 322 查看详情 九歌

核心原因在于模块系统的“可靠配置”原则。 Java模块系统设计的目标之一是提供一个可靠且一致的运行时环境。如果允许开发者随意排除模块中的特定包,将可能导致以下问题:

运行时错误: 模块的内部实现或其依赖的其它模块可能在运行时需要某个被错误排除的包。在编译时或链接时,这种细粒度的排除很难被精确检测,从而在运行时抛出ClassNotFoundException或NoClassDefFoundError。打破模块封装性 模块的module-info.java文件明确声明了它导出的所有包。允许部分导出或排除,会使得模块的边界模糊,破坏其封装性和可预测性。复杂性增加: 管理模块内部的包级别依赖和排除规则将极大地增加模块系统的复杂性,使其难以理解和使用。

因此,为了确保模块系统提供的可靠性保证,jlink在添加模块时,始终以整个模块为单位进行操作。这意味着一旦一个模块被包含,其所有导出的包及其传递性依赖都会被纳入运行时镜像中。

进一步优化镜像大小的策略

尽管jlink在模块层面进行操作,但对于追求极致镜像大小的场景,仍有其他高级优化手段:

精确选择模块: 在使用jlink时,最直接的优化是只添加应用程序真正需要的最小模块集。这通常需要对应用程序的依赖进行深入分析。对于非模块化应用,可以通过工具(如jdeps)来分析其类路径依赖,从而推断出所需的JDK模块。GraalVM Native Image: 这是目前实现Java应用极致瘦身最有效的方案之一。GraalVM Native Image是一种 ahead-of-time (AOT) 编译器,可以将Java应用程序编译成独立的本地可执行文件。其核心优化机制包括:“摇树”(Tree-shaking): 在编译阶段,Native Image会进行深度分析,只包含应用程序实际执行路径中用到的类、方法和字段,从而排除所有未使用的代码。这比jlink的模块级别剪裁更为精细,能够达到包甚至类/方法级别的优化。静态链接: 生成的本地可执行文件通常不依赖外部JVM,而是将运行时组件静态链接到可执行文件中,进一步减小部署体积并提高启动速度。

通过GraalVM Native Image,即使是像java.desktop这样庞大的模块,如果应用程序只使用了其中极少数的类(例如,仅仅是为了某个特定的配置或系统属性查询,而不是完整的UI框架),Native Image也能智能地只包含这些被实际使用的部分,从而大幅度减小最终可执行文件的大小。

总结

Java模块系统通过jlink工具提供了构建自定义运行时镜像的能力,但其模块添加的粒度是整个模块,而非细化到包级别。这一设计决策是为了维护模块系统的可靠性和一致性,避免潜在的运行时错误。对于希望进一步减小应用部署体积的开发者,除了精确选择jlink模块外,更高级的解决方案是探索像GraalVM Native Image这样的AOT编译技术,它能够通过“摇树”等机制实现更深层次的代码优化,从而生成更小、启动更快的本地可执行文件。

以上就是Java模块化应用:jlink构建自定义运行时与模块粒度解析的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1031616.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月2日 02:36:37
下一篇 2025年12月2日 02:36:58

相关推荐

  • Solana(Sol)价格在关键$ 145电阻区的跌跌撞撞,可以预先进行极端波动

    索拉纳(solana)在过去的24小时内遇到了一些挣扎,下降了7%,目前的交易价格为145美元。但是,要注意的一件事是,这种下降远非solana独有的,因为几乎所有前100个加密货币(除了一个)都在此日期经历了下降。 在过去的24小时内,Solana(Sol)遇到了一些挣扎,下降了7%,目前的交易价…

    2025年12月8日
    000
  • 币圈APP下载排名 币圈虚拟货币app前十名下载地址汇总

    在瞬息万变的数字货币市场中,选择一款安全、便捷、功能强大的App至关重要。它们不仅是您进入区块链世界的钥匙,更是您进行交易、管理资产、获取资讯的重要工具。我们深知您在众多App中选择的困惑,因此,我们精心挑选了币圈内公认的、用户体验极佳的前十名虚拟货币App,并附上官方下载地址,助您轻松开启数字资产…

    2025年12月8日 好文分享
    000
  • 币币交易所有哪些?数字货币交易所APP前十名汇总

    在数字货币投资日益普及的今天,选择一个安全、可靠、易用的交易所APP至关重要。然而,面对市场上琳琅满目的选择,投资者往往感到无所适从。为了帮助大家更好地进行决策,我们精心整理了2024年最新的数字货币交易所APP前十名榜单,并对每个APP进行了简要介绍,希望能为您的投资之路提供参考。 请注意,数字货…

    2025年12月8日 好文分享
    000
  • HODLX Guest帖子 – 作为Web 3.0创始人避开SEC雷达的指南

    您是否知道web 3.0创始人的一个失误可以将证券交易委员会(sec)击倒公司的家门口? Ejiofor Francis的文章“避免SEC作为Web 3.0创始人的强烈审查的4种方法”为Web 3.0创始人提供了有价值的建议,以浏览快速的数字资产域中证券交易委员会(SEC)法规的复杂性。 Ejiof…

    2025年12月8日
    000
  • UNI继续领导分散的交易所

    尽管竞争激烈,但其一致的升级和强大的流动性池有助于保持相关性。 加密货币的价格每天可能会大幅上涨或下降,试图预测价格变动可能有风险。最好投资于您理解和相信的加密货币,并为损益的可能性做好准备。此外,重要的是要注意,加密货币是一种挥发性资产类别,任何预测价格变动的尝试都是投机性的。 加密货币的价格,尤…

    2025年12月8日
    000
  • 现在购买的最好的加密货币:发现真实用例将帮助您找到隐藏的宝石

    加密市场正在再次加热,现在找到最好的加密货币是关于发现真实用例的。有些硬币由于生态系统不断增长和技术进步而脱颖而出。 加密市场正在再次加热,现在找到最好的加密货币是关于发现真实用例的。有些硬币由于生态系统不断增长和技术进步而脱颖而出。每个都提供了一个独特的价值,从强大的AI工具到燃烧速度的区块链和可…

    2025年12月8日
    000
  • UNILABS(UNIL):Cardano(ADA)2.0智能投资革命

    卡尔达诺曾经承诺在智能投资方面发生革命,但时代已经改变。 ada持有人现在观看新工具可提供更好的结果和更快的回报。 Cardano Price继续在所有时间范围内的压力下继续交易,交易员指出,自11月以来,加密货币正在遵循降落的渠道。 三月看到Ada Price短暂飙升至1.17美元,从模式的上边界…

    2025年12月8日
    000
  • AI云采矿现在是2025年最可靠的被动收入策略

    如今,随着加密货币市场的波动率不断增加,欺诈项目的流行率,澳大利亚的法律和受监管的云采矿应用程序正成为合理投资者的新最爱。 输入:您每天都“观看硬币上下”,而其他人则是“自动挖掘到帐户的硬币”。在2025年,加密货币世界的生态系统将会改变。 “谁首先赚钱”的情况不再存在,而是“可以找到稳定的采矿现金…

    2025年12月8日
    000
  • 随着Memecoin势头的回归,华尔街庞克在交付真正的实用程序时涌现

    fartcoin和bonk本周激增,引起了人们对memecoin行业的重新关注。华尔街在短短两周内将近90%提高了 FARTCOIN和BONK本周激增,再次加热了Memecoin行业。 随着Fartcoin在短短两周内上涨了近90%,而Bonk上涨了30%以上,交易者正在寻找下一个突破性模因象征,以…

    2025年12月8日
    000
  • 2025年的顶级加密资产:BlockDag(BDAG),DOGE,TRX和HYPE受到严重关注

    探索blockdag,dogecoin,tron和hyproliquid在2025年如何竞争成为顶级加密资产,而blockdag的0.0018 $ 0.0018 presale presale pres价格则带来了这一动力。 在不断发展的加密货币景观中,保持曲线的领先至关重要。当我们深入研究2025…

    2025年12月8日
    000
  • TRON(TRX)为活动地址创造了新的记录

    随着创纪录的活动地址水平达到历史最高的高度,tron取得了另一个新的成就。 活跃地址的创纪录水平已经达到了新的历史最高水平。正如加密的强调,每日活跃地址的上升幅度很大,这展示了网络的强度。 因此,人们对TRX很乐观,从本质上讲,该TRX的价格为0.2729美元。对于TRX而言,过去24小时的数量差不…

    2025年12月8日
    000
  • Tron,Zebec Network,Lido Dao和Clearpool(CPOOL)是当今的最高加密货币者

    今天的加密市场正在嗡嗡作响,一些令牌正在以惊人的增长捕捉众人瞩目的焦点!突然激增的背后是什么? 今天的加密货币市场正在嗡嗡作响,其中一些令牌在加密新闻中显示出令人印象深刻的收益并引起了人们的关注。随着投资者密切关注最新发展,令人兴奋的升级,创新的合作伙伴关系以及大动作的组合为有趣的市场活动奠定了基础…

    2025年12月8日
    000
  • 贝莱德可能逐渐将其重点从比特币转移到以太坊

    这一重大发展推动了看涨以太坊的价格预测。同时,零加速硬币喷射螺栓(jbolt)正在吸引加密鲸的注意。 资产管理巨头贝莱德(Blackrock)可能会逐渐将其重点从比特币转移到以太坊,这是最近引起加密货币市场的注意力的一项机构举动。这一重大发展推动了看涨以太坊的价格预测。 同时,加密鲸鱼将零加速硬币喷…

    2025年12月8日
    000
  • XRP的价格预测越来越看好

    在ripple在迪拜推出rlusd之后,xrp的价格预测越来越看好。该公司获得了迪拜金融服务管理局的批准。 在Ripple在迪拜推出RLUSD之后,XRP的价格预测越来越看好。该公司获得了迪拜金融服务管理局的批准。 这样,它成为中东正式认可的最早正式认可的Stablecoin发行人之一。这种提升为R…

    2025年12月8日
    000
  • Fair将本机AI优化介绍给以Vodafone作为创始验证器的区块链基础架构。

    skale labs是无气隐形区块链网络skale背后的团队,今天宣布了其计划推出fair的计划,这是世界上第一个耐mev的第1层区块链。 加利福尼亚州旧金山,2025年6月5日,Chainwire skale labs是无气隐形区块链网络skale背后的团队,今天宣布了其计划推出fair的计划,这…

    2025年12月8日
    000
  • 出色的恒星流明为重大突破:专家揭示了为什么XLM可能会破坏2025年的$ 1障碍

    stellar lumens(xlm)在2025年为全球扩张做好了准备,这是关键的价格预测,使恒星独特的原因以及如何资本化。 Stellar Lumens(XLM)是一枚数字硬币,以其在促进更快,更便宜的跨境支付方面的作用而闻名,尤其是在世界上未养护的地区。 随着加密货币行业的不断扩大,Stella…

    2025年12月8日
    000
  • Qubetics即将结束最后的公开销售

    机会不会持续更长的时间。只有1000万美元的tics代币,以0.3370美元的锁定价格保留 Qubetics即将结束最终的公开销售,机会不会持续更长的时间。只有1000万美元的TICS代币仍以0.3370美元的锁定价格保留,如果令牌清单为0.40美元,买家将获得即时的20%回报。 该项目最近将其总供…

    2025年12月8日
    000
  • Flopypypepe(FPPE)爆炸性预信号下一个加密热潮

    虽然炒作后的发射后激增有一些分析师发出警报,但floppypepe(fppe)却以其最新的下巴可闻到的30,333%的潜力悄悄地震撼了人们。 本文是在AI的帮助下撰写的。 在其最近的空投后,超流动性(Hype)令牌令人难以置信的激增,在其社区中引起了兴奋。但是,分析师现在正在警告投资者有关超级流动性…

    2025年12月8日
    000
  • 今天的吨币(吨)价格:向上的强度,攀升至3.24美元

    当今的吨币价格显示出向上强度的迹象,超过了3.20美元的电阻后,升至3.24美元。 吨币的价格显示了6月5日更新购买压力的迹象,推向了可能决定短期轨迹的关键趋势阻力。 今天的吨币价格发生了什么? 在4小时的图表上,Toncoin突破了自5月中旬以来一直在限制价格行动的下降趋势线。这一突破是由上升趋势…

    2025年12月8日
    000
  • Botanix Labs已经登上了几个加密行业重量级人物,作为其比特币2层网络的节点操作员

    mike novogratz的数字资产金融服务公司galaxy和crypto监护权专家fireblocks是botanix的16个新节点运营商之一 Botanix Labs是一家为比特币建立第2层网络的初创公司,已将几个加密工业重量级重量级作为节点运营商。 Botanix Labs周四宣布,在16个…

    2025年12月8日
    000

发表回复

登录后才能评论
关注微信