首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏ImportSource

    Java9来了,快来了解下JPMS基础吧!

    Java平台模块系统(JPMS)是Java SE 9的主要新功能。 Java Platform Module System java平台模块系统,简称JPMS。是java SE 9的最主要的一个新功能。 本文就来细细介绍下JPMS。 什么是JPMS Module? JPMS是对Java库,语言和运行时的更改。这意味着它会影响开发人员日常代码编写的整个堆栈,因此JPMS可能会产生很大的影响。 出于兼容性原因,大多数现有代码可以忽略Java SE 9中的JPMS,这可能被证明是非常有用的。 关键的概念要点是JPMS向JVM增加了一个新概念,这个概念叫模块(modules)。 总结 不要对Java 9中的JPMS - 模块感到太兴奋。以上只是对module-info.java文件可能的内容和JPMS的限制的总结。

    3.1K80发布于 2018-04-03
  • 来自专栏写字母的代码哥

    Java 模块化编程JPMS-Java 9系列文章第8篇

    我计划在后续的一段时间内,写一系列关于java 9的文章,虽然java 9 不像Java 8或者Java 11那样的核心java版本,但是还是有很多的特性值得关注。期待您能关注我,我将把java 9 写成一系列的文章,大概十篇左右,本文是第8篇。

    81621发布于 2020-10-30
  • 来自专栏猫头虎博客专区

    模块化系统(JPMS):什么是Java模块化?如何在JDK 9+中设计模块化项目?

    模块化系统(JPMS):什么是Java模块化?如何在JDK 9+中设计模块化项目? 引言:模块化项目的挑战与突破 “猫哥,我的项目依赖冲突频繁,模块职责不清,代码难以维护。 为了解决这些问题,Java 在 JDK 9 引入了 模块化系统(JPMS),为开发者提供了一个设计清晰、高效、安全的模块化解决方案。 本文亮点 猫头虎将为你详细讲解: 什么是Java模块化系统? 正文 模块化系统(JPMS)的核心概念 Java模块化系统,即 Java Platform Module System,是JDK 9中的一项革命性改进,旨在优化大型项目的开发效率和维护成本。 *.java 运行命令: java --module-path out -m moduleA/com.example.moduleA.Main 模块化与传统项目的性能对比 特性 传统项目 模块化系统(JPMS 未来趋势与总结:模块化项目的前景 模块化系统(JPMS)已经成为 Java 高级开发者 必备的技术工具。随着 微服务架构 和 云原生开发 的普及,模块化设计将进一步推动 大型项目 的高效开发。

    1.9K10编辑于 2024-12-25
  • 来自专栏深度学习与python

    Leyden 延迟了 OpenJDK AOT 编译器,转而优化 JIT 编译器

    同样,对于 JPMS,Quarkus 已经通过 Quarkus 扩展实现了自己的模块化理念,允许我们将依赖集修剪到只包含所需的内容。 Caballero 还分享了 2020 年 7 月的一段 YouTube 视频,视频中 Micronaut 的创始人 Graeme Rocher 对 JPMS 进行了评论:Micronaut 支持 JPMS JPMS 是在 Java 9 中加入的,但 Micronaut 3.5,即当前版本,仍然运行在 Java 8 上。 但是当涉及到实现较小的 Java 应用时,只有 Micronaut 坚持 Leyden 项目的建议,即使用 JPMS。 Spring 计划在 2022 年底的 6.0 版本中支持 JPMS,不过 Spring 生态系统可能还不会这样做。而 Quarkus 目前没有计划加入 JPMS

    1.6K20编辑于 2023-03-29
  • 来自专栏C++干货基地

    【java报错已解决】java.lang.IllegalCallerException

    这种异常常见于Java平台模块系统(JPMS)中,尤其是在Java 9及以后的版本中。本文将探讨IllegalCallerException的成因,并提供解决方案,帮助开发者快速定位并解决这类问题。 1.3 解决思路: 解决IllegalCallerException的关键在于理解Java平台模块系统(JPMS)的规则,并确保模块间的调用符合这些规则。 四、总结: 遇到java.lang.IllegalCallerException这类报错时,首先应该检查模块间的调用是否符合JPMS的规则。通过上述方法,我们通常可以解决大部分模块化安全问题。

    23700编辑于 2025-05-29
  • 来自专栏深度学习与python

    Spring Boot 3 将于 2022 年 11 月发布,延迟了对 Java 模块系统的支持

    Drotbohm 没有讨论在 Spring Framework 6 中对 Java Platform Module System(JPMS)的支持,去年 InfoQ 曾经首次报道过这个问题。 他随后向 InfoQ 证实,Spring Framework 6.0 不会提供对 JPMS 的完整支持,但可能会在后续版本中实现: Spring Framework 6.0 密切关注 AOT 和 GraalVM 同时,我们的模块系统计划尚无法构建迁移至完整的 JPMS 模块描述符。在过去一年中,很少有人提出这样的要求。

    86110编辑于 2023-03-29
  • 来自专栏深度学习与python

    Spring Modulith使用模块和事件组织Spring Boot 3应用

    它的模块没有使用 Java Platform Module System(JPMS),而是映射到了普通的 Java 包。 InfoQ:在 Java 9 中,Java Platform Module System(JPMS)的目标是为 Java 提供“可靠的配置”和“强封装性”。 JPMS 为何没有满足你们对模块的要求呢? Drotbohm:JPMS 的设计目标是模块化 JDK,在这方面它确实做得非常好。 比如,JPMS 要求每个模块都是一个单独的 JAR,而集成测试必须打包成一个单独的模块。这带来了严重的技术开销,尤其是如果我们有更简单的方式实现这一点的时候。 换句话说,Spring Modulith 能够在 JPMS 结构的项目中运行良好。如果你的项目能够从 JPMS 模块的各种高级分离技术中受益,那么尽可以使用它。

    2.3K10编辑于 2023-03-29
  • 来自专栏编舟记

    java9 模块化系统小试

    JPMS 全称是 Java Platform Module system(Java 平台模块化系统)。它的目的简单直接:编译期间检查和强化封装。 编译期检查 JPMS 要求每个定义好的模块下面放置 module-info.java 描述文件(Module Descriptor),用于描述本模块依赖(requires)外部哪些模块,以及对外暴露(exports 另外值得注意的是,以前即使是private的方法,使用反射调用setAccessible(true)也可以随意调用,但在 JPMS 下是行不通的。

    1K30发布于 2018-08-17
  • 来自专栏程序那些事

    在java中使用SPI创建可扩展的应用程序

    SPI在JPMS模块化系统下的实现 上面我们讲的是基本的操作,考虑一下,如果是在JDK9之后,引入了JPMS模块化系统之后,应该怎么使用SPI呢? 代码肯定是一样,我们需要修改的是SPI配置文件。 如果在JPMS中,我们就不需要使用META-INF/services了,我们只需要创建相应的module-info.java文件即可。

    2.2K41发布于 2020-08-27
  • 来自专栏程序那些事

    一文读懂jar包的小秘密

    这个版本比较新,所以它使用的是最新的JPMS的写法,大家可以看到在jar包的根目录下面有一个module-info.class文件,表示这个jar包使用的是模块化。 --create --file mr.jar -C foo classes --release 9 -C foo9 classes module-info.class 假如我们使用的是JDK9之后的JPMS 关于JPMS的更多信息可以参考我之前写的文章:JDK9的新特性:JPMS模块化. versions versions主要和 multi-release JAR一起使用的: Multi-Release:

    2.4K41发布于 2020-08-27
  • 来自专栏程序那些事

    一张PDF了解JDK9 GC调优秘籍-附PDF下载

    最大的变化就是引入了JPMS(Java Platform Module System)也就是Project Jigsaw。 然后就是引入的Xlog日志服务,通过Xlog日志服务我们可以监控JVM中的事件,比如:GC,class loading,JPMS,heap,thread等等。 JVM是java程序运行的基础,JVM中各种事件比如:GC,class loading,JPMS,heap,thread等等其实都可以有日志来记录。

    64420发布于 2020-07-08
  • 来自专栏猫头虎博客专区

    Java模块依赖管理:如何定义和导出模块?如何解决模块间依赖冲突?

    引言:模块依赖管理的挑战 在 Java 模块化系统(JPMS) 中,模块依赖管理是核心,也是开发者最常遇到的问题之一。 定义模块:模块的结构与描述文件 在 JPMS 中,每个模块都需要一个模块描述文件 module-info.java。该文件定义了模块的依赖、导出包以及模块的访问权限。

    1.1K10编辑于 2024-12-25
  • 深入探索Java类加载与字节码技术:双亲委派破坏、SPI机制与OSGi类加载隔离

    与Java模块系统的比较 Java 9引入的JPMS模块系统与OSGi在类隔离方面存在显著差异: 隔离粒度:JPMS基于模块,OSGi基于Bundle(可包含多个包) 可见性控制:JPMS使用exports /requires,OSGi使用Export/Import-Package 动态性:JPMS不支持运行时模块更新,OSGi支持热部署 类查找策略:JPMS保持父优先委托,OSGi采用本地优先 在混合使用场景下 ,OSGi 7.0开始支持作为JPMS之上的动态层运行,通过AdaptiveHooks机制协调两个系统的类加载行为。 模块化系统(JPMS)在Java 9的引入标志着官方对传统类加载模型的重大升级,其通过显式声明依赖关系实现了更精细的模块隔离。 值得注意的是,JPMS并未完全取代类加载器机制,而是与之形成互补——模块层(ModuleLayer)的引入使得开发者可以在运行时动态加载模块,这种设计在需要热部署的Serverless场景中展现出独特价值

    54010编辑于 2025-08-27
  • 来自专栏猫头虎博客专区

    模块化的优势:JDK 17与JDK 21中模块化如何提升项目维护性与性能?

    引言:模块化的重要性与发展背景 模块化是现代Java开发的重要趋势,从JDK 9引入的模块化系统(JPMS),到JDK 17与JDK 21的增强,开发者逐步认识到模块化对代码结构优化与性能提升的巨大作用 模块化系统(Java Platform Module System, JPMS)是从 JDK 9 开始引入的一个框架,用于将代码组织成可重用、可隔离的模块。

    1.1K10编辑于 2024-12-26
  • 来自专栏深度学习与python

    Salesforce 如何用一年的时间大规模迁移到 OpenJDK 11

    类路径与模块化 Java SE 9 平台引入的重大变更之一就是 Java 平台模块系统(Java Platform Module System,JPMS)。 JPMS 将 JDK 划分为多个模块,每个模块都是一组命名唯一且可重用的相关包。 好消息是,Java 9 仍然支持传统的类路径,它能与模块路径一起工作,并映射到一个被称为未命名模块的特殊模块上。 根据 JPMS 规范,自动模块应该导出其所有的包——显然在我们的例子中不会发生这种情况! 事实证明,我们在 OSGi 框架的包解析逻辑中发现了一个 bug(违反了 JPMS 规范)。

    1.4K20编辑于 2023-04-01
  • 从Java全栈到云原生:一场真实的技术面试实录

    比如模块系统(JPMS)? **应聘者**:我们在一个微服务架构中尝试使用JPMS,但发现一些第三方库不兼容,尤其是那些依赖于`sun.misc`等内部API的库。

    26010编辑于 2025-09-05
  • 技术揭秘:异构数据源同步工具如何隔离加载驱动依赖

    模块化框架(OSGi/JPMS)将每个驱动打包为独立Bundle/Module,声明依赖版本范围;利用模块系统的版本隔离能力(如OSGi的Import-Package:version=[8.0,9.0) ApacheKaraf+Camel将每个数据库驱动封装为OSGiBundle,通过服务注册与声明式依赖管理实现隔离支持热插拔、模块间松耦合、服务发现机制成熟配置复杂(需MANIFEST.MF);启动慢;学习曲线陡峭JPMS

    16610编辑于 2026-01-05
  • 来自专栏该溜子的专栏

    【Bug】CGLIB与JDK17不兼容,依赖失效,模块化报错问题及解决方式ClassFormatError: accessible: module java.base does not ‘opens

    三:错误原因 该错误的根本原因是 Java 9+ 模块化(JPMS)导致的问题。

    1.8K10编辑于 2025-01-13
  • 来自专栏Eliauk的小窝

    Stream-Query兼容JDK17

    does not "opens java.lang.invoke" to unnamed module @6cc4c815 在网上查阅资料得知是因为在jkd9版本及以上版本中,Java平台模块化系统(JPMS

    49640编辑于 2023-11-07
  • 来自专栏IT杂谈学习

    【Java】已解决java.lang.IllegalAccessException异常

    使用了Java模块化系统(如Java 9及以上版本的JPMS),并且模块之间没有正确的导出和读取权限。

    1.8K10编辑于 2024-06-19
领券