想要成為一名優秀的Java程式設計師,你需要這8個錦囊
私底下,隔三差五就有讀者問我:“二哥,怎麼樣才能像你一樣,成為一名優秀的 Java 開發者呢?”假如把“怎麼才能像你一樣”去掉的話,這個問題就是一個好問題,否則的話,總有點彩虹屁的嫌疑。但話說回來,我喜歡這種提問的藝術。
從上大學那會學 Java 到現在,我已經積攢了 10 多年的程式設計經驗,雖然離優秀還有很長的距離,但總歸是可以分享一些心得給你,這對你來說,算不上至關重要,但多少是有點用的,至少在我看來。
01、學習 Java 8
如果我沒記錯的話,已經 Java 14 了。但很遺憾的是,我的 IDE 中配置的 JDK 版本還停留在 Java 13,還有一個備用版本,就是 Java 8。之所以沒有追趕時髦,可能是因為學習的勁頭不像年輕時候那麼足了,讓我先慚愧一會兒。
還有一個客觀上的原因,就是 Java 8 的新特性實在是開天闢地、空前絕後。像 Lambda 表示式,Stream 流,可以稱得上是好用到爆。事實上,還有不少 Java 程式設計師沒有掌握它們(扎心了吧)。
Java 8 之前,啟動一個執行緒要這樣:
Thread t = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Java 8 之前");
}
});
t.start();
Java 8 之後,啟動一個執行緒只需要這樣:
Thread t1 = new Thread(() -> {
System.out.println("Java 8");
});
t.start();
孰優孰劣,一清二楚。如果你對 Java 8 的特性還不瞭解的話,那真的很難成為一名優秀的 Java 開發者。還是那句耳朵能聽出來繭子的話:“種一棵樹最好的時間是 10 年前,其次是現在。”行動起來吧!
02、掌握 Spring
Spring 目前在 Java 開發中佔據了重要的一環,可以說是密不可分。毫不誇張的說,不會 Spring,絕對算不上一名優秀的 Java 開發人員。我敢賭 1 塊錢,幾乎所有采用 Java 語言編寫程式的公司,都在用 Spring 框架。
雖然我沒有賭錢的惡習,但我敢保證自己能贏。只賭 1 塊錢,不是我摳門,而是為了輸家考慮,這點錢不至於賴賬吧。
架構在與時俱進,就連小到只有兩三個人的開發團隊都在從單一應用程式遷移到微服務。這就是所謂的浪潮吧,而 Spring Boot 和 Spring Cloud 在這方面有著天然的優勢。
03、學會單元測試
我在日企的時候,測試佔據著重要的位置,程式碼 review、單元測試、整合測試等等忙得是不亦樂乎。但當我回到洛陽後,團隊就完全沒有這種測試的文化,雖然我在竭力倡導,但效果不佳,搞得很多問題都在線上突發,最後疲於應付。
如果你想成為一名負責任的開發人員,那就好好磨練你的測試技能吧。JUnit 和 TestNG 是 Java 中非常受歡迎的單元測試框架。設計 JUnit 的目的是為了分析程式碼單元,而 TestNG 的預期用途則針對高階測試。這兩個框架不能說是平分秋色,但最起碼是各有千秋。
04、熟練 API 和類庫
我有一個大學同學,叫石磊,程式設計能力絕對配得上在一線大廠工作。可惜的是,當初選擇了二線城市鄭州,這在很大程度上侷限了他的發展。
當我遇到任何程式設計上面的問題時,第一個想到的就是石磊,無論我扔什麼問題,他幾乎都能給我提供解決方案,他對整個 Java 的生態系統(自身的 API 以及開源類庫)瞭解比我要透徹得多。
如果你希望成為石磊那樣富有擔當,就必須要先了解下面這些類庫。
1)日誌類庫,比如說 Log4j、SLF4j、LogBack。
2)JSON 解析類庫,比如說 Gson、Jackson、org.json 和 fastjson。
3)測試類庫,比如說之前提到的 JUnit 和 TestNG。
4)通用類庫,比如說 Google 的 Guava,Apache 的一系列類庫。
5)HTTP 類庫,比如說 HttpClient 和 HttpCore。
6)Word、PDF、Excel 類庫。
7)資料庫連線池類庫,比如說 durid、HikariCP。
8)訊息通知類庫,比如說 RabbitMQ、Kafka。
9)郵件類庫,比如說 JavaMail。
10)加密解密類庫。
05、學習設計模式
學程式設計就像練武功一樣,武功要練得很牛逼,有兩樣東西不能丟。第一,是內功;第二,是武功祕籍。內功對應到程式設計就是我們程式設計基礎能力,那程式設計的設計模式就可以想象成武術中的武功祕籍。
設計模式就是根據不同型別場景,設計優雅的(編碼)解決方案。學好設計模式有很多好處,比如,容易看懂經典程式碼中的邏輯(很多優秀的開源框架大量使用了設計模式);應對面試時對答如流(設計模是面試重點);可以編寫出優雅的解決方案(或者程式碼)。
如果你想學習設計模式的話,我推薦一本秦小波的《設計模式之禪》,趣味化十足,讀起來也非常容易理解。
06、掌握開發運維工具
如果你能夠熟練掌握 Maven、Git、Jenkins、Docker 等持續整合和部署工具的話,在進行開發運維的時候就會感覺如有神助。我來隆重地介紹一下這 4 位同學:
Maven,是一個(特別是 Java)軟體專案管理及自動構建工具,由大名鼎鼎的 Apache 軟體基金會所提供,基於專案物件模型(縮寫為 POM,知道那個 xml 檔案的由來了吧)的概念,利用一箇中央倉庫來管理專案的構建和文件等步驟。
Git 是一個分散式版本控制軟體,最初由林納斯·託瓦茲創作,於 2005 年以 GPL 的開源協議釋出。大型交友平臺 Github 就是用 Git 做版本控制的程式碼託管平臺。
Jenkins 是一款由 Java 編寫的開源的持續整合工具,使開發者從繁雜的整合工作中解脫出來,專注於更為重要的業務邏輯實現上。
Docker 讓應用程式部署在軟體貨櫃下的工作實現了自動化,藉此在 Linux 作業系統上提供一個額外的軟體抽象層,以及作業系統虛擬化的自動管理機制。
07、熟練使用 IDE
說起 IDE,讓我情不自禁地想起一句古話:“工欲善其事必先利其器”。IDE 就好像士兵手裡的那把搶和刀,這玩意如果用得不熟練,怎麼上陣殺敵呢?
我是在去年的時候才從 Eclipse 切換 IntelliJ IDEA 的,一開始極其排斥和抗拒,讀者都勸我堅持用一段時間,沒想到一個月後就愛上了。你要是非要給我扣上個“喜新厭舊”的帽子,我也是毫無反駁的理由,誰讓這玩意這麼好用呢?
上次推薦了兩個提高程式碼質量的 IDEA 外掛,沒想到,大家都說好,你如果想變得優秀的話,趕緊去試試。
08、瞭解 JVM
要想成為一名真正優秀的 Java 開發人員,JVM 這關注定是繞不過去的,就好像你費盡幾代人的心血蔘加了童試、鄉試、會試,最後要是中不了進士,那就有點前功盡棄。
你必須得搞清楚 JVM 的工作原理、即時編譯(JIT)、垃圾收集等相關知識點,才可以編寫出健壯且高效能的 Java 應用程式。如果想系統性的學習,我推薦周志明的《深入理解 Java 虛擬機器》,這是本為數不多被讚譽有加的國內程式設計師寫的書。
好了,我親愛的讀者朋友,以上就是本文的全部內容了,能看到這裡的就是最優秀的程式設計師。原創不易,莫要白票,請你為本文點贊吧,這將是我寫作更多優質文章的最強動力。
如果覺得文章對你有點幫助,請微信搜尋「 沉默王二 」第一時間閱讀,回覆【666】【1024】更有我為你精心準備的 500G 高清教學視訊(已分門別類),以及大廠技術牛人整理的面經一份。