请注意:不考虑生态是前提,也就是各种 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 ![]() 你说的这有可比性嘛? 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 ![]() 为啥要把 Docker 和 Go 绑定呢? Go 的项目可用 Docker 也可不用,反过来 Java、PHP、Python 也可以用 Docker 呀…… 而且讨论趋势和潜力却不考虑生态这个影响最大(之一)的要素,就好像讨论投资不考虑收益一样奇怪 |
![]() | 5 LXchienne 2019-05-18 11:54:14 +08:00 via Android ![]() 你的帖子让我对 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 ![]() 额... 那请问不考虑框架的情况下,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 ![]() 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 ![]() java 写后台是很稳的,但是高并发的情况下,不如 c++,然而普通人写 c++容易出错,所以就有了 go,go 的语法比较简洁,但这并不意味着开发高并发的 web 程序是简单的。就像是 c 语言简单,但并不意味着你学会 c 就能开发 linux 内核。 而且国内除了大的公司的核心业务,是否高并发其实无关紧要.... |
![]() | 21 wdlth 2019-05-8 12:22:48 +08:00 Go 的优势在于更好的支持云原生,不需要安装运行时。JVM 语言优势在于有好的开源基金会和厂商支持,类库丰富,也可以使用别的 JVM 语言编写的类库。 |
![]() | 22 zpf124 2019-05-18 12:23:10 +08:00 ![]() 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 ![]() 楼主半年工作经验吧 |
![]() | 26 blless 2019-05-18 12:41:23 +08:00 via Android ![]() @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 ![]() @blless @slanternsw 容器化技术是不虚拟化硬件,但内核之上的 部分系统是虚拟化出来的。 docker 有个最大个好处 就是每个容器各自一套系统环境, 但因为这个好处,自然会有一些和你代码功能无关的基础服务要启动运行。 而且 java 运行效率一直在优化不是都已经无限接近二进制直接执行了吗? 另外 虽然我没学过 go, 但我也听说 go 有个 runtime, 不也和 jvm 差不多的东西吗? 那最好的情况也就是二者速度差不多吧? |
![]() | 35 F281M6Dh8DXpD1g2 2019-05-18 13:23:25 +08:00 ![]() @shijingshijing 别人指出你的问题,你还在这跳脚,这种心态是做不了这一行的 |
![]() | 36 blless 2019-05-18 13:53:56 +08:00 via Android @zpf124 go 的 runtime 是编译成机器码啊 而 jvm 一般都是字节码 按 linux 一切皆文件的哲学,其实 docker 里的系统也是文件隔离,执行代码的时候加载镜像文件而已,虽然网络或者 io 可能有一点影响,但是目前看来几乎是忽略的 |
![]() | 37 looplj 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 ![]() 可以 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 ![]() 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 |
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 Q4h7388nR28s95fa 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 ![]() @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 个以上文件的代码 |