为什么许多原本的Java项目都试图用go进行重写开源?

虽然有Google的背书,但发展了这些年Golang依然还只算个小众语言。如果做过Golang招聘应该更深有体会,除了宇宙条和少量金融、游戏、云服务的企业在招Golang研发,国内对服务端的招聘大户依然是Java。那些试图用Golang去重写Java的项目,我觉得可能有以下几点考虑。

1)基于性能和资源消耗考虑,Golang有协程机制,支持高并发,资源消耗小,启动速度快,有云原生先天的优势。但这不是绝对的优势,技术在发展,最新版的Java也开始支持协程。

2)相较于Java,目前Golang还处于发展早期,相对没有那么卷。太闲了有些人可能就要出来搞点事情,比如造个轮子玩玩,另外可能还有不少面向找工作编程的。前后端分离概念刚出来的那几年,应该都见过大量公司都在疯狂造js框架轮子的盛况,那几年不造个轮子估计出门都不好意思说自己是做前端的。

3)任何一门语言生态的丰富都需要大量项目的支撑,除了众所周知的云原生领域有很多知名Golang项目,比如docker和k8s。国内开源框架少有用Golang写的,模仿成熟的框架也算是一种参与生态建设的方式。

4)一家公司很有可能存在多个技术栈的异构系统,历史遗留系统和新系统都需要系统通信和限流熔断等基础设施,那使用Golang写的新系统接入就需要给Dubbo等框架增加新语言的支持。

对于使用Golang重写Java项目的价值,本人还是持保留态度。一方面国产开源项目发展实在太慢,以我关注的spring cloud alibaba为例,半年多才更新了一个小版本。另一方面伴随云原生和service mesh技术的普及,dubbo等技术并不是唯一选择,如果发展跟不上可能就会面临淘汰。国产开源道阻且长,吾辈还需努力。