关于 java9 模块化的意义 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
DXDE443
V2EX    Java

关于 java9 模块化的意义

  •  
  •   DXDE443 2018-06-01 16:17:04 +08:00 5420 次点击
    这是一个创建于 2776 天前的主题,其中的信息可能已经有所发展或是发生改变。
    好像最大的意义就是减小打包体积 ?多点体积也就多占点磁盘空间吧?这个真的有很大意义吗,我是新人,说错话求不喷
    10 条回复    2018-06-03 01:28:24 +08:00
    hsiafan
        1
    hsiafan  
       2018-06-01 16:26:55 +08:00   1
    嵌入式这类资源有限的场景可以方便裁剪一个精简的 JDK
    模块级的作用域,只有 export 的 package 才能被其他模块使用,这个是一直依赖缺少的
    反射的限制,只有 open 的才能被反射调用。
    可以以模块为单位做 AOT 编译
    传递的依赖可以不导出,比如 B 依赖于 A,C 依赖于 B,可以让 C 看不到 A。
    等等

    当然现在总体上来说对开发者带来的麻烦比好处大,至少目前为止
    DearMark
        2
    DearMark  
       2018-06-01 16:33:28 +08:00
    “模块化的 JVM,使之可以在内存有限的设备上运行。”
    这句话,我也一知半解,安卓上好像用不到。莫非用在小型设备。
    DXDE443
        3
    DXDE443  
    OP
       2018-06-01 16:39:25 +08:00
    @DearMark
    @xiaxiaocao 我对嵌入式不太了解,是不是可以说这项特性是针对小型设备的而不是 javaEE ?
    DXDE443
        4
    DXDE443  
    OP
       2018-06-01 16:44:20 +08:00
    我玩了一段时间的 java9 经常踩莫名其妙的坑,多了那个 module-info.java 要管理,如果好处只是省点磁盘空间那我还是选择屏蔽掉这个特性,能避免很多坑
    hsiafan
        5
    hsiafan  
       2018-06-01 16:46:04 +08:00
    @DXDE443 对的。比如 iPhone。。可以去了解一下 Gluon Mobile 这个项目。手机也只是目标之一,还有车载设备,物联网啥的。能应用得多广泛就看 Oracle 的造化了。
    hsiafan
        6
    hsiafan  
       2018-06-01 16:47:54 +08:00
    @DXDE443 不需要屏蔽,只要不加 module-info.java,还用 classpath 不用 modulepath,就基本上感觉不到它的存在。至少在第三方库都 module 化之前(这个也许需要几年时间),项目中用 module 是没什么意义的。
    lurenw
        7
    lurenw  
       2018-06-01 16:51:01 +08:00
    java9 把 rt.jar 和 tools.jar 拆分之后,包依赖的确清晰了一点,不用跑个 Hello word 就要引入几百 M 的东西。
    这点对嵌入式设备来说会有用,但是对平常的 se,ee,感觉并没啥卵用。

    然后 module-based 的依赖结构可能是以后的趋势,python,nodejs 都这么玩。在此之前 java 的方案是 OSGI,
    但是 OSGI 不是 oracle 自己的规范,要搞模块化的话,肯定得自己掌握话语权。

    java9 包括 java10 感觉也只是一个过渡而已,还是得看后续官方动作。
    honeycomb
        8
    honeycomb  
       2018-06-01 16:54:38 +08:00 via Android
    @lurenw 毕竟下一个长期维护版是 11
    DXDE443
        9
    DXDE443  
    OP
       2018-06-01 17:15:35 +08:00
    @xiaxiaocao 有些框架可能用到一些 javax 的包,很多都是 jdk 原本自带的,java9 默认不依赖这些包的,jdk8 没这个问题,很多人把这个当 java8 用时就会发生找不到类,然后跑去 maven 下那些 jdk 本来自带的包,多一些麻烦,还是有些影响的
    unlimitedsola
        10
    unlimitedsola  
       2018-06-03 01:28:24 +08:00
    1. 减少打包体积
    2. 改变应用发布方式
    3. 使 jdk 自身(或者说大型项目)代码更易维护
    4. 避免开发者错误使用内部( com.sun.*) API
    5. 一定程度上避免 classpath 冲突(因为 a.b/a.b.c 和 x.y/a.b.c 不冲突)
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4536 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 01:06 PVG 09:06 LAX 17:06 JFK 20:06
    Do have faith in what you're doing.
    ubao msn 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