私底下,隔三差五就有讀者問我:「二哥,怎麼樣才能像你同樣,成爲一名優秀的 Java 開發者呢?」假如把「怎麼才能像你同樣」去掉的話,這個問題就是一個好問題,不然的話,總有點彩虹屁的嫌疑。但話說回來,我喜歡這種提問的藝術。java
從上大學那會學 Java 到如今,我已經積攢了 10 多年的編程經驗,雖然離優秀還有很長的距離,但總歸是能夠分享一些心得給你,這對你來講,算不上相當重要,但多少是有點用的,至少在我看來。程序員
若是我沒記錯的話,已經 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 以後,啓動一個線程只須要這樣:json
Thread t1 = new Thread(() -> {
System.out.println("Java 8");
});
t.start();
複製代碼
孰優孰劣,一清二楚。若是你對 Java 8 的特性還不瞭解的話,那真的很難成爲一名優秀的 Java 開發者。仍是那句耳朵能聽出來繭子的話:「種一棵樹最好的時間是 10 年前,其次是如今。」行動起來吧!設計模式
Spring 目前在 Java 開發中佔據了重要的一環,能夠說是密不可分。絕不誇張的說,不會 Spring,絕對算不上一名優秀的 Java 開發人員。我敢賭 1 塊錢,幾乎全部採用 Java 語言編寫程序的公司,都在用 Spring 框架。微信
雖然我沒有賭錢的惡習,但我敢保證本身能贏。只賭 1 塊錢,不是我摳門,而是爲了輸家考慮,這點錢不至於賴帳吧。架構
架構在與時俱進,就連小到只有兩三我的的開發團隊都在從單一應用程序遷移到微服務。這就是所謂的浪潮吧,而 Spring Boot 和 Spring Cloud 在這方面有着自然的優點。框架
我在日企的時候,測試佔據着重要的位置,代碼 review、單元測試、集成測試等等忙得是不亦樂乎。但當我回到洛陽後,團隊就徹底沒有這種測試的文化,雖然我在竭力倡導,但效果不佳,搞得不少問題都在線上突發,最後疲於應付。
若是你想成爲一名負責任的開發人員,那就好好磨練你的測試技能吧。JUnit 和 TestNG 是 Java 中很是受歡迎的單元測試框架。設計 JUnit 的目的是爲了分析代碼單元,而 TestNG 的預期用途則針對高級測試。這兩個框架不能說是勢均力敵,但最起碼是各有千秋。
我有一個大學同窗,叫石磊,編程能力絕對配得上在一線大廠工做。惋惜的是,當初選擇了二線城市鄭州,這在很大程度上侷限了他的發展。
當我遇到任何編程上面的問題時,第一個想到的就是石磊,不管我扔什麼問題,他幾乎都能給我提供解決方案,他對整個 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)加密解密類庫。
學編程就像練武功同樣,武功要練得很牛逼,有兩樣東西不能丟。第一,是內功;第二,是武功祕籍。內功對應到編程就是咱們編程基礎能力,那編程的設計模式就能夠想象成武術中的武功祕籍。
設計模式就是根據不一樣類型場景,設計優雅的(編碼)解決方案。學好設計模式有不少好處,好比,容易看懂經典代碼中的邏輯(不少優秀的開源框架大量使用了設計模式);應對面試時對答如流(設計模是面試重點);能夠編寫出優雅的解決方案(或者代碼)。
若是你想學習設計模式的話,我推薦一本秦小波的《設計模式之禪》,趣味化十足,讀起來也很是容易理解。
若是你可以熟練掌握 Maven、Git、Jenkins、Docker 等持續集成和部署工具的話,在進行開發運維的時候就會感受若有神助。我來隆重地介紹一下這 4 位同窗:
Maven,是一個(特別是 Java)軟件項目管理及自動構建工具,由大名鼎鼎的 Apache 軟件基金會所提供,基於項目對象模型(縮寫爲 POM,知道那個 xml 文件的由來了吧)的概念,利用一箇中央倉庫來管理項目的構建和文檔等步驟。
Git 是一個分佈式版本控制軟件,最初由林納斯·託瓦茲創做,於 2005 年以 GPL 的開源協議發佈。大型交友平臺 Github 就是用 Git 作版本控制的代碼託管平臺。
Jenkins 是一款由 Java 編寫的開源的持續集成工具,使開發者從繁雜的集成工做中解脫出來,專一於更爲重要的業務邏輯實現上。
Docker 讓應用程序部署在軟件貨櫃下的工做實現了自動化,藉此在 Linux 操做系統上提供一個額外的軟件抽象層,以及操做系統虛擬化的自動管理機制。
提及 IDE,讓我不由自主地想起一句古話:「工欲善其事必先利其器」。IDE 就好像士兵手裏的那把搶和刀,這玩意若是用得不熟練,怎麼上陣殺敵呢?
我是在去年的時候才從 Eclipse 切換 IntelliJ IDEA 的,一開始極其排斥和抗拒,讀者都勸我堅持用一段時間,沒想到一個月後就愛上了。你要是非要給我扣上個「喜新厭舊」的帽子,我也是毫無反駁的理由,誰讓這玩意這麼好用呢?
上次推薦了兩個提升代碼質量的 IDEA 插件,沒想到,你們都說好,你若是想變得優秀的話,趕忙去試試。
要想成爲一名真正優秀的 Java 開發人員,JVM 這關注定是繞不過去的,就好像你費盡幾代人的心血蔘加了童試、鄉試、會試,最後要是中不了進士,那就有點前功盡棄。
你必須得搞清楚 JVM 的工做原理、即時編譯(JIT)、垃圾收集等相關知識點,才能夠編寫出健壯且高性能的 Java 應用程序。若是想系統性的學習,我推薦周志明的《深刻理解 Java 虛擬機》,這是本爲數很少被讚譽有加的國內程序員寫的書。
好了,我親愛的讀者朋友,以上就是本文的所有內容了,能看到這裏的就是最優秀的程序員。原創不易,莫要白票,請你爲本文點贊吧,這將是我寫做更多優質文章的最強動力。
若是以爲文章對你有點幫助,請微信搜索「 沉默王二 」第一時間閱讀,回覆【666】【1024】更有我爲你精心準備的 500G 高清教學視頻(已分門別類),以及大廠技術牛人整理的面經一份。