啟蒙文學站

位置:首頁 > 散文集 > 優美文章

Java開發者必讀的10篇精選文章

作為最受歡迎的程式語言之一,Java已經走過了20個年頭。從已經落寞的諾基亞到現在火熱的電商系統,我們都能看到Java語言的身影。經過20xx年的歷練,這門語言已經逐漸成熟,並經過很多大型系統的考驗。社群關於這門語言的討論,也從語言使用過渡到了效能優化以及反思。下面是本站小編為大家收集整理的Java開發者必讀的10篇精選文章,歡迎大家閱讀。

Java開發者必讀的10篇精選文章

Java開發者必讀的10篇精選文章

1、作為一名Java程式設計師,我為何不在生產專案中轉向GO

自Google在20xx年釋出Go語言的第一個正式版之後,這門語言就以出色的語言特性受到大家的追捧,尤其是在需要高併發的場景下,大家都會想到是不是該用Go。隨後,在國內湧現出了一批以七牛為代表的使用Go作為主要語言的團隊,而許世偉大神本人也在各種場合下極力推動Go在國內的發展,於是在這種大環境下,中國的Go開發者群體逐漸超越了其他地區。

那麼問題來了,業餘時間好學是一回事,真正要將一個新東西運用到生產中則是另一回事。JavaScript的開發者可以義無反顧地選擇Node.js,但是對於Java開發者來說,在下一個大專案裡究竟是該選擇Go,還是Java呢?

2、企業級Java應用最重要的4個性能指標

雖然很多人都曾預言Java將一蹶不振,但是不可否認的是,很多重要專案中,尤其是銀行和政府一些大型專案,Java仍在其中扮演著極其重要的角色。國內APM領軍企業OneAPM的Java工程師陶炳哲,多次參與銀行、運營商等大型企業的效能優化工作,總結了企業級Java應用最應重視的4個性能指標,主要包括:商業事務,外部服務,垃圾回收以及應用佈局。

3、你的Java程式碼對JIT編譯友好嗎?

JIT編譯器是Java虛擬機器(以下簡稱JVM)中效率最高並且最重要的組成部分之一。但是很多的程式並沒有充分利用JIT的高效能優化能力,很多開發者甚至也並不清楚他們的程式有效利用JIT的程度。

在本文中,我們將介紹一些簡單的方法來驗證你的程式是否對JIT友好。這裡我們並不打算覆蓋諸如JIT編譯器工作原理這些細節。只是提供一些簡單基礎的檢測和方法來幫助你的程式碼對JIT友好,進而得到優化。

4、Java大牛談:我為什麼反對用Node

隨著無線端的快速普及,前後端分離技術走上前臺,而Node由於它的一些特性被工程師快速接受尤其是前端工程師,所以產生了很多Node是否會引起新的技術變革的討論。

我本人是淘系的一個Web開發人員,基本上經歷了淘系關於Node和Java技術選型討論的過程,所以今天我給大家推演一下在像淘系這個環境下Node能否會成為主流的Web開發技術,當然後面也給出了我認為比較適合的場景。

在Java虛擬機器(以下簡稱JVM)中,類包含其對應的元資料,比如類的層級資訊,方法資料和方法資訊(如位元組碼,棧和變數大小),執行時常量池,已確定的符號引用和虛方法表。

在過去(當自定義類載入器使用不普遍的時候),類幾乎是“靜態的”並且很少被解除安裝和回收,因此類也可以被看成“永久的”。另外由於類作為JVM實現的一部分,它們不由程式來建立,因為它們也被認為是“非堆”的記憶體。

在JDK8之前的HotSpot虛擬機器中,類的這些“永久的”資料存放在一個叫做永久代的區域。永久代一段連續的記憶體空間,我們在JVM啟動之前可以通過設定-:MaxPermSize的值來控制永久代的大小,32位機器預設的永久代的大小為64M,64位的機器則為85M。永久代的垃圾回收和老年代的垃圾回收是繫結的,一旦其中一個區域被佔滿,這兩個區都要進行垃圾回收。但是有一個明顯的問題,由於我們可以通過‑:MaxPermSize 設定永久代的大小,一旦類的元資料超過了設定的大小,程式就會耗盡記憶體,並出現記憶體溢位錯誤(OOM)。

