總聽到一些人在說自學(xué)Java有多難多難,確實,Java不是那么容易能夠掌握的語言,可自己都沒有嘗試學(xué)過,就只聽別人的一面之詞,豈不是要錯過這門前途似錦的開發(fā)語言了。
自學(xué)難,其實跟你的學(xué)習(xí)能力,和學(xué)習(xí)計劃有關(guān)的。關(guān)于學(xué)習(xí)能力,只能從自身上著原因了,如果你足夠努力,都可以攻破重重知識點的。關(guān)于學(xué)習(xí)計劃,如果你還沒有,可以參考小編的這一套開始學(xué),保你從入門到精通。
1.工具
工具部分分為不同的部分。首先,你的IDE,它是你的主要工具,幾乎可以完成你要求的所有操作,例如編譯、運行、調(diào)試、分析、測試、比較文件和代碼、重構(gòu)等等。
第二部分是構(gòu)建工具,你需要使用它來構(gòu)建和部署Maven和Gradle等項目。這些中的任何一個就足夠了。我剛剛列出了ANT,但那是針對遺留項目的。對于所有新的Java項目,選擇Maven或Gradle。
而且,第三個也是最關(guān)鍵的部分包括像Docker和Kubernetes這樣的容器,像Jenkins和TeamCity這樣的CI/CD工具,以及像Ansible這樣的基礎(chǔ)設(shè)施自動化工具。
2.JDK API
下一個要學(xué)習(xí)的重要事情是JDK API,這對任何Java開發(fā)人員來說都非常非常重要。這是一個相當(dāng)大的部分,這就是為什么它被劃分為Java集合框架、Java并發(fā)、Java IO和Java 8 API等核心領(lǐng)域,讓我們逐一探討
1)Java集合框架
這是每個Java開發(fā)人員都應(yīng)該學(xué)習(xí)的最重要的Java API之一。該API提供類Java鏈表、集合、堆棧、隊列、哈希表、優(yōu)先級隊列等標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)。
至少你應(yīng)該了解所有日常對象,如ArrayList、HashMap、HashSet、LinkedHashSet、TreeSet等。它們每個都有其不同的屬性,如ArrayList是一個可以增長的動態(tài)數(shù)組,HashMap是哈希表的標(biāo)準(zhǔn)實現(xiàn)并且可以用于存儲鍵值對。
2)Java并發(fā)
在Java Collections之后,接下來,Java中最關(guān)鍵的API就是多線程和并發(fā),我堅信,如果你想成為一名稱職的Java開發(fā)人員,你必須對Java Concurrency API有扎實的理解和掌握。
你不僅應(yīng)該深入了解線程、可運行、對象鎖定和同步等基本概念,還應(yīng)該熟悉死鎖、活鎖、競爭條件等概念以及如何處理它們。
3)Java IO
與Java Collections和Java Multithreading API相比,他們都對Java IO和NIO API知之甚少。我可以理解很多人花費大量時間學(xué)習(xí)這兩個API,但你不能將這些關(guān)鍵API拋在后面。
如果你必須編寫真實世界的核心Java應(yīng)用程序,則需要使用java.io包中的File、InputStream、OutputStream、Reader、Writer等類,這些類是Java IO API的核心。同樣,你還需要從java.nio了解ByteBuffer、FileChannel、Selector等關(guān)鍵類API。
3.框架
Java比較好的一點是它有一個充滿活力的生態(tài)系統(tǒng),這意味著幾乎所有東西都有很多框架和庫。通常,我不建議Java開發(fā)人員學(xué)習(xí)框架,直到他需要在他的項目中使用它。盡管如此,還是有一些框架和庫,我相信每個Java開發(fā)人員都應(yīng)該知道,例如Spring、Spring Boot、Hibernate、Log4j、JUnit等。
1)Spring框架
如果你想在2021年成為Java開發(fā)者,我強烈建議你先學(xué)習(xí)Spring Framework。這是比較流行的Java框架之一。
Spring Framework可以編寫干凈的代碼,通過提供依賴注入和控制反轉(zhuǎn)等功能,它更易于測試和維護。它還為大多數(shù)日常任務(wù)提供了豐富的API,這就是為什么每個Java開發(fā)人員都應(yīng)該學(xué)習(xí)Spring框架的原因。
2)Hibernate框架
它基于JPA(Java Persistence API)。準(zhǔn)確地說,Hibernate在JPA之前出現(xiàn),但是因為JPA是Java中實現(xiàn)持久層的標(biāo)準(zhǔn)API,所以Hibernate實現(xiàn)了它。
現(xiàn)在,為什么要學(xué)習(xí)Hibernate?嗯,因為你將使用的大多數(shù)Java應(yīng)用程序?qū)⑴c數(shù)據(jù)庫交互,并且使用JDBC在Java中處理數(shù)據(jù)庫并且沒有像Hibernate這樣的適當(dāng)框架是非常痛苦的。
它提供了一些基本功能,例如開箱即用的緩存和事務(wù),這意味著你有更多時間專注于應(yīng)用程序邏輯,然后在應(yīng)用程序中實現(xiàn)緩存。這極大地提高了Java應(yīng)用程序的性能,也是迄今為止我使用Hibernate的最重要原因。
3)Spring Boot
采用了Spring的簡化哲學(xué),并使其易于使用Spring本身。就像Spring使創(chuàng)建Java應(yīng)用程序變得更容易一樣,Spring Boot使創(chuàng)建基于Spring的Java應(yīng)用程序變得更容易。
自動配置等功能消除了與配置Spring應(yīng)用程序相關(guān)的大部分痛苦。類似地,入門POM功能將常用的依賴項分組為簡單的可重用POM。