golang和java開發選哪個?為什麼?

黃淑辰


大家好,我是阿邁達,有趣的互聯網軟件工程師。專業角度分析技術原理,默的態度解讀科技互聯網資訊。

Java是目前最火、最流行的編程語言,在編程語言排行榜穩居第一。Golang以其簡單的語法、快速入門、高併發等特點越來越受歡迎,得到了很多程序員的喜歡。在項目開發中我們如何在兩者之間選擇呢?

Java適合所有項目的開發

Java基本適合任何項目的開發,尤其是Web項目開發,不管是什麼類型的Web項目,包括電商、培訓、金融等行業,Java都是最佳選擇。Java有豐富的框架和第三方中間件集成方案。例如目前最流行的SpringMvc、SpringBoot框架等,使用這些框架可以讓我們快速構建一個Web項目,我們只需要關注具體的業務實現。而對於像Kafka、Redis、Mysql、Apollo、Netty等第三方中間件,Java都有提供相應的集成方案。不管是弱事務性業務還是強事務性業務,Java的框架都進行了底層封裝,對於開發人員來說不需要過度的關注底層細節,所以,Java是最佳、最廣泛的選擇。



業務簡單,高併發選擇Go

Golang作為後起之秀,其高併發特性得到了很多高併發項目的青睞。小編阿邁達本人也是Go語言的開發者之一,並且將公司的一個高併發項目用go語言進行了重構,取得了非常不錯的性能提升。Go語言的生態目前還在慢慢發展中,很多組件都不太成熟,如果是一個相對複雜的Web項目,不建議選擇使用Go語言。因為目前為止,還沒有一個相對完善的Go web框架,很多東西需要開發人員去自己實現,重複造輪子。但如果你的項目業務邏輯相對簡單,並且併發量非常大,可以考慮選擇使用Go語言,它在高併發性能會讓你眼前一亮。


總結

根據項目業務邏輯的複雜度選擇Java或者Go,如果業務邏輯複雜,需要集成很多中間件,建議選擇Java,如果業務邏輯簡單,併發量大,選擇Go語言。


阿邁達聊技術


一個非常好的問題。Java是當前使用最普遍的編程語言,Go是冉冉升級的新星。根據最新2020年4月份的TIOBE編程語言指數排行榜,排名前三的分別是Java、C、Python,Go排名在第12位。

TIOBE編程排行榜根據全球工程師、課程和搜索引擎數量為指數得出,在一定程度上反映了編程語言的發展趨勢。

一,編程語言

從編程語言本身來說,Java首次推出在1995年5月,Go在2009年11月正式推出。


1,Java

兩種語言各有特點,Java經歷了20多年,一直在不斷更新推出新版本。2009年Oracle收購Sun公司後,Java發展得到了大力支持,現在使用非常多的Java8發佈於2014年,當前最新版本是Java14。和早期版本相比,從Java8開始,吸收了越來越多的現代化編程語言的優點,比如lambda表達式。


2,Go

Go由Google的三位大神開發,Robert Griesemer,Rob Pike 及 Ken Thompson,是一種靜態強類型、編譯型語言,語法與C相近,功能更豐富:內存安全,GC(垃圾回收),結構形態及併發計算。在2016年,Go被軟件評價公司TIOBE 選為“TIOBE 2016 年最佳語言”。

二,學習難度

1,Java

Java是一種靜態面向對象編程語言,繼承了很多的C++優點,功能強大、簡單易用、跨平臺可移植,具有多線程、分佈式等特點。入門學習不難,隨著項目經驗的積累逐步提升進階。

2,Go

Go也是一種靜態的編譯型語言,語法和C相近,但是採用了不同的變量聲明方式。Go支持垃圾回收功能,並行模型是以通信順序進程(CSP)為基礎,自1.8版本開始支持插件Plugin,能動態加載部分函數。從2.0開始支持泛型。

相比Java,Go內嵌了關聯數組數據庫類型,也稱為哈希表Hashes或字典Dictionaries,就像字符串類型一樣。

三,發展前景

考慮發展前景的話,推薦學習Java語言。Java是當前的主流開發語言,普遍使用在Web開發、電商系統、企業信息管理等各種行業場景。


Java社區非常活躍,各種文檔和學習資料非常豐富。因為使用廣泛,所以很多同事朋友溝通交流。


開發框架也是降低學習難度的有力工具,Spring框架是Java開發時常用框架,有非常豐富的組件和易用的功能,Spring Boot和Spring Cloud更是簡化了開發過程中的瑣碎工作,自動化配置依賴模塊、開箱即用和約定優於配置,這些策略使得Spring框架在快速開發領域非常受歡迎。


我是工作多年的Web應用架構師,陸續發佈關於軟件開發方面的文章,歡迎關注我,瞭解更多IT專業知識。


急速馬力快de源碼控


我是十年程序猿,分別用過c,java,golang開發業務代碼並有豐富的開發經驗。我們先比較下golang和java的特點:

  • 從功能上來講,java可以做到的,golang也可以做到,golang能實現的,java也都能實現;
  • 從軟件集成角度看,java發展了這麼多年,一些第三方的工具和類庫非常豐富,golang則有些遜色,但是最近幾年golang發展迅速,也在迎頭趕上。
  • 從資源使用上來看,java比較臃腫,而golang比較輕量。java程序運行起來動輒1G以上內存,但是一個golang程序可能只需要100M內存就可以完美的run起來。golang的資源節省非常的明顯。
  • 從開發成本來看,java程序員,一抓一大把,價格低廉;golang程序員則比較稀缺,筆者所在公司的hr曾經在智聯招聘的後臺過濾有golang開發經驗的工程師,只找到30份簡歷。

以上就是他們的對比,各有千秋對不對?那如何選擇呢?



在我看來,開發語言選哪個,絕對不是程序員自己想用哪個就用哪個的,而是要根據業務場景而定的。如果你做的產品是平臺類的,上面要跑很多微服務,而且很多微服務是要跑在不同的用戶空間裡,那你可能更在意服務的資源消耗,因為雲服務器是花錢的嘛,在這種業務場景下,使用golang就比較合適,因為它更能幫你省資源,省下來的資源就是利潤。而如果是給甲方做項目,那基礎設施就是甲方提供的,那在這種情況下,你就沒必要省著用了,甚至有些甲方爸爸是國企,還要靠這個申請經費呢,那在這種情況下,就可以很安心的用java開發啦。

以上是我的回答,望採納。有疑問也可以私信給我。


分享到:


相關文章: