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

2 天前
 SGL
各种二进制打在镜像里面也算是一次编译到处运行吧。
6400 次点击
所在节点    Java
76 条回复
clarkethan
1 天前
跨平台编译现在越来越简单了,Go 、Rust 等新的语言都可以很轻松的跨平台编译,如果 CI/CD 的话就更简单了,服务器端部署的情况下,java 这个优势基本上消弥殆尽了,当然,不熟悉跨平台编译的人觉得难,那就是另一码事了

用一次性跨平台编译配置的时间换 jvm 的开销,我觉得是非常值的,当然,不指 java 其他优势领域
eltria
1 天前
还是现在的工程师分工太细,让你自己去搞各个环境,部署啥的最后就没人用乱七八糟的依赖包难搞的语言了

编译出来一个可执行文件就是整个链路最省事的方法, c++ c golang 这些大赢特赢,当然,你说镜像依赖个 jre 也大差不差,但是何必多麻烦一步呢?
liaohongxing
15 小时 15 分钟前
@hronro 它这个是 go 不再支持 win7 导致的,它服务器是 windows server 2008 ,还是用的 win7 的 nt 内核,所以要降级使用。正常是不会有问题的,用 linux 就更不会有问题了
jamesjammy061
12 小时 16 分钟前
感觉再怎么跨平台,碰到需要调内核 api 最后还得类似条件编译。干脆还不如不跨平台,包封好一点就行了
netabare
6 小时 54 分钟前
Java 的 WORA 在现在已经没任何优势甚至是个伪命题了吧。首先如果 JVM 这种虚拟机运行能算一次编译处处运行,那现在的跨平台方案基本上都能算一次编译处处运行,甚至 React Native 、Flutter ,更不用说.NET 了。

那如果从编译产物是原生二进制的角度讲,Java 也没啥 cross compile 的能力吧?

而且这种带个虚拟机来一次编译处处运行的代价是啥呢? Java SDK 屏蔽了操作系统层面的操作,但如果需要调用平台特定的接口怎么办?走 JNI 那套恶心得要死的写法?
wangtian2020
6 小时 48 分钟前
java 全靠学院派(学校和培训班)发展,实际上整个群体都没创新能力,json 解析都解不过来
layxy
5 小时 41 分钟前
@hronro 曾经 java 是有机会的,只是被 sun 公司拒绝了,后来又想舔回来,结果巨硬搞了个 C#
zxkxhnqwe123
5 小时 26 分钟前
@nebkad 我的世界 java 开发的
xiaomushen
5 小时 8 分钟前
@SGL 不一定,ARM 架构的,OpenJDK 完全可以用(或者华为提供的,玄学优化的 arm 版本);龙芯之类的小众架构,厂商会提供 OpenJDK
laminux29
4 小时 52 分钟前
Java 优势巨大,但不是一次编译到处运行,而是传统项目与主流项目的开发,因 Java 成熟的配套环境,选型阶段几乎可以无脑选 Java ;公司在招人方面,招 Java 工程师的风险也比其他语言低一些。
slcun
4 小时 50 分钟前
@zxkxhnqwe123 可是 java 版是 PC 端的
dog82
4 小时 29 分钟前
go 的交叉编译,原生支持多平台,而且不要 jvm 层
higker
42 分钟前
@dog82 graalvm 的 native-image 也在解决这个问题,也是编译为 native-code 来执行。
higker
36 分钟前
@Ayanokouji 赞成,Leyden 计划也在解决能启动。
higker
31 分钟前
@joshuacavell 赞成我写过 Go JS ( ES6 ) Rust ,C# 很早也搞过,C# 很多设计就不错,但是以前不开源,也不能跨平台错失发展计划,我认为 Java 算是综合能力不错的,还有就是库和轮子的生态。
higker
31 分钟前
@dacapoday 告诉你一个消息 graalvm.org 这种虚拟机也能跑 wasm ...

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

https://www.v2ex.com/t/1168179

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

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

© 2021 V2EX