Java 的一次编译到处运行在目前还有优势吗

查看 81|回复 10
作者:SGL   
renfei   
有啊,国产化替代的时候,我们 javaer 不用考虑各种国产化 CPU 的差异,都扔给 JVM 了
SGL
OP
  
@renfei 那 JVM 的适配是国产化 CPU 厂商自己提供的吗。
zhoudaiyu   
@SGL #2 用 openjdk 的就可以,无非就是 ARM 和 X86
hronro   
没有任何优势,因为在需要运行的机器上还需要安装 JVM ,所以很多面向普通用户的软件在分发的时候,会选择把用到 JRE 打包一起分发,这种分发方式比起用 Go 写的纯静态编译的软件,没有任何优势,相比之下 Go 写的软件冷启动速度更快,体积更小,全方面地胜过 JVM 。
假如时间倒流,当初 JAVA 选择和各大操作系统厂商合作,直接在 OS 里内置 JRE ,用户直接下载 JAR 包就能运行,那这种方式可能还有点意义,不过这种 JAVA 程序员在写代码的时候就得写各种兼容性代码来确保在各 JVM 版本里的兼容性了。
hronro   
@renfei 放到编译型语言里,这也是编译器后端需要考虑的事情,普通的业务层代码也不关心这个。
bootvue   
只有生态的优势   各种轮子   除此之外没有任何优势
yakun4566   
@hronro #4 很多年的 Javaer ,没有用过 go ,之前遗留的项目有个 Go 的项目,同事在部署的时候本地打完包在服务器上运行不了,最后发现是 win10 跟 Windows server 的依赖不一样,还把 go 的版本降级了才打包能在服务器运行。相对于在服务器上装个符合版本的 jvm ,我觉得还是 java 比较省心
bronyakaka   
单论体积 非云场景优势很大,比 go 那几十 mb 一坨更轻量;但我感觉这点体积也不重要,aot 快速启动比较舒服
gam2046   
以现阶段看,其实是伪命题了,能到处运行又怎么样,你的依赖项还是得根据不同平台来装,除了现在少数开源软件的 GUI 采用的 Java 编写,算是用上了这个“一次编译,到处运行”的特点,其他场景下,这个的意义都不大了,如果真的想对于环境差异,进行抹平,还不如 docker 一把梭
您需要登录后才可以回帖 登录 | 立即注册

返回顶部