新聞中心
Java有必要轉(zhuǎn)Go語言嗎?針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

成都地區(qū)優(yōu)秀IDC服務(wù)器托管提供商(創(chuàng)新互聯(lián)).為客戶提供專業(yè)的四川服務(wù)器托管,四川各地服務(wù)器托管,四川服務(wù)器托管、多線服務(wù)器托管.托管咨詢專線:13518219792
可以根據(jù)情況來看是否有必要轉(zhuǎn)Go語言,如果對Go語言感興趣,并且條件允許推薦轉(zhuǎn)Go語言,Go語言是一種靜態(tài)強類型、編譯型語言,不僅語法比Java簡潔,而且性能比Java更好,編譯速度更快。
Go
在并發(fā)方面, goroutine 和 channel 機制提供了語言層面的輕量級和毫無拖泥帶水的并發(fā)機制;在性能方面,提供了不弱于 Java 的性能(性能是個偽命題),而內(nèi)存資源消耗方面,相對 Java 和其它動態(tài)語言,具備明顯的優(yōu)勢;在語法方面,具備了部分 Python 的動態(tài)語言特性,在對象初始化、構(gòu)造和序列化等方面提供了無比簡潔的表述方式,而這些處理代碼可能占據(jù) 10%~50% 的代碼分量,尤其對于處理數(shù)據(jù)、配置和協(xié)議映射場景,相比 C、C++、Java 在此方面拙笨,這就是動態(tài)語言為何讓人著迷的關(guān)鍵所在。
這也是為啥 Go 語言第一個版本發(fā)布時就如此受人矚目的關(guān)鍵所在,尤其是對于動態(tài)語言來說,它提供了動態(tài)語言所不具有的并發(fā)與性能優(yōu)勢,Pike 設(shè)計 Go 語言目的是想作為 C/C++ 的另外一個可選的角色(注意不是替換,其設(shè)計目標不是替換),Go 語言之父 Google 首席軟件工程師 Pike 2012 年“大道至簡”演講稿中對于此目標充滿沮喪,引用其中一句話:“Although we expected C++ programmers to see Go as an alternative, instead most Go programmers come from languages like Python and Ruby. Very few come from C++.” C++ 的價值精髓在于:語言提供更加廣泛的抽象、優(yōu)雅和靈活的特性,而這些表達能力是硬件零成本的,而 C 語言一開始就把硬件零成本作為其設(shè)計目的,但語言表述力是 C++ 來解決,Go 思考的方向顯然不是零成本,至少不是零 CPU 成本,Go 的主張更多考慮的是最小化程序員的工作量。
一個是硬件零成本的極致追求,一個是最小化程序員的工作量,誰都替換不了誰最有價值的部分,Go 無法同時符合兩個目標,它選擇了動態(tài)語法和 gc,就注定了它選擇開發(fā)效率,會為開發(fā)效率犧牲硬件效率,所以它走向另外一個方向,也就是 Java 所擅長的應(yīng)用方向,尤其是目前的網(wǎng)絡(luò)和 HTPP 應(yīng)用方面,這就需要有良好的標準庫和生態(tài)系統(tǒng)支持,而在標準庫方面,Go 已提供了處理 tcp/http/xml/json/ 加解密等更輕量級和優(yōu)秀的代碼庫,對網(wǎng)絡(luò)的核心協(xié)議 http 的高并發(fā)支持,已經(jīng)為它提供了撬動 Java 的敲門磚。
但是我們必須面對它目前的不足,在其語言重要特性和嚴謹性方面還遠未成熟,還有不少斷層或臨時解決方案,而這也會影響到其生態(tài)的成熟度,這些問題還需要在新版本中解決。Go 語言 2012 年 3 月 28 日正式發(fā)布第一個版本,截止目前 1.7 版本發(fā)布,差不多一年兩個大版本發(fā)布,中間還有數(shù)個 beta 與 RC 版本發(fā)布,這也基本能說明 Go 語言還未完全準備好。
小結(jié)
Go 已經(jīng)證明在動態(tài)語言需要性能方面,是作為 Python 和 Ruby 的理想候選者;在應(yīng)用開發(fā)方面,尤其是 HTTP 相關(guān)應(yīng)用方面,目前已經(jīng)是站在 Java 面前的一位挑戰(zhàn)者,同時在對資源的掌控力不是那么強烈訴求的地方也是 C/C++ 之外提供另外一種角色。
在生產(chǎn)力方面,其語言特性和生態(tài)系統(tǒng)還未成熟,版本還在快速迭代中,相比動態(tài)語言和 Java,并不具有優(yōu)勢,目前階段是這些語言在某些場景下的可選角色。長期看,在 Google 的鼎力支持下,新特性和庫的應(yīng)用能力還會不斷加入,是一門欣欣向榮的編程語言,但目前階段,建議必須控制好程序的規(guī)模和復雜度,語言和生態(tài)還未提供健全的支撐,同時還必須留意它的不成熟和版本快速迭代帶來的風險。
Java
Java 的成功得益于 10 年前以 Unix 系統(tǒng)為主的 SUN、IBM、Oracle 等大型公司的強力支持,這讓它在企業(yè)應(yīng)用領(lǐng)域和 WEB 應(yīng)用方面站穩(wěn)了腳跟,而隨后的 10 年,前半段是靠 x86+Linux 帶來的革命繼續(xù)保持份額,后半段就是 android 的成功讓其在步履蹣跚停止腳步后再一次登頂。這二十年,Java 積累了最強大的生態(tài)系統(tǒng),你可以說它無所不包, 毋庸置疑,Java 早已是一艘航空母艦的巨大身軀,這足已證明它的地位與成功。但是其語言、庫、框架和生態(tài)系統(tǒng)的復雜度,對技術(shù)人員構(gòu)筑其巨大的障礙,比如并發(fā)方面,語言的 synchronized 機制,標準庫的 notify 再到 concurrent,也可以通過 Apache+tomcat 容器來獲得 HTTP 等的并,而基于 JVM 技術(shù),Java 又與其它語言具有良好的互操作性,比如并發(fā)方面的 Scala,可以選擇其 Actor 或者也是用 Scala 寫的 Akka,當然業(yè)界選擇 nginx 等混搭的場景更多,太多太多…
這就是 Java 的世界,永遠不嫌多,無需要重復造車馬,這是 Java 成功的關(guān)鍵所在,歷史沉淀下來的,讓 Java 提供的選項太多,深入后就知道 Java 的學習成本比 C++ 更高,對程序員的要求比 C++ 更高,除非掉隊了,還在用 7 年甚至 10 年前的 Java 技術(shù),技術(shù)人員要非常精心地組織框架和設(shè)計,否則各種復用的結(jié)果就是堆砌出一個異常臃腫的程序,其運行時對資源的消耗有時候會讓你感到恐懼,而這是太多的基于 Java 所開發(fā)的平臺被廣泛詬病的關(guān)鍵所在,重用是個雙刃劍,需要量體裁衣而不是一鍋端,拿捏的尺度對開發(fā)人員要求無疑是最高昂的,除非語言和標準庫提供了最好最直接的選項。
關(guān)于Java有必要轉(zhuǎn)Go語言嗎問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。
新聞名稱:Java有必要轉(zhuǎn)Go語言嗎
分享鏈接:http://www.dlmjj.cn/article/ieicds.html


咨詢
建站咨詢
