几百万做 Java 的是不是傻子不太确定。
Rob Pike 那帮人绝不是傻子而且聪明绝顶,这很确定。
并发数、运行效率、内存、工具链、部署、DevOps 管理、对 coder 的心智要求,综合所有方面考虑 Java 是被 Go 完全碾压。
微服务 service mesh 这些领域现在所有最重要的基础设施几乎都是 Go 实现,少量新方案用Rust。区块链 Go 也是主力。
面过很多人,没有不懂 SSH 或 SSM 的,真没几个懂 Netty 的,能自己定协议,自己根据 RFC 解协议的更是一个都没有。
极限并发 Go 比不过 Netty,这也不是问题,因为 request 一旦进到内网后,内网服务器间根本就不走海量并发。而网关和接入侧的高并发,通过均衡分流和网关的微服务化也完全能简单搞定。
高并发只在几个点重要,而在整个体系里没这么重要,内部系统性能关键最重要的是做到低并发高吞吐,不要被忽悠。
java几个典型问题,内存太大,gc慢,没纤程,没指针。写server性能很强,没纤程作为client性能是推不上的。同等逻辑C/C++的内存峰值到了Java这能翻几十倍,做框架只为了实现回调就得interface满天飞。
现在Spring Cloud一大堆这种问题,Zuul当微服务网关,内存开小点1G往下压测分分钟给你oom要不就锁异常。网关pod死了,go写的k8 10ms内重新拉起了网络均衡,结果request路由到Zuul,Java系的Zuul 和 Spring boot还在重启1分钟,十几万个request fail,这坑还无药可救。客户不满意质问你这网关的HA搞得像个鬼啊,你能咋办,跟他说java就这尿性?
性能不说了,见过上 spring 架构师,要么不懂性能,要么不在乎性能,要么就是啥都明白玩政治的猴精。
常对年轻同事说,Java 不要再投资,不要浪费生命浪费智力。
为了个 Rest 不通