请注意:不考虑生态是前提,也就是各种 framework,各种轮子都不算在内,单纯看语言和运行环境。
我觉得 JVM 毕竟隔了一个虚拟机,效率啥的比 Docker 还是差一截吧。而且 Go 毕竟这几年才发展起来,论历史沉淀确实比不上 Java,但考虑到 PHP 也是跟 C 一脉相承,按当初 C 转 PHP 的势头,如果都转 Go,前景可期。我站 Docker+Go,虽然个人不喜欢 Go 的语法。
利益相关:目前正在写 Java,没有写过任何 Go 项目。
1
coffeSlider 2019-05-18 11:47:37 +08:00 via Android 12
你说的这有可比性嘛? docker 是啥先理解清楚吧。
|
2
Trumeet 2019-05-18 11:53:06 +08:00
建议楼主先搞清楚 Docker 是什么(
|
3
linhua 2019-05-18 11:53:33 +08:00
JVM 的虚拟机 和 Docker 之类的虚拟机 不是一个概念
Go 不需要 Docker 呀 |
4
gamma 2019-05-18 11:53:34 +08:00 1
为啥要把 Docker 和 Go 绑定呢? Go 的项目可用 Docker 也可不用,反过来 Java、PHP、Python 也可以用 Docker 呀……
而且讨论趋势和潜力却不考虑生态这个影响最大(之一)的要素,就好像讨论投资不考虑收益一样奇怪 |
5
LXchienne 2019-05-18 11:54:14 +08:00 via Android 7
你的帖子让我对 docker 的理解产生了疑问
|
6
JasperWong 2019-05-18 11:58:33 +08:00
jvm 和 docker 不是一个维度的东西
|
7
wangfeng96 2019-05-18 12:00:55 +08:00 via iPhone
Java 怎么可能说被取代就被取代呢
|
8
lonelygo 2019-05-18 12:02:11 +08:00
难道是这么理解的:
JVM ( JRE ) === Docker Java === Go 容我重新 Google 学习下 Docker 的概念去。 |
9
JerryCha 2019-05-18 12:03:43 +08:00
你的假设我不认为能成立。做决策是需要考虑成本和风险的。时间、成本、质量,Go 能做到显著提升这三者中的任意一个因素才有胜出的可能。
|
10
loading 2019-05-18 12:06:17 +08:00
go 可以单文件搞定,并不需要 docker。
|
11
cookey39 2019-05-18 12:06:25 +08:00 via Android
Java 日常被取代
|
12
arfa 2019-05-18 12:07:09 +08:00
如果 Oracle 再这样作死,那就真有可能会转向 go
|
13
mritd 2019-05-18 12:07:40 +08:00 via iPhone 2
额... 那请问不考虑框架的情况下,v2ex 能否取代高铁?
|
14
mritd 2019-05-18 12:09:34 +08:00 via iPhone
我曾经花费很久去跟新人谈 docker 不是虚拟机的问题... 但是你这个问题真的让我无从下手 贫僧甘拜下风
|
16
mrdemonson 2019-05-18 12:15:32 +08:00 via Android
一脸懵逼进来,一脸懵逼出去,以为我对 docker 的理解错了+1
|
19
geekvcn 2019-05-18 12:19:56 +08:00 2
Docker 更接近虚拟化技术,和 Openvz 差不多,只不过 Openvz 虚拟操作系统,Docker 是用来简化部署的,可以直接打包各种依赖,同样的 jvm+web 容器+web 项目也能打包方便部署。go 语言又不是一定要跑在 Docker 里,直接跑 window,linux 都行,这样效率更高,现在哪有项目是追求那么点效率的,不如加配置来的直接,除非是性能严重影响业务,才会考虑优化性能,性能那么重要,移动端就不会 webview 遍地走,native 应用少的可怜了,各大公司包括 BAT 都在想办法简化开发简化部署,Docker 就是为了简化部署
|
20
cookey39 2019-05-18 12:21:01 +08:00 via Android 3
java 写后台是很稳的,但是高并发的情况下,不如 c++,然而普通人写 c++容易出错,所以就有了 go,go 的语法比较简洁,但这并不意味着开发高并发的 web 程序是简单的。就像是 c 语言简单,但并不意味着你学会 c 就能开发 linux 内核。
而且国内除了大的公司的核心业务,是否高并发其实无关紧要.... |
21
wdlth 2019-05-18 12:22:48 +08:00
Go 的优势在于更好的支持云原生,不需要安装运行时。JVM 语言优势在于有好的开源基金会和厂商支持,类库丰富,也可以使用别的 JVM 语言编写的类库。
|
22
zpf124 2019-05-18 12:23:10 +08:00 1
jvm 和 vm 和 docker 这是三个不同的概念好不好.....
jvm 实际上是个翻译, 把你的话翻译给建筑公司, 能做不能做建筑公司说了算。 vm 是个外包商二道贩子, 你问他就是什么都能做, 结果有些不好弄的他层层转包给垃圾施工队也能凑合弄。 docker 是个包工头, 手底下就这么些人, 大多数 vm 能我都能做,省得层层转包了,你还能明了一点,但有些东西确实做不了。 |
23
murmur 2019-05-18 12:24:33 +08:00
java 拼的就是生态你来个不考虑生态这讨论就没意义了
|
24
zpf124 2019-05-18 12:28:33 +08:00
另外, “ JVM 毕竟隔了一个虚拟机,效率啥的比 Docker 还是差一截吧” 。
实际结论应该恰恰相反,JVM 叫 Java 虚拟机,然而和你说的虚拟机不是一个东西, 不会去虚拟化硬件的。 所以,应该是 docker 效率应该比 jvm 差一截。 |
25
leriou 2019-05-18 12:35:20 +08:00 1
楼主半年工作经验吧
|
26
blless 2019-05-18 12:41:23 +08:00 via Android 1
@zpf124 docker 不一定比 jvm 差,docker 只是环境隔离,但是也是直接利用硬件性能啊
|
27
luozic 2019-05-18 12:42:21 +08:00
呵呵
|
28
luozic 2019-05-18 12:44:09 +08:00
go 的核心問題是無法讓很多逗逼寫的代碼也能變成產品。
|
29
junnplus 2019-05-18 12:45:16 +08:00 via iPhone
楼主确实在开脑洞
|
30
slanternsw 2019-05-18 12:45:33 +08:00 via Android
@zpf124 乱讲,容器又不是虚拟化
|
32
shijingshijing OP |
33
Navee 2019-05-18 13:09:22 +08:00
送分题:没有
|
34
zpf124 2019-05-18 13:15:33 +08:00 1
@blless
@slanternsw 容器化技术是不虚拟化硬件,但内核之上的 部分系统是虚拟化出来的。 docker 有个最大个好处 就是每个容器各自一套系统环境, 但因为这个好处,自然会有一些和你代码功能无关的基础服务要启动运行。 而且 java 运行效率一直在优化不是都已经无限接近二进制直接执行了吗? 另外 虽然我没学过 go, 但我也听说 go 有个 runtime, 不也和 jvm 差不多的东西吗? 那最好的情况也就是二者速度差不多吧? |
35
liprais 2019-05-18 13:23:25 +08:00 10
@shijingshijing 别人指出你的问题,你还在这跳脚,这种心态是做不了这一行的
|
36
blless 2019-05-18 13:53:56 +08:00 via Android
@zpf124 go 的 runtime 是编译成机器码啊 而 jvm 一般都是字节码
按 linux 一切皆文件的哲学,其实 docker 里的系统也是文件隔离,执行代码的时候加载镜像文件而已,虽然网络或者 io 可能有一点影响,但是目前看来几乎是忽略的 |
37
ZSeptember 2019-05-18 14:03:38 +08:00
用过 go 就知道写业务有多繁琐。。。
|
38
youxiachai 2019-05-18 14:10:57 +08:00
docker 和 jvm 是一个东西????
现在新手是怎么入门计算机知识的...... |
39
lostberryzz 2019-05-18 14:13:48 +08:00
GraalVM 了解一下
|
40
guolaopi 2019-05-18 14:21:32 +08:00 via Android
JAVA + JVM
等于 C# + CLR 然后你懂的。。。 |
41
atonku 2019-05-18 14:26:06 +08:00
你说的这几个东西我一样也不懂,但是我知道你说的对
|
42
wwqgtxx 2019-05-18 14:35:18 +08:00
@zpf124 “但我也听说 go 有个 runtime, 不也和 jvm 差不多的东西吗?”这句话就是错的,所以还是建议你稍微看一下 go 入门再做评论
|
43
acehow 2019-05-18 14:35:38 +08:00 via Android
和 docker 没关系。直接问 java 是否会被 go 取代就行了。从长远来看,我觉得会,因为 go 更简洁快速,也没 spring 框架那么臃肿。实际上 go 现在已经比较成熟了,有自身一套比较完整的生态支持,在 2.0 后之后也会支持泛型,IDE 的话用 jb 的 goland 也很爽,而且 go 的社区现在很活跃,如果没有旧项目负担的话,新项目都可以考虑用 go 来做。
|
44
brickxu 2019-05-18 15:07:30 +08:00 1
可以 block 了
|
45
alamaya 2019-05-18 15:23:05 +08:00
啥都不了解,不知道你站个啥
|
46
shijingshijing OP @liprais 开心就好
|
48
mozutaba 2019-05-18 15:53:17 +08:00
搞不清虚拟机的意思吧。
精通 vc++ |
49
szq8014 2019-05-18 16:25:47 +08:00 1
java 和 go 的领域有交叉但不能相互替代,go 现在这么火,尤其是前段时间各种公众号发文说 go 只能说在新兴(并不新了)语言下有自己的利益,除非超高并发要求,否则选哪个语言只是习惯的事,就像 不只是 java 能写 hadoop,也不只是 go 能写 docker,爽与不爽自己心里有数就成
ps: java 的 project loom 成了的话也能低成本高并发了,一定程度上能替代 go 了, [点我看 project loom]( https://cr.openjdk.java.net/~rpressler/loom/Loom-Proposal.html) |
50
sudoz 2019-05-18 16:29:03 +08:00
你的脑洞瓦特了
|
51
zhyt1985 2019-05-18 16:39:50 +08:00
暂时还是 Docker + Java 吧
|
52
ipwx 2019-05-18 16:41:10 +08:00
了解一下 JIT 谢谢。
|
53
zzzmode 2019-05-18 17:53:50 +08:00 via Android
重新定义了 docker 和 jvm ??
|
54
yim7 2019-05-18 18:02:46 +08:00
这俩组合有什么好对比的?
|
55
HiCode 2019-05-18 18:26:05 +08:00
日常 block + 1
|
56
impl 2019-05-18 19:16:20 +08:00 via Android
坐等 oracle 把 Java 搞死
|
57
arden 2019-05-18 19:31:09 +08:00
go 现在最大的劣势就是错误处理以有泛型不支持。
|
58
aodeng 2019-05-18 19:45:07 +08:00 via Android
看戏
|
59
cctv1005s927 2019-05-18 19:47:12 +08:00
JVM 和 QT 可以比一下~~
|
60
byfar 2019-05-18 19:57:17 +08:00
|
61
zqguo 2019-05-18 20:13:53 +08:00
楼主你在问啥???
|
62
vincel 2019-05-18 20:28:03 +08:00
请先搞清楚 docker 是啥 一群人帮你纠正你还死要面子当一个跳梁小丑贻笑大方,虚心接受有那么难吗
|
63
mamahaha 2019-05-18 20:31:35 +08:00
楼主想问 go 能取代 java 吗,因为害怕被喷,所以包装了一下。
|
64
ihciah 2019-05-18 21:55:00 +08:00
那些动不动就 Block 的,请 Block 我谢谢!想不通为什么看到新手就冷嘲热讽?
|
65
Vegetable 2019-05-18 21:58:32 +08:00
jvm+java=go
jvm+java+docker = go+docker |
66
Vegetable 2019-05-18 22:02:58 +08:00
@ihciah 这是新手的问题吗?
问问题不能出现最基本的谬误,关公战秦琼就算了,问秦叔宝和青龙偃月刀谁厉害就不合适了吧,这是对所有能看到问题的人的不尊重. |
67
yidinghe 2019-05-18 22:04:05 +08:00 via Android
不考虑生态,任何语言都可以取代 Java
|
68
EminemW 2019-05-18 22:06:26 +08:00
docker 不是 go 特有的吧。按我的理解 docker 是用来隔离环境的
|
69
ManjusakaL 2019-05-18 22:20:34 +08:00
Docker 怎么和 JVM 扯上关系的?
|
70
jc89898 2019-05-18 22:25:39 +08:00 1
@shijingshijing 首先 我确实知道 CT 和 MRI 的区别,高中物理学的。 这两个 VM 是一回事吗?而且 Docker 不是 VM,JVM 也不是你说的 VM,多读书吧。
|
71
livnimasileid 2019-05-18 22:40:05 +08:00
楼主几年经验就这么跳了?
|
72
shijingshijing OP @jc89898
@livnimasileid @cctv1005s927 前面#32 说了不了解 Go,不知道 Go 的 runtime,错了就错了,解释了几句怎么就是你们说的跳了? 不了解一门语言,不了解一些细节,只是看了一些对比报告,提出了这个问题,觉得不合适可以 block 我,可以不回答。 本来就已经做好了被 diss 的准备。我心态好,平时见过的也多,无所谓。仔细看看你们的回帖,除了 diss 我有其他的有用信息没有?跳梁小丑我倒觉得你们这种抓住漏洞批判一番的更合适吧,标题就说了随便开脑洞的,错了不耻下问,回答比较多的我也感谢送硬币了,还要怎么样? 说到底层,你们未必比我知道的多,有几个完整看过 Linux 内核的,我感兴趣的是隔离,从 MMU 的分页机制,到 Linux 的进程隔离,再到各种 vm,再到 Docker,能看出针对一个问题的不同思路。可能是我表述有问题,发帖比较随意,diss 我也好,各自丰富 block 列表吧。 |
73
KuroNekoFan 2019-05-19 13:17:30 +08:00 via iPhone
哪儿跟哪儿
|
74
limoinkli 2019-05-19 17:01:11 +08:00 via iPhone
不耻下问😂
|
75
wo642436249 2019-05-20 08:37:57 +08:00
@ZSeptember 说的好像 java 就简单一样,为了规范目录之类的,操作一个数据表居然需要写 5 个以上文件的代码
|