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

2024-01-30 23:43:07 +08:00
 BraveXaiver
有啥中文文章比较好地介绍了这个机制吗?我简单地看了看, 感觉像是在开发多模块项目时才用得上的?如果已经打包成 jar 或者 war 去部署,或者通过 maven 引入别的依赖,基本上是用不到这个的?

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

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

目前这个模块化其实用得还是比较少。我以前写过一篇文章: https://www.skjava.com/series/article/2044128092 。希望对你有帮助
dasbn
2024-01-31 22:30:32 +08:00
主要是给库用吧,比如引用了内部的 sun 包,现在升级都要去掉了。对使用的人应该没啥影响,毕竟对大型项目已经有 osgi , 对于 spring 也有 modulith
SkyLine7
354 天前
spring 基本不用 java9 那个模块化东西
YepTen
353 天前
@chenssy 老哥 你网站打不开啊
woldfoll
169 天前
我们公司的 Spring Boot 项目在推行使用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/1012919

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX