V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
BraveXaiver
V2EX  ›  Java

Java 9 引入的这个模块,它对于 spring boot web 开发是不是没啥影响?

  •  
  •   BraveXaiver · 88 天前 · 2098 次点击
    这是一个创建于 88 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有啥中文文章比较好地介绍了这个机制吗?我简单地看了看, 感觉像是在开发多模块项目时才用得上的?如果已经打包成 jar 或者 war 去部署,或者通过 maven 引入别的依赖,基本上是用不到这个的?

    谢谢
    12 条回复    2024-02-21 10:27:17 +08:00
    ExplodingFKL
        1
    ExplodingFKL  
       87 天前   ❤️ 1
    由于 spring boot 运行机制的问题,想用 java module 要写很多 module-info.java , 没必要 , 也不差这点空间
    Narcissu5
        3
    Narcissu5  
       87 天前
    java 这个模块化真的是,推出之前炒得不可开交,甚至影响新版本的推出时间。推出之后无声无息。
    这东西最大的意义其实是桌面应用自带 JVM 的安装包可以大幅度瘦身,不过等他们吵完架,桌面应用的时代基本已经过去了。
    服务器应用直接无视就好了
    echo1937
        4
    echo1937  
       87 天前
    1. 瘦身,比如体积超大的 rt.jar 拆成了几十个.jmod 模块,不会因为只需要一个 java.xml 就把整个 jar 都导入进来了
    2. 精细化权限,只有被 exports 的包才能被人访问,哪怕你是 public 的
    更具体的看 2#楼,以上这些对大型项目、中间件、桌面端影响更大,对普通的 curd 仔影响不大。
    Aresxue
        5
    Aresxue  
       87 天前   ❤️ 1
    结论是没有。
    好处之一有点类似我们自己工程中的多 module 结构一样,看源码的时候可以更清晰,引入依赖可以按需引入而不是全量引入,很多框架以前为了这个事情自己把使用的类从 jdk 里面 copy 出来( copy 一个类往往还没用还要 copy 依赖的类想想心累不),有了模块化以后就不用再干这种脏活了,当然上面的事情和 web 业务开发基本没啥关系,主要是框架和中间件影响比较大,但其实这一举措主要是 java 还不想放弃桌面端,java 做桌面端以前最被人诟病的就是要带着 jre 一起发布整个包大到离谱,有了模块化用户就可以自己裁剪出需要的 jre 能显著地降低包的体积有利于分发;
    第二点就是精细化权限,我可太喜欢这个东西了,甚至一度想把我司的屎山从 jdk8 迁移到 17 ,虽然最后没有成型,比较典型的一个场景是框架中 A module 的类只想给自己框架内部的其它 module 使用,但是很难做到这一点,设为 default 则要求其它模块使用它的类的包名与其一致,设为 public 则存在被业务滥用的风险,现在总归存在一种机制能解决这个事情了。
    dif
        6
    dif  
       87 天前
    这玩意总觉得有些烂尾,实际工作中并不会用~~
    yidinghe
        7
    yidinghe  
       87 天前
    业界并没有广泛使用模块化的开发方式,因为它可能破坏项目对以前的库的使用方式,即便有加参数或其他手段来绕过,维护起来也很复杂。
    ikas
        8
    ikas  
       87 天前
    对企业开发,或者说服务端目前影响有限,大家还是各用各的,比如 jboss 的模块,osgi,甚至 spring 也搞了自己的模块化

    对于小项目,桌面开发,上模块还是不错的
    chenssy
        9
    chenssy  
       87 天前   ❤️ 1
    个人认为有如下几个作用吧:
    1. 瘦身
    2. 安全。能够更好地控制你 module 的可见性。
    3. 比较适用于大型项目。

    目前这个模块化其实用得还是比较少。我以前写过一篇文章: https://www.skjava.com/series/article/2044128092 。希望对你有帮助
    dasbn
        10
    dasbn  
       87 天前
    主要是给库用吧,比如引用了内部的 sun 包,现在升级都要去掉了。对使用的人应该没啥影响,毕竟对大型项目已经有 osgi , 对于 spring 也有 modulith
    SkyLine7
        11
    SkyLine7  
       67 天前
    spring 基本不用 java9 那个模块化东西
    YepTen
        12
    YepTen  
       66 天前
    @chenssy 老哥 你网站打不开啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1174 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:56 · PVG 01:56 · LAX 10:56 · JFK 13:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.