1
renfei 19 小时 57 分钟前 有啊,国产化替代的时候,我们 javaer 不用考虑各种国产化 CPU 的差异,都扔给 JVM 了
|
4
hronro 19 小时 38 分钟前 没有任何优势,因为在需要运行的机器上还需要安装 JVM ,所以很多面向普通用户的软件在分发的时候,会选择把用到 JRE 打包一起分发,这种分发方式比起用 Go 写的纯静态编译的软件,没有任何优势,相比之下 Go 写的软件冷启动速度更快,体积更小,全方面地胜过 JVM 。
假如时间倒流,当初 JAVA 选择和各大操作系统厂商合作,直接在 OS 里内置 JRE ,用户直接下载 JAR 包就能运行,那这种方式可能还有点意义,不过这种 JAVA 程序员在写代码的时候就得写各种兼容性代码来确保在各 JVM 版本里的兼容性了。 |
6
bootvue 19 小时 34 分钟前 只有生态的优势 各种轮子 除此之外没有任何优势
|
7
yakun4566 19 小时 33 分钟前
@hronro #4 很多年的 Javaer ,没有用过 go ,之前遗留的项目有个 Go 的项目,同事在部署的时候本地打完包在服务器上运行不了,最后发现是 win10 跟 Windows server 的依赖不一样,还把 go 的版本降级了才打包能在服务器运行。相对于在服务器上装个符合版本的 jvm ,我觉得还是 java 比较省心
|
8
bronyakaka 19 小时 29 分钟前
单论体积 非云场景优势很大,比 go 那几十 mb 一坨更轻量;但我感觉这点体积也不重要,aot 快速启动比较舒服
|
9
gam2046 19 小时 16 分钟前 以现阶段看,其实是伪命题了,能到处运行又怎么样,你的依赖项还是得根据不同平台来装,除了现在少数开源软件的 GUI 采用的 Java 编写,算是用上了这个“一次编译,到处运行”的特点,其他场景下,这个的意义都不大了,如果真的想对于环境差异,进行抹平,还不如 docker 一把梭
|
10
joshuacavell 19 小时 14 分钟前
Cpp 和 JAVA 都争论这个话题几十年了,各自都有完整的论述.只要生态够完整就没有必要纠结.而且都到这个体量了,编译型的新语言层出不穷,基于虚机技术的几乎只有 C#和 JAVA.
C#用户怼 JAVA 正常,Cpp 作为编译型语言的旗帜和 JAVA 辩经也正常,其他语言碰瓷 JAVA 是真好笑😄 |
12
zxjxzj9 19 小时 4 分钟前
现在来看最能解决一次编译到处运行的反而是 docker ,其次是 go 这种到处编译到处运行的,最后才是 java 这种一次编译但是要考虚拟机到处运行的。
|
13
dzdh 19 小时 2 分钟前
|
15
huijiewei 18 小时 54 分钟前
优势当然是有的。一个写业务的,直需要考虑在 jvm 里面没 bug 就行了,平台和架构的复杂性 jvm 都帮你解决了。
你自己试试 go 。编译完,目标系统稍微升级个小版本就可能 boom |
17
fortytwo 18 小时 53 分钟前
我觉得这个问题在当时的时代背景比较重要,现在完全不重要了。
Java 核心在于 JVM 虚拟机设计,来完成“一次编译到处运行”功能。 现在各种服务大多也是运行在系统层级定制的虚拟机上的。 任何语言,本质上都可以使用 dockers 等虚拟化工具来运行。 但是 JVM 这个先发优势,给了 Java 足够的时间发展生态。使得生态成为了 Java 护城河,和 Python 一样。 所以没有优势,唯一的优势是 Java 生态,大类的工具类库,解决方案。 |
18
Ayanokouji 18 小时 52 分钟前
1. 一次编译到处运行在目前没有啥优势,java 自己都在搞 native
2. 不能否认 jvm 的其他优势 |
19
dddd1919 18 小时 51 分钟前
jvm 优势还是有的,程序自身的适配能力强。
但系统越来越复杂化,除了应用本身,外部依赖越来越多,比如图片处理会用到 imagemagick ,视频加工用到 ffmpeg ,一个完整应用的边界从一个简单进程延伸到各种第三方依赖,所以 java 的理念在今天也就拓展到虚拟化技术上,把整套系统打包成一个可以到处运行的包,比如大型的 vm ,或者轻量的 docker |
20
raptor 18 小时 47 分钟前 JAVA 的优势早就不在这里了,而在于生态和会的人多
|
21
dacapoday 18 小时 35 分钟前
WASM+(C/C++,Rust,Python)
|
22
james2013 18 小时 9 分钟前 via Android
当然有优势,做为后端项目,生态成熟,强类型,到处运行。除了内存占用的较多
我用了几年 python ,python 大项目光是在本机 win10 和服务器 unbutu 进行运行的差距就太大了。 |
23
moverinfo 17 小时 45 分钟前 via iPhone
如果单从一次编译到处运行,我认为没有优势。因为实际情况是你的软件并没有一会儿在 Windows 上运行,一会儿在 Linux 上运行的需要。而 Java 的优势是它的健壮性,稳定性,调试也相对容易。它的生态还是比较庞大的。你用另一个语言真的无法替代它。
我最近聚焦在 Java 的框架设计上,期待开发一套轻量级、同时支持命令行和 Web 服务的方式运行的框架。这样的开发出来的软件维护起来就会比较方便。 |
24
000sitereg 16 小时 6 分钟前
@moverinfo 是的 但是会运行在不同的 linux 发行版上。但是只要转好了 jvm 就都不管了。
我可以本地编译放到服务器,也可以从服务器下载我的程序在本地跑。 CPP 做不到。已经实现当初的目标了。后来者 go 啥的 上面已经说了 |
25
rb6221 15 小时 59 分钟前
有的兄弟有的
草台班子公司里,我在我的 windows 开发机上改了 java 代码,然后打个 jar 出来,把这个 jar 直接丢到 linux 服务器上就行了 |
26
lysShub 13 小时 57 分钟前
一直认为这种说法很取巧,还不是先得安装对应系统架构的 JVM
要求有 gcc 环境,那 C 不也能 run anywhere? |
27
Gilfoyle26 13 小时 54 分钟前 |
28
nkidgm 13 小时 52 分钟前
很多人都没意识到,Java 最有价值的东西是 JVM.
|
29
guanzhangzhang 13 小时 45 分钟前 @huijiewei 言论过于逆天
|
30
zwzwzwzwzxt 9 小时 54 分钟前
@lysShub #26 cosmopolitan 项目了解一下。真·一次编译到处运行 /doge
|
31
aleviosa 8 小时 10 分钟前
JS 和 Python 甚至不需要(开发者自己)编译也能到处运行,开发效率还更高,相比之下 Java 的优势是生态成熟和码农池子大,当然这也是场景和区域限定。国外那种 native app 还不如网站功能齐全,缺乏巨无霸 app ,到处都是 web 服务的地方,JS 的应用生态和码农池子更大。现在最热的 AI ,赛博炼丹的又都是 Python 。现在各大 LLM 写代码训练得成熟的不是 JS 就是 Python ,日后马太效应还会更来更严重……
|
33
greenskinmonster 5 小时 50 分钟前 via Android
我前一阵把客户一个 Java 1.5 版本 32 位的 jre 升级成了 1.8 版本 64 位,解决最大内存不足的问题,代码不需要任何调整,你说有没有用,反正是省了我很多事。
|
34
shiloh595 5 小时 6 分钟前
@Gilfoyle26 别骂了
|
35
iseki 3 小时 39 分钟前 via Android
有优势也有劣势。当你看到一个 jar 包老大个因为里面放了十几个平台的动态库而你的程序只需要在两个平台上运行时你就不太高兴了。不过题外话 OpenJDK 兼容性确实做得比 Go Runtime 强,OpenJDK24 还能在 Windows 7 上运行,但是 Go 却不行了。
|
36
yb2313 3 小时 35 分钟前 wasm: 你好
|
37
hefish 3 小时 5 分钟前
当然没有优势,不然我们写 go, 写 c ,写 rust 的还怎么装逼。
|
38
sir283 2 小时 24 分钟前
Java 肯定没有优势了,优势都被 Web 前端、Golang 、Rust 给超越了,特别是前端的 JavaScript ,一份代码走天下,都不需要虚拟机了。
|
39
kxg3030 1 小时 11 分钟前
是一份代码,处处编译,不是一次编译,处处运行
|
40
DrakenZeng 1 小时 8 分钟前
已经转换到 Rust
|
41
YzSama 58 分钟前
@hronro #4 JVM 的规范和生态,已经不仅仅是 Java 独享了。
如果需要迁移适配, 国产 CPU 可以快速的按 JVM 规范进行适配的。 这个还是有很好的优势。 对 Java 程序来说,本身就没变化。 |
42
YzSama 56 分钟前
@guanzhangzhang #29 抓住馆长
![]() |
43
yolee599 28 分钟前 via Android
java 的优势在于招人容易,人力便宜,虽然啰嗦但是容易维护,代码风格比较统一,可以用的库多
|