Java 9 引入的这个模块,它对于 spring boot web 开发是不是没啥影响? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
BraveXaiver
V2EX    Java

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

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

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

    对于小项目,桌面开发,上模块还是不错的
    chenssy
        9
    chenssy  
       2024-01-31 20:46:43 +08:00   1
    个人认为有如下几个作用吧:
    1. 瘦身
    2. 安全。能够更好地控制你 module 的可见性。
    3. 比较适用于大型项目。

    目前这个模块化其实用得还是比较少。我以前写过一篇文章: https://www.skjava.com/series/article/2044128092 。希望对你有帮助
    dasbn
        10
    dasbn  
       2024-01-31 22:30:32 +08:00
    主要是给库用吧,比如引用了内部的 sun 包,现在升级都要去掉了。对使用的人应该没啥影响,毕竟对大型项目已经有 osgi , 对于 spring 也有 modulith
    SkyLine7
        11
    SkyLine7  
       2024-02-20 11:56:17 +08:00
    spring 基本不用 java9 那个模块化东西
    YepTen
        12
    YepTen  
       2024-02-21 10:27:17 +08:00
    @chenssy 老哥 你网站打不开啊
    woldfoll
        13
    woldfoll  
       2024-08-23 10:16:06 +08:00
    我们公司的 Spring Boot 项目在推行使用。
    style type="text/css">.wwads-cn { border-radius: 3px !important; } .wwads-text { color: var(--link-color) !important; }
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5584 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 07:11 PVG 15:11 LAX 00:11 JFK 03:11
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86