-
1 # 熊大軟文
-
2 # 肖瀟不吃洋芋
1、JAVA SE
這是JAVA開發的基礎。Java 是一門純粹的面向物件的程式語言,所以除了基礎語法之外,必須得弄懂它的 oop 特性:封裝、繼承、多型。此外還有泛型、反射的特性,很多框架的技術都依賴它,比如 Spring 核心的 Ioc 和 AOP,都用到了反射,而且 Java 自身的動態代理也是利用反射實現的。此外還有 Java 一些標準庫也是非常常見,比如集合、I/O、併發,幾乎在 Web 開發中無處不在,也是面試經常會被問到的,所以在自學 Java 後端之前,不妨先打好這些基礎,另外還有 Java8 的一些新特性,也要重點關注,比如 Lambda 表示式、集合的 Stream 流操作、全新的 Date API 等等,關於新特性,我也寫了幾篇關於這方面的部落格,請自行找吧,就不貼出來了。
入門的話可以聽某客的畢向東老師講的 Java 基礎教程或者任何一本大學教程關於這部分都差不多,不建議一上來就讀《程式設計思想》。
2、資料庫基礎
雖然這部分不是JAVA內容,但是任何一門開發語言都必須掌握。
我是瞭解了一些基礎語法之後,就直接跟著影片的老師做一些表操作實戰練習了,比如單表查詢、多表查詢等。我建議學 sql 切勿眼高手低,需多加練習,不要只看懂了就行,因為工作中寫得一手簡練的 sql 是非常重要的。在這裡我說下我在專案一直秉承著 sql 語句是能避免多表查詢就避免多表查詢,能夠分開多條語句就分開多條語句,因為這裡涉及到多表查詢效能和資料庫擴充套件的問題。
關於 JDBC 方面:JDBC 教程、 JDBC 獲取連線物件原始碼分析
你需要弄懂 JDBC API 的用法,其實它只是一組規範介面,所有資料庫驅動只要實現了 JDBC,那麼我們就可以透過標準的 API 呼叫相應的驅動,完全不用知道驅動是怎麼實現的,這就是面向介面程式設計的好處。而且對於 JDBC 我是直接看影片去理解的,跟著影片做了一個基於 Apache Dbutils 工具做了一個具有事務性的小工具。
3、web基礎
曾經開源中國創始人紅薯寫了一篇文章「初學 Java Web 開發,請遠離各種框架,從 Servlet 開發」,我覺得他說的太對了,在如今 Java 開發中,很多開發者只知道怎麼使用框架,但根本不懂 Web 的一些知識點,其實框架很多,但都基本是一個套路,所以在你學習任何框架前,請把 Web 基礎打好,把 Web 基礎打好了,看框架真的是如魚得水。
關於 Http 協議,這篇文章就寫得很清楚:Http協議
關於 Web 基礎這方面資料推薦,我當時是看的是「Tomcat 與 Java Web 開發技術詳解」,很詳細地講解了整個 Java Web 開發的技術知識點,但現在看來,我覺得裡面講的有一些技術確實有點老舊了,不過可以瞭解一下 Java Web 開發的歷史也是不錯的。所以在 Web 基礎這方面我都是看某客的崔老師講的「超全面 Java Web 影片教程」,講得很詳細很生動,還有實戰專案!
關於 JSP,你只要瞭解它其實就是一個 Servlet 就行了,關於它的一些標籤用法,我認為可以直接忽略,因為現在網際網路幾乎沒哪間公司還用 JSP,除了一些老舊的專案。現在都是流行前後端分離,單頁應用,後端只做 API 介面的時代了,所以時間寶貴,把這些時間重點放在 Servlet 規範上面吧。
關於 Tomcat,它是一個 Web 容器,我們寫的後端專案都要部署到Web容器才能執行,它其實是一個遵循 Http,透過 Socket 通訊與客戶端進行互動的服務端程式
4、web主流框架
Java Web 框架多如牛毛,等你有一定經驗了,你也可以寫一個 Web 框架,網上很多說 Spring、Struts2、Hibernate 是 Java 三架馬車,我只想說,那是很久遠的事情了,我嚴重不推薦 Struts2、Hibernate,相信我,一開始只需要上手 Spring、SpringMVC、Mybatis 就可以了,特別是 Spring 框架,其實 Spring 家族的框架都是很不錯的。
但是提醒一點就是,千萬不要沉迷於各種框架不能自拔,以會多種用法而沾沾自喜,導致知其然而不知其所以然。
Spring其核心思想就是 IOC 和 AOP
SpringMVC 初始化過程
SpringMVC 處理請求過程
Mybatis 它可實現動態拼裝 sql,避免了幾乎所有的 JDBC 程式碼和手動設定引數以及獲取結果集。
5、web框架進階
使用了 SSM 框架後,你會覺得框架也不過這麼回事,如果你對 Spring 有過大概瞭解,你也會產生想寫一個「山寨版」Spring 的心思了,一個輕量級 Web 框架主要具備以下功能:
可讀取使用者自定義配置檔案,並以此來初始化框架;具備 Bean 容器,管理專案的類的物件生命週期;
具備依賴注入,降低類之間的耦合性;具備 AOP 功能,使專案可進行橫向程式設計,可不改變原有程式碼的情況增加業務邏輯;具備 MVC 框架模式。
其實除了 SSM 之外,Web 框架可謂是百家齊放,其中以 Spring 全家桶最為耀眼,在這裡我極力推薦兩個 Spring 家族框架:SpringBoot 和 SpringCloud。
SpringBoot 彌補了 Spring 配置上的缺點,再也不用為繁雜的 xml 費勁精力了,堪稱是 Java 後端開發的顛覆者,推薦書籍「Java EE 開發的顛覆者:SpringBoot實戰」。
SpringCloud 是一個微服務架構,能夠將專案按照業務分成一個個微服務,每個微服務都可獨立部署,服務之間互相協調。當一個專案越來越大時,隨之而來的是越來越難以維護,此時將專案拆分成若干個微服務、單獨維護、單獨部署,也可以降低專案不同業務間的耦合度。推薦書籍「Spring Cloud 與 Docker 微服務架構實戰」,這本書將 Docker 與微服務完美地結合在一起,堪稱完美!
6、其他技術
Redis:一個高效能的 key-value 資料庫,當有併發量很高的請求時,將資料快取在 Redis 中,將提高伺服器的響應效能,大大減輕資料庫的壓力。
Git:世界上最先進的分散式版本控制系統,建議所有初學者從命令列開始使用。
Maven:一個用於構建專案的工具,將專案間的依賴透過 xml 完美地組織到一起,可透過編譯外掛將專案編譯成位元組碼檔案。還有類似的 Gradle 也是不錯的選擇。
Linux:至少要求常用的命令會用,能夠在 linux 環境下部署專案。
Docker:簡直是專案部署神器啊,來不及解釋了,看我 Docker 系列部落格,開啟 Docker 之旅吧!推薦書籍「Docker 技術入門與實戰」,中國首部 Docker 著作!
7、不必學習的內容
1)AWT 和 Swing
真不知道為什麼,有些書籍還在介紹 AWT 和 Swing,這就好像不知道大清朝早已經亡了幾百年一樣。已經 9102 了,誰還會用 AWT 和 Swing 去開發桌面應用呢?
就我所知,C++ 程式設計師會用 MFC,C# 程式設計師會用 Winform 和 WPF。甚至還可以用一種更時髦的技術(比如 Electron)把 Web 網頁裹一層華麗的外衣,變成可執行檔案。
2)Applet
作為網頁外掛技術,Applet 壓根就沒流行起來,就連曾經的熱門 Flash 也要淘汰了。
3)XML
XML 還沒有被淘汰,應用的地方還有不少。但是作為一種資料傳輸格式,它正在被 JSON 替代。
4)JDBC
我個人不建議再學習偏底層的 JDBC 了,尤其是對於時間寶貴的自學程式設計師來說。與其花這點時間,不如把精力投入到 MyBatis 的學習上。
5)Struts
Struts 是早年一個優秀的 MVC 框架,單從技術的角度來看,還是蠻不錯的。但是自從有了 SpringMVC 後,Struts 就被拍死在沙灘上了。
6)Hibernate
在我剛參加工作那會(2010 年的時候),持久層框架用的正是 Hibernate。但時過境遷,Hibernate 太重量級了,學習成本太高,取而代之的是輕量級的 MyBatis(支援定製化 SQL、儲存過程以及高階對映)。
7)JSP
說起來慚愧,我現在維護的一個專案,檢視層用的依然是 JSP。但如今流行的是“前後端分離”,JSP 就顯得不合時宜了。
-
3 # IT小貓咪
沒有哪個是最重要的,因為都是很重要的。
學習是循序漸進的過程,你跳掉了任意一環對你的內容掌握都是有很大影響的。
不過在自學Java的過程中,重點可以集中在以下三個部分:
第一:對於Java面向物件概念的理解。學習Java的第一個難點就是如何理解Java的面向物件程式設計概念,涉及到類、介面、多型等概念。在理解這些Java開發概念的過程中,應該從Java面向物件程式設計過程入手,涉及到類的定義、物件的建立和方法的呼叫,在這個基礎上可以逐漸形成自身的Java程式設計思想。
第二:對於Java模組化程式設計的理解。Java是抽象程度比較高的程式語言,所以對於初學者來說,可以先從模式程式設計入手,然後進一步提升自身對於模組化程式設計的理解。對於Java程式設計師來說,模組化程式設計能力對於自身的Java開發能力有非常直接的影響。另外,在理解Java模組化程式設計的過程中,也會逐漸提升自身的抽象能力。
第三:Java的開發框架。Java開發與開發框架有非常緊密的聯絡,初學者可以先從Spring開發框架開始學習,比如從SpringBoot開始學起就是不錯的選擇。Spring系列框架當前已經非常龐大了,基於Spring也能夠完成“一站式”解決方案。Spring框架的學習過程並不複雜,但是需要完成一系列實驗。
-
4 # 快活的閒魚
我感覺java基礎知識點很多,幾乎每一塊你都要你去熟悉學習,就算將來工作中沒用上,但是你也要會懂這些知識。我大致列一下,java基礎程式設計知識、資料庫操作和連線、前端html、js、jsp和一些技術框架等等。我最近有分享一些自學的教學影片,有空你看看就明白了。
回覆列表
1.JAVA語法和基礎,包括迴圈。和類的
相關內容,如實現,繼承什麼的
2.需要掌握幾個重點的集合,List介面
的兩個子類LinkedList,ArrayList;然後是
Map幾口的兩個子類HashMap,HashT
able;Set介面掌握List後學Set就容易
了;掌握Collection和Collections的區別
3.掌握IO一章,重點的幾個流 InputStre
am,OuputStream;BufferedReader,Buff
eredWrite;
ObjectlnputStream,ObjectOutputStrea
m,PrintWriter,FileReader,FileWriter了
解JAVA的序列化,掌握JAVA的File類
4.JDBC非常重要,重點掌握Connectio
n,PreparedStatement, Statement,Res
ultSet,
其他的可以在學習或專案中如果碰到再學
第二階段
1.HTML+JAVASCRIPT,掌握多少看自
己把握了,CSS做了解即可
2.JSP+Servlet,需要重點掌握幾個,R
equest,Response,Session,其次是Appl
ication.
另外需要知道Redirect,ForWard的區
別,Servlet的生命週期等
3. 標籤方面: (1)掌握EL表示式;
(2)最好掌握JSTL標籤
4.學習AJAX,無需深入研究
5.掌握了上面的,還可以繼續學習框
架:Struts2.0;Hibernate3;Spring 2.0
Java是一種可以撰寫跨平臺應用軟體的
面向物件的程式設計語言。Java 技術具
有卓越的通用性、高效性、平臺移植性和
安全性,廣泛應用於PC、資料中心、遊
戲控制檯、科學超級計算機、行動電話和
網際網路,同時擁有全球最大的開發者專業
社群。