-
1 # 鮮事
-
2 # 碼哥學途
從使用和熟悉程度來講,選java;golang和java各有各的優勢和特性,各有千秋,按需選取。
1.java的優勢和特性
> 跨平臺/可移植性
> 安全性
> 高效能
> 分佈性
> 多執行緒
> 穩健性
> 面向物件
2. golang優勢和特性
golang 有gc,語法新式,goroutine,對比java有很多簡潔設計;也有不足之處,gc不夠高效,字串操作不方便,型別後置閱讀不便,泛型問題等;
-
3 # 急速馬力快de原始碼控
一個非常好的問題。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框架在快速開發領域非常受歡迎。
-
4 # 一一哥Sun
先說一下Go語言
golang,是go語言的全稱。它作為伺服器程式語言適合處理日誌、資料打包、虛擬機器處理、檔案系統、分散式系統、資料庫代理等;網路程式設計方面,Go語言廣泛應用於Web應用、API應用、下載應用等;除此之外,Go語言還可用於記憶體資料庫和雲平臺領域。
雖然宣傳如此,但是國內真正招聘Go語言開發的公司並不多,你要是學這個,就業難度是比較大的。
當然如果自己的學歷較好,並且Go學的也比較好,在北京上海這樣的一些城市裡面,還是可以找到Go的開發崗位的,薪資也不錯。
再說說JavaJava從1995年發明到現在,經歷了25年的時間檢驗,得到了這個世界上大多數公司後臺專案的認可,也就是說大多數後臺專案的技術選擇,首選Java。目前市面上的Java程式設計師,大多數是做Web方向的開發,部分是做Android開發,少量是做PC端軟體的開發。
Java發展到現在,構建出了非常完整的生態環境,可以說幾乎每個公司基本都有Java程式設計師,從後臺開發到Android移動端,Java都必不可少,所以學習Java不用擔心就業問題。
-
5 # 碼農二胖
其實一般情況下人們不會區分言語之間的強弱,而是依據特性和需求選擇合適的。
java儘管一向被黑,可是不得不說在工程上java仍然是十分好的一個選擇,效能好,靜態型別設計,準確的檢查,基本完備的功用。儘管總是被人詬病java繁瑣囉嗦,可是至少95%的功用能夠很正常的完成,剩餘5%不常見的需求,用不太優雅的方法也能夠完成。總之儘管常常被黑,可是實際上沒有多少十分難以忍受的缺點。
golang相比c系當然有許多長處,又有gc,語法新式,比照java有許多簡潔設計。可是也有一點問題,撇開擴充套件庫的數量和生態,也有比如gc不行高效,字串操作不方便,型別後置閱讀不便,泛型問題等。儘管goroutine十分好。所以還是回到了那句俗語,各有千秋,按需選取。 -
6 # pick剪輯
就業難度
從就業的機會來說,java依舊是傲視群雄Java 這種老牌程式語言,雖然一直被詬病語法臃腫,但是其實隨著Java版本的更新,已經逐漸支援了很多新語言的特性,並且在2019年的TIOBE程式語言排行榜上,Java每月總是穩坐第一寶座,毋庸置疑,它仍然是市場上最流行和最火爆的程式語言。而go語言的話,對不起,工作崗位少之又少,基本上就幾個大廠在用。如果你沒有頂尖的學歷和技術的話,選擇go的話基本上等於選擇狗帶。當然,家裡邊經濟條件允許試錯,自己又特別喜歡go的情況下可以嘗試。沒錢的話個人建議還是先把所謂的理想和抱負放一放,遵循市場的規律,做一個小眾的另類是需要付出代價的。
就業方向目前,Java的主要就業方向有三個。
Web開發
Web開發語言很多,Java是其中之一。Java在開發高訪問、高併發、叢集化的大型網站方面有很大的優勢。
Android開發
Android是全球最大的智慧手機作業系統,2014年第三季度Android手機出貨量佔比達到84%。Android應用的主要開發語言就是Java。客戶端開發
Java客戶端開發主要面向政府、事業單位和大型企業,如醫療、學校、OA、郵箱、投票、金融、考試、物流、礦山等資訊方面的系統。
而go語言目前主要的就業方向是微服務構建。所以,也要根據就業方向去選擇語言,如果你是一個PHPER,那麼go語言將會是一種不錯的選擇,Go 程式可以直接從 PHP 執行,這些可以讓 PHPer 以簡單的方式、低廉的成本獲得更好的效能和效率。但是如果你是一個新手的話,那麼最好還是不要頭太鐵去選擇go,java都會了,還怕學不會go嗎?
-
7 # 阿邁達聊技術
大家好,我是阿邁達,有趣的網際網路軟體工程師。專業角度分析技術原理,默的態度解讀科技網際網路資訊。
Java是目前最火、最流行的程式語言,在程式語言排行榜穩居第一。Golang以其簡單的語法、快速入門、高併發等特點越來越受歡迎,得到了很多程式設計師的喜歡。在專案開發中我們如何在兩者之間選擇呢?
Java適合所有專案的開發Java基本適合任何專案的開發,尤其是Web專案開發,不管是什麼型別的Web專案,包括電商、培訓、金融等行業,Java都是最佳選擇。Java有豐富的框架和第三方中介軟體整合方案。例如目前最流行的SpringMvc、SpringBoot框架等,使用這些框架可以讓我們快速構建一個Web專案,我們只需要關注具體的業務實現。而對於像Kafka、Redis、Mysql、Apollo、Netty等第三方中介軟體,Java都有提供相應的整合方案。不管是弱事務性業務還是強事務性業務,Java的框架都進行了底層封裝,對於開發人員來說不需要過度的關注底層細節,所以,Java是最佳、最廣泛的選擇。
業務簡單,高併發選擇GoGolang作為後起之秀,其高併發特性得到了很多高併發專案的青睞。小編阿邁達本人也是Go語言的開發者之一,並且將公司的一個高併發專案用go語言進行了重構,取得了非常不錯的效能提升。Go語言的生態目前還在慢慢發展中,很多元件都不太成熟,如果是一個相對複雜的Web專案,不建議選擇使用Go語言。因為目前為止,還沒有一個相對完善的Go web框架,很多東西需要開發人員去自己實現,重複造輪子。但如果你的專案業務邏輯相對簡單,並且併發量非常大,可以考慮選擇使用Go語言,它在高併發效能會讓你眼前一亮。
總結根據專案業務邏輯的複雜度選擇Java或者Go,如果業務邏輯複雜,需要整合很多中介軟體,建議選擇Java,如果業務邏輯簡單,併發量大,選擇Go語言。
-
8 # 小小程式設計師玲兒
百戰程式設計師IT問題專業解答
其實一般情況下人們不會區分言語之間的強弱,而是依據特性和需求選擇合適的。
java儘管一向被黑,可是不得不說在工程上java仍然是十分好的一個選擇,效能好,靜態型別設計,準確的檢查,基本完備的功用。儘管總是被人詬病java繁瑣囉嗦,可是至少95%的功用能夠很正常的完成,剩餘5%不常見的需求,用不太優雅的方法也能夠完成。總之儘管常常被黑,可是實際上沒有多少十分難以忍受的缺點。
golang相比c系當然有許多長處,又有gc,語法新式,比照java有許多簡潔設計。可是也有一點問題,撇開擴充套件庫的數量和生態,也有比如gc不行高效,字串操作不方便,型別後置閱讀不便,泛型問題等。儘管goroutine十分好。所以還是回到了那句俗語,各有千秋,按需選取。
-
9 # 技術簡說
我是十年程式猿,分別用過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開發啦。
-
10 # 比逗的冷高
選哪個?看你需求啊,使用場景啊,冷不丁的問一句誰敢建議!
沒有最好的開發語言,要因地制宜
快速開發就選go,想要穩定就選java
回覆列表
從整體解決方案來講,java可能是無可比擬的。
不管是你要構建一套微服務,或者是要做一個通訊服務,甚至是做一個許可權管控,java都有一整套的框架可用。所以,現實中很多搞java的,都是在不停的學框架,一個典型的java架構師,往往都是開啟spring,或者其它一些框架的官網,把一坨一坨的框架原始碼示例copy下來,然後再在這一坨坨程式碼中做調整,個性化業務定製。換言之,做java開發的“搬磚感”是最強烈的,可以分分鐘理解為什麼程式設計師被稱做碼農。
Golang和其他語言一樣並非完美,它有很多優點,也當然有很多缺點
1、學習曲線容易
Go語言語法簡單,包含了類C語法。因為Go語言容易學習,所以一個普通的大學生花幾個星期就能寫出來可以上手的、高效能的應用。在國內大家都追求快,這也是為什麼國內Go流行的原因之一。
2、效率:快速的編譯時間,開發效率和執行效率高
開發過程中相較於 Java 和 C++呆滯的編譯速度,Go 的快速編譯時間是一個主要的效率優勢。Go擁有接近C的執行效率和接近PHP的開發效率。C 語言的理念是信任程式設計師,保持語言的小巧,不遮蔽底層且底層友好,關注語言的執行效率和效能。而 Python 的姿態是用盡量少的程式碼完成儘量多的事。於是我能夠感覺到,Go 語言想要把 C 和 Python 統一起來,這是多棒的一件事啊。
3出身名門、血統純正
之所以說Go出身名門,從Go語言的創造者就可見端倪,Go語言絕對血統純正。其次Go語言出自Google公司,Google在業界的知名度和實力自然不用多說。Google公司聚集了一批牛人,在各種程式語言稱雄爭霸的局面下推出新的程式語言,自然有它的戰略考慮。而且從Go語言的發展態勢來看,Google對它這個新的寵兒還是很看重的,Go自然有一個良好的發展前途。
4、自由高效:組合的思想、無侵入式的介面
Go語言可以說是開發效率和執行效率二者的完美融合,天生的併發程式設計支援。Go語言支援當前所有的程式設計正規化,包括程序式程式設計、面向物件程式設計、面向介面程式設計、函數語言程式設計。程式設計師們可以各取所需、自由組合、想怎麼玩就怎麼玩。
5、強大的標準庫
這包括網際網路應用、系統程式設計和網路程式設計。Go裡面的標準庫基本上已經是非常穩定了,特別是我這裡提到的三個,網路層、系統層的庫非常實用。**Go 語言的 lib 庫麻雀雖小五臟俱全。**Go 語言的 lib 庫中基本上有絕大多數常用的庫,雖然有些庫還不是很好,但我覺得不是問題,因為我相信在未來的發展中會把這些問題解決掉。
6、部署方便:二進位制檔案,Copy部署
這一點是很多人選擇Go的最大理由,因為部署太方便了,所以現在也有很多人用Go開發運維程式。
7、簡單的併發
**並行和非同步程式設計幾乎無痛點。**Go 語言的 Goroutine 和 Channel 這兩個神器簡直就是併發和非同步程式設計的巨大福音。像 C、C++、Java、Python 和 JavaScript 這些語言的併發和非同步方式太控制就比較複雜了,而且容易出錯,而 Go 解決這個問題非常地優雅和流暢。這對於程式設計多年受盡併發和非同步折磨的程式設計者來說,完全就是讓人眼前一亮的感覺。Go 是一種非常高效的語言,高度支援併發性。Go是為大資料、微服務、併發而生的一種程式語言。
8、穩定性
Go擁有強大的編譯檢查、嚴格的編碼規範和完整的軟體生命週期工具,具有很強的穩定性,穩定壓倒一切。那麼為什麼Go相比於其他程式會更穩定呢?這是因為Go提供了軟體生命週期(開發、測試、部署、維護等等)的各個環節的工具,如go tool、gofmt、go test。
吃飯家伙中,Java 最強。
平衡度方面,Go 最強。
所以還是回到了那句俗話,各有千秋,按需選取。