溫暖如初
這是一個非常好的問題,作為一名IT從業者,同時也是一名教育工作者,我來說說我的看法。
首先,當前IT(互聯網)行業內有大量的Java程序員,由於Java語言是比較典型的全場景編程語言,所以Java程序員的主攻領域也不盡相同,從IT(互聯網)行業的技術發展趨勢來看,未來很長一段時間內Java語言依然有大量的應用場景,但是隨著Python、Go等語言的崛起,Java程序員如果不做技術升級,自身的職場競爭力還是會受到一定的影響。
隨著大數據和人工智能被列入到“新基建計劃”,相關領域會陸續釋放出更多的發展機會,所以當前的Java程序員應該重點關注一下大數據和人工智能知識的學習,這不僅能夠為自己打開更大的發展空間,同時也會明顯提升自身的職場價值。
對於很多Java程序員來說,從大數據開始學習是比較現實的選擇,原因有三點,其一是大數據技術體系已經趨於成熟,在學習大數據的過程中會有更好的學習體驗,同時也會有大量的案例可以參考;其二是大數據領域的開發難度相對人工智能來說要低一些,而且崗位人才需求類型也比較豐富,對於一部分數學基礎比較薄弱的Java程序員來說,也可以參與到大數據產業鏈中;其三是大數據開發崗位比較多,這一點在近兩年的人才招聘上就有一定的體現,很多研究生會放棄競爭激烈的算法崗位,轉而從事大數據開發崗位。
最後,大數據技術體系非常龐大,對於Java程序員來說,學習大數據技術可以根據自身的知識基礎和崗位特點來制定學習計劃,按照歷史經驗來看,Java程序員學習大數據可以分成三個學習階段,其一是大數據平臺學習階段;其二是算法設計(機器學習)階段;其三是行業實踐階段。
我從事互聯網行業多年,目前也在帶計算機專業的研究生,主要的研究方向集中在大數據和人工智能領域,我會陸續寫一些關於互聯網技術方面的文章,感興趣的朋友可以關注我,相信一定會有所收穫。
如果有互聯網、大數據、人工智能等方面的問題,或者是考研方面的問題,都可以在評論區留言,或者私信我!
IT人劉俊明
首先要學習一下幾點:
1、熟練使用一種 IDE。Intellij IDEA或者 Eclipse 都可以。至少熟悉常用的快捷鍵,會 debug(包括遠程 debug)項目。
2、熟悉一種編輯器。比如 Vim/Emacs/Sublime Text,至少學會搜索/替換/代碼補全。
掌握 Java。經典的《Java 核心技術:卷1 基礎知識》(或者《Java 編程思想》)必看,跳過其中的圖形和 applet 章節。習慣查閱 Java API Doc。為了保證代碼的質量,《Effective Java》、《Clean Code》和《重構》也需要至少通讀一遍。
3、熟悉 Linux 開發環境和 bash shell。
4、掌握 JDK 以外的常用類庫和工具包。
學習代碼規範。
一、面向對象的知識:JAVA是一個面向對象的開發語言,因此熟悉面向對象對學習JAVA很有必要,您要了解:什麼是對象,什麼是類;什麼是封裝,什麼是多態,什麼是繼承;什麼是抽象類,什麼是接口。瞭解了概念後,您還需要這些概念是如何體現的,如類和對象有什麼區別?類是如何封裝的?
二、JAVA語法:如果您有C++等面嚮對象語言的開發經驗,您只需簡單的翻看一下介紹JAVA的相關書籍就可以了。如果您是新手,沒有關係,您下些工夫,好好研究一本JAVA初級教程之類的書就可以了。
三、JSP和HTML:做JAVA程序員都少不了和JSP以及HTML打交道。因此,想成為JAVA程序員就不可避免的要熟悉JSP和HTML,您最好能知道JSP的幾個內置對象,如Session,Request,Reponse,以及常用的JSP標籤,如include,userBean等。如果您再熟悉一下JS和CSS就更好了,那會使您製作的頁面更友好。
四、WebServer:熟悉了以上三種,可以肯定的說您已經可以製作出來JSP頁面了,您也可以在您的頁面裡使用自己開發的JAVA類(JAVABEAN)了,但您的頁面總要跑起來才能看到您要的效果,這就要求您必須熟悉一種WebServer,比如:TOMCAT,RESIN等。您要熟悉如何發佈您的應用,如何利用WebServer的數據庫資源等。
五、開發工具:大家都知道,開發工具可以幫助您更好更快地開發,因此熟悉幾種開發工具很有必要。目前JAVA的開發工具比較流行的有JBuilder,IDEA,Eclipse,HTML的開發工具有Dreamweaver等。
六、熟悉一種框架:熟悉一種框架其實是成為JAVA程序員的一種可選知識,但目前開發B/S結構的應用的開發小組,都差不多會採用一種框架來構建自己的應用系統。框架都會有許多可重用的代碼,良好的層次關係和業務控制邏輯,基於框架的開發使你可以省出很多的開發成本。目前比較流行的框架有Struts和Spring等。
不是毛毛雨不打傘
這是我認為 Java 開發人員應該在 2020 年學習的東西,很可能你已經瞭解了其中的大多數,但是更好地學習它們並進行深入研究不會對你有害處的。
1.容器(Docker 和 Kubernetes)
你可能已經聽說過 Docker 和 Kubernetes 等容器技術,以及它對 DevOps 團隊的影響。Kubernetes 是你可以學習的最重要的工具之一,並且將陪伴你的整個職業生涯。
如今,無論是大型企業還是小型創業公司,幾乎每個開發團隊都使用 Docker 和 Kubernetes。可以肯定地說,如果你現在開始學習,很有可能在工作中的某個時候用到 Docker 或 Kubernetes。
簡而言之,無論你是初級 Java 開發人員還是經驗豐富的資深人士,擁有 Docker 和 Kubernetes 知識對於你的職業發展和工作變動都是至關重要的。
2.雲平臺(AWS 、GCP 或 Azure)
除了容器,雲是我認為每一位軟件開發人員都應該在 2020 年學習的另一件事。各種規模和領域的公司現在都在將其環境遷移到雲中,以節省成本和更好的可擴展性,這意味著你遲早要需要使用雲原生應用程序。
它們對於數據科學,機器學習和人工智能領域中的迅猛發展是緊密相連的,因為只有雲才能提供那些資源匱乏的模型所需的計算能力。
像 Amazon Web Service(AWS),Google Cloud Platform(GCP)或 Microsoft Azure 這樣的學習型雲平臺不僅在你當前的工作上。你不需要學習所有這些知識,實際上,學習一種知識意味著你將對其他事物有一個公平的想法。
如果你要學習雲平臺相關的知識,那麼我首先建議你學習 AWS,因為它是最流行和最成熟的雲平臺。
3. Git
Git 和 Github 已經使用有一段時間了,雖然我過去在 IDEA 中使用過 Git,但是在命令行上我對 Git 還不是很熟悉。
為什麼到目前為止我還沒有掌握 Git?只是因為我還不需要它,我偶爾會從 Github 下載項目並從 IDEA 運行,但是我仍然是 Git 新手。
從現在開始,大多數公司都將其項目從 SVN,CVS 遷移到 Git,這也是學習和掌握 Git 的重要時機。
4.單元測試(JUnit 和 Mockito)
我想在來年改進的另一個領域,Java 程序員可以使用許多新的框架和工具進行單元測試,並對其應用程序進行集成測試,例如用於模擬對象的 Mockito 和 PowerMock,用於自動集成測試的 Robot Framework 和Cucumber,當然還包括新的 JUnit 5 庫。
在這方面有很多東西要學習,如果你可以花一些時間來提高單元測試技能,那麼不僅可以提高你的編碼專業知識,而且可以使你成為更專業的開發人員,每家公司都將以此為形式。
5.從 JDK 9 到 13 的新 Java 功能
正如我過去所說的那樣,我像許多 Java 開發人員一樣仍在努力追趕六個月發佈一次的 Java 版本。我今年花了一些時間學習 Java 9、10、11 和 12 的新功能,但是對我來說,直到我使用 LTS 發行版 Java 13 之前,Java 11 仍然是優先事項。
JDK 9 在模塊,拼圖,反應流,Process API,HTTP2 客戶端,JShell 和 API 改進(如集合工廠方法)方面帶來了很多好處,我非常希望能儘早學習它們。
同樣,JDK 10 帶來了var,使你可以進行動態類型化和 GC 改進。然後,在JDK 12 和 JDK 13 的 Switch 表達式、文本塊。
6. Spring Framework 5+
自從我們看到 Spring 和 Java Ecosystem 進行了許多重大升級以來已經有兩年了,Spring Framework 5.0 就是其中之一。我一直在聽說一些新功能,例如 Spring 5 的反應式編程模型,Java 8 和 9 的採用,某些單元測試的改進等,但是我還沒有嘗試過。
無論如何,我已經開始學習 Spring 5.0.0,並將保持這種勢頭在 2020 年持續下去。如果你使用 Spring,可能是學習 Spring 5.0 的最佳時機。
7. DevOps(Jenkins)
去年,隨著越來越多的公司進入DevOps並採用持續的集成和部署,這是另一個吸引我的領域。
DevOps 非常龐大,你需要學習很多工具和原理,這就是讓很多開發人員不知所措的原因,但你不必擔心。
8. RESTful Web 服務
我想在 2020 年繼續改進的另一件事是我對編寫 REST API 以及使用 Spring 使用 Java 實現安全且可擴展的RESTful Web Service 的瞭解。
這是 Java 世界中非常需要的一項技能,並且很少有人同時瞭解 Java 和 REST。如果你也一樣,並且想學習如何使用Spring 開發 RESTful Web Service,那麼讓我們一起在 2020 學習。
9. Spring Security 5.0(OAuth)
Spring Security 是一個能夠為基於 Spring 的企業應用系統提供聲明式的安全訪問控制解決方案的安全框架。它提供了一組可以在 Spring 應用上下文中配置的 Bean,充分利用了 Spring IoC(控制反轉),DI(依賴注入)和 AOP(面向切面編程)功能,為應用系統提供聲明式的安全訪問控制功能,減少了為企業系統安全控制編寫大量重複代碼的工作。
這是 Spring 生態系統的第三次重大升級,Spring Security 5.0.0 的主要亮點在於它只需要最小化的 JDK 8、反應式安全特性、OAuth 2.0(OIDC)和現代密碼存儲,你絕對不能錯過。
與 Spring 5.0 框架一樣,這是 2020 年我的另一個優先事項。
10. Spring Boot 2 和微服務
Spring Boot 2.0 中引入了眾多令人激動的新特性,包括支持 Java 9、HTTP/2、基於 Spring 5 構建、強力集成 GSON 等等。
那麼在時間允許的情況下,你還應該花一些時間學習 Spring Boot 2 和微服務,我相信它會給你帶來不一樣的體驗。
11. Apache Spark 和 Kafka
我想在 2020 年繼續深入探索的另一件事是大數據,主要是 Apache Spark 和 Apache Kafka 框架。我不確定是否有時間去看其他大數據技術,但是它的好東西和大數據可能是目前最熱門的技術。