雖然有Google的背書,但發(fā)展了這些年Golang依然還只算個(gè)小眾語言。如果做過Golang招聘應(yīng)該更深有體會(huì),除了宇宙條和少量金融、游戲、云服務(wù)的企業(yè)在招Golang研發(fā),國內(nèi)對服務(wù)端的招聘大戶依然是Java。那些試圖用Golang去重寫Java的項(xiàng)目,我覺得可能有以下幾點(diǎn)考慮。
1)基于性能和資源消耗考慮,Golang有協(xié)程機(jī)制,支持高并發(fā),資源消耗小,啟動(dòng)速度快,有云原生先天的優(yōu)勢。但這不是絕對的優(yōu)勢,技術(shù)在發(fā)展,最新版的Java也開始支持協(xié)程。
2)相較于Java,目前Golang還處于發(fā)展早期,相對沒有那么卷。太閑了有些人可能就要出來搞點(diǎn)事情,比如造個(gè)輪子玩玩,另外可能還有不少面向找工作編程的。前后端分離概念剛出來的那幾年,應(yīng)該都見過大量公司都在瘋狂造js框架輪子的盛況,那幾年不造個(gè)輪子估計(jì)出門都不好意思說自己是做前端的。
3)任何一門語言生態(tài)的豐富都需要大量項(xiàng)目的支撐,除了眾所周知的云原生領(lǐng)域有很多知名Golang項(xiàng)目,比如docker和k8s。國內(nèi)開源框架少有用Golang寫的,模仿成熟的框架也算是一種參與生態(tài)建設(shè)的方式。
4)一家公司很有可能存在多個(gè)技術(shù)棧的異構(gòu)系統(tǒng),歷史遺留系統(tǒng)和新系統(tǒng)都需要系統(tǒng)通信和限流熔斷等基礎(chǔ)設(shè)施,那使用Golang寫的新系統(tǒng)接入就需要給Dubbo等框架增加新語言的支持。
對于使用Golang重寫Java項(xiàng)目的價(jià)值,本人還是持保留態(tài)度。一方面國產(chǎn)開源項(xiàng)目發(fā)展實(shí)在太慢,以我關(guān)注的spring cloud alibaba為例,半年多才更新了一個(gè)小版本。另一方面伴隨云原生和service mesh技術(shù)的普及,dubbo等技術(shù)并不是唯一選擇,如果發(fā)展跟不上可能就會(huì)面臨淘汰。國產(chǎn)開源道阻且長,吾輩還需努力。