學習java需要具備哪些基礎知識?
由于Java開發(fā)涉及到比較多的領域,每個領域需要具備的知識結構也是有所區(qū)別的,所以就需要根據(jù)領域進行分別闡述。由于目前Java主要的應用集中在Web開發(fā)、移動互聯(lián)開發(fā)和大數(shù)據(jù)開發(fā)三個領域,所以下面就從這三個領域進行分別介紹。
Web開發(fā)領域在Web開發(fā)領域,Java的主要知識結構包括三個部分,分別是Java基礎、Java分布式開發(fā)和Java企業(yè)級開發(fā)。Java基礎部分知識是所有方向都需要掌握的,也是學習Java的一個難點,包括Java的面向?qū)ο蟾拍睢⒚嫦驅(qū)ο缶幊踢^程以及異常處理、IO、集合和多線程等內(nèi)容,基礎部分需要重點掌握的概念是封裝、繼承和多態(tài)(這部分細節(jié)可以參考我之前在頭條寫的文章)。
Java分布式開發(fā)是學習Web開發(fā)的重要階段,這個階段要了解分布式開發(fā)的基礎,并采用分布式的方式完成功能的部署。Java的分布式開發(fā)可以從了解RMI、Hessian(可以跨語言使用)、Burlap(XML格式)、HttpInvoker、Web service這些方式開始。
看一下Hessian的實現(xiàn)過程:
Java的Web開發(fā)還需要學習一些前端的內(nèi)容,包括HTML、CSS以及JavaScript相關內(nèi)容,建議系統(tǒng)學習一下JavaScript語言。
Java的企業(yè)級Web開發(fā)有兩套方案,一套方案是JavaEE,另一套方案是輕量級框架,代表技術是Spring(SpringMVC、SpringBoot、SpringCloud等)方案。由于目前JavaEE已經(jīng)交給Eclipse基金會管理了,并更名為Jakarta EE,未來的發(fā)展還有待觀察,所以目前更多的程序員選擇Spring方案。
移動互聯(lián)領域移動互聯(lián)領域的開發(fā)除了要學習基礎的Java知識以外,還需要學習Android開發(fā)相關知識和云計算相關知識。
Android開發(fā)包括幾個大的內(nèi)容,包括Activity、Intent、Service、Fragment、SQLite等內(nèi)容,Android開發(fā)需要學習大量的圖形組件開發(fā)知識,以及對應的事件處理方式,總的來說,Android部分的內(nèi)容雖然比較多,但是難點并不高??匆粋€簡單的例子:
移動互聯(lián)開發(fā)還需要學習一些云計算方面的知識,因為移動互聯(lián)開發(fā)往往需要進行云端部署。通常情況下,移動互聯(lián)開發(fā)也涉及到后端的服務開發(fā),但是往往后端服務開發(fā)都由Web開發(fā)人員來完成。Android的后端服務可以使用Java、Python、PHP等語言來開發(fā),可以根據(jù)具體的應用場景進行開發(fā)語言的選擇。
大數(shù)據(jù)領域目前Java在大數(shù)據(jù)領域也有廣泛的使用,大數(shù)據(jù)開發(fā)涉及到的內(nèi)容比較多,也有一定的難度。由于大數(shù)據(jù)開發(fā)有諸多崗位,不同的崗位有不同的知識結構要求,總的來說集中在操作系統(tǒng)、大數(shù)據(jù)平臺、算法設計與實現(xiàn)等幾個部分。
大數(shù)據(jù)平臺目前主要以Hadoop和Spark的應用比較多,Hadoop平臺有健全的生態(tài),以及大量成功的案例。但是,Hadoop平臺配置比較麻煩,需要一個系統(tǒng)的學習過程。
我做Java開發(fā)多年,目前主要的研究方向是大數(shù)據(jù)和人工智能,也在帶相關方向的研究生,我會陸續(xù)在頭條寫一些關于大數(shù)據(jù)方面的文章,感興趣的朋友可以關注我的頭條號,相信一定會有所收獲。
如果有大數(shù)據(jù)方面的問題,也可以咨詢我。
謝謝!