开个脑洞:不考虑生态, Docker+Go 有潜力取代 JVM+ Java 么?

2019-05-18 11:40:22 +08:00
 shijingshijing

请注意:不考虑生态是前提,也就是各种 framework,各种轮子都不算在内,单纯看语言和运行环境。

我觉得 JVM 毕竟隔了一个虚拟机,效率啥的比 Docker 还是差一截吧。而且 Go 毕竟这几年才发展起来,论历史沉淀确实比不上 Java,但考虑到 PHP 也是跟 C 一脉相承,按当初 C 转 PHP 的势头,如果都转 Go,前景可期。我站 Docker+Go,虽然个人不喜欢 Go 的语法。

利益相关:目前正在写 Java,没有写过任何 Go 项目。

7591 次点击
所在节点    程序员
75 条回复
wdlth
2019-05-18 12:22:48 +08:00
Go 的优势在于更好的支持云原生,不需要安装运行时。JVM 语言优势在于有好的开源基金会和厂商支持,类库丰富,也可以使用别的 JVM 语言编写的类库。
zpf124
2019-05-18 12:23:10 +08:00
jvm 和 vm 和 docker 这是三个不同的概念好不好.....
jvm 实际上是个翻译, 把你的话翻译给建筑公司, 能做不能做建筑公司说了算。
vm 是个外包商二道贩子, 你问他就是什么都能做, 结果有些不好弄的他层层转包给垃圾施工队也能凑合弄。
docker 是个包工头, 手底下就这么些人, 大多数 vm 能我都能做,省得层层转包了,你还能明了一点,但有些东西确实做不了。
murmur
2019-05-18 12:24:33 +08:00
java 拼的就是生态你来个不考虑生态这讨论就没意义了
zpf124
2019-05-18 12:28:33 +08:00
另外, “ JVM 毕竟隔了一个虚拟机,效率啥的比 Docker 还是差一截吧” 。
实际结论应该恰恰相反,JVM 叫 Java 虚拟机,然而和你说的虚拟机不是一个东西, 不会去虚拟化硬件的。
所以,应该是 docker 效率应该比 jvm 差一截。
leriou
2019-05-18 12:35:20 +08:00
楼主半年工作经验吧
blless
2019-05-18 12:41:23 +08:00
@zpf124 docker 不一定比 jvm 差,docker 只是环境隔离,但是也是直接利用硬件性能啊
luozic
2019-05-18 12:42:21 +08:00
呵呵
luozic
2019-05-18 12:44:09 +08:00
go 的核心問題是無法讓很多逗逼寫的代碼也能變成產品。
junnplus
2019-05-18 12:45:16 +08:00
楼主确实在开脑洞
slanternsw
2019-05-18 12:45:33 +08:00
@zpf124 乱讲,容器又不是虚拟化
mritd
2019-05-18 12:51:33 +08:00
@lonelygo #18 spring boot 谢谢,此处应有掌声 😂
shijingshijing
2019-05-18 13:05:52 +08:00
我不了解 Go,说错了也无所谓,单纯以为 Go 是针对高并发 Web 的 C 语言变体,现在知道 Go 还有 GC 等其他高级 feature。

@zpf124 我理解的是 JVM 算是一个带指令集的 VM,毕竟和主机大小端不一致,数据类型也可以不用管主机数据类型,这个和容器还是不一样的。

@leriou 不了解的领域确实是这样的,问你一个你不了解的内容,也可以得出你是初学者的结论。你知道 CT 和 MRI 的区别么?不知道的话,是不是连两年工作经验都没有?
Navee
2019-05-18 13:09:22 +08:00
送分题:没有
zpf124
2019-05-18 13:15:33 +08:00
@blless
@slanternsw
容器化技术是不虚拟化硬件,但内核之上的 部分系统是虚拟化出来的。

docker 有个最大个好处 就是每个容器各自一套系统环境, 但因为这个好处,自然会有一些和你代码功能无关的基础服务要启动运行。

而且 java 运行效率一直在优化不是都已经无限接近二进制直接执行了吗?
另外 虽然我没学过 go, 但我也听说 go 有个 runtime, 不也和 jvm 差不多的东西吗? 那最好的情况也就是二者速度差不多吧?
liprais
2019-05-18 13:23:25 +08:00
@shijingshijing 别人指出你的问题,你还在这跳脚,这种心态是做不了这一行的
blless
2019-05-18 13:53:56 +08:00
@zpf124 go 的 runtime 是编译成机器码啊 而 jvm 一般都是字节码
按 linux 一切皆文件的哲学,其实 docker 里的系统也是文件隔离,执行代码的时候加载镜像文件而已,虽然网络或者 io 可能有一点影响,但是目前看来几乎是忽略的
ZSeptember
2019-05-18 14:03:38 +08:00
用过 go 就知道写业务有多繁琐。。。
youxiachai
2019-05-18 14:10:57 +08:00
docker 和 jvm 是一个东西????
现在新手是怎么入门计算机知识的......
lostberryzz
2019-05-18 14:13:48 +08:00
GraalVM 了解一下
guolaopi
2019-05-18 14:21:32 +08:00
JAVA + JVM
等于
C# + CLR
然后你懂的。。。

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

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

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

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

© 2021 V2EX