備註:在JDK7之前的HotSpot虛擬機器中,納入字串常量池的字串被儲存在永久代中,因此導致了一系列的效能問題和記憶體溢位錯誤。想要了解這些永久代移除這些字串的資訊,請訪問這裡檢視。

6、Java9新功能:HTTP2&REPL篇

對Java 9的炒作將不再侷限於模組化(modularity),Java 9正在蒐羅大量額外的功能模組,這些功能模組正作為Java增強提案(JEP)提交,並在OpenJDK (Java SE的參考實現專案)中實現。

在這篇文章中,我們將重點關注一些或將在Java 9整個生命週期中,對開發者的工作生活影響最大的JEP,包括新的HTTP/2支援和JShell REPL(讀取-求值-列印-迴圈),後者帶來了基於shell的互動式Java開發環境和探索性開發API。

7、簡化你的Java程式碼,讓工作更高效

計算機專家在問題求解時非常重視表示式簡潔性的價值。Unix的先驅者Ken Thompson曾經說過非常著名的一句話:“丟棄1000行程式碼的那一天是我最有成效的一天之一。”這對於任何一個需要持續支援和維護的軟體專案來說,都是一個當之無愧的目標。早期的Lisp貢獻者Paul Graham甚至將語言的簡潔性等同為語言的能力。這種對能力的認識讓可以編寫緊湊、簡介的程式碼成為許多現代軟體專案選擇語言的首要標準。

相比於其他程式設計語言,Java語言的冗長已經名聲在外。其主要原因是由於程式開發社群中所形成的慣例,在完成任務時,很多情況下,要更大程度地考慮描述性和控制。例如,長期來看,長變數名會讓大型程式碼庫的可讀性和可維護性更強。描述性的類名通常會對映為檔名,在向已有系統中增加新功能時,會顯得很清晰。如果能夠一直堅持下去,描述性名稱可以極大簡化用於表明應用中某一特定的功能的文字搜尋。這些實踐讓Java在大型複雜程式碼庫的大規模實現中取得了極大的成功。

本文將著重介紹編寫簡潔Java程式碼的最佳實踐,特別是關於JDK8中新增的功能。簡而言之,Java 8中Lambda表示式的引入讓更加優雅的程式碼成為可能。這在用新的Java Streaming API處理集合時尤其明顯。

8、你的Java日誌,有沒有用這些改進辦法

在任何系統中,日誌都是非常重要的組成部分,它是反映系統執行情況的重要依據,也是排查問題時的必要線索。絕大多數人都認可日誌的重要性,但是又有多少人仔細想過該怎麼打日誌,日誌對效能的影響究竟有多大呢?今天就讓我們來聊聊Java日誌效能那些事。

掃描二維碼關注公眾號後,傳送數字 8 即可閱讀原文。

9、Java NIO通訊框架在電信領域的實踐

從廣義上看電信軟體的範圍非常廣,細分實際可以分為兩大類:系統軟體和業務應用軟體。

系統軟體包括路由器底層的信令機軟體、手機作業系統等,業務應用軟體主要包括客戶關係管理CRM、網上營業廳、融合計費OCS和各類訊息閘道器,例如簡訊閘道器、彩信閘道器等。

本文重點介紹電信業務應用軟體的技術變遷歷史,以及華為電信軟體架構演進和Java NIO框架在技術變遷中起到的關鍵作用。

10、寫程式碼這回事兒,架構師你可以說不嗎?

要讓一個成功的架構得以實現,架構師必須要在整個生命週期始終保持與交付團隊的緊密合作。保持緊密合作能夠促進架構層面的快速反饋迴圈。並且還能夠為架構師提供更多的與團隊交流架構願景和領導團隊的機會。

正如本文題目所描述的那樣,架構師除了可以參與到實際的編碼工作中之外,還有許多其他的方式可以參與到交付團隊中,例如結對程式設計和同行評審。相反,某些參與方式有可能會對團隊造成負面影響,例如接管交付、不允許團隊自組織或者採用集體所有制。

其中一個關鍵目的是為了避免“象牙塔”架構師的角色——只在專案最初發布架構,然後就再也不見蹤影。謀求與交付團隊的協作關係,共同努力儘早識別和解決架構性缺陷,從而交付成功的架構和最終的產品。

※本文作者:※