10年網際網路開發者告訴你自學 Java 怎麼入門?

碼邦主666發表於2021-01-25

1、學習的基本路徑

首先建立好開發環境非常重要,工欲善其事,必先利其器。做任何開發,首先就是要把這個環境準備好,之後就可以去做各種嘗試,嘗試過程中就能逐漸建立信心。初學者往往在環境配置中被各種預想不到的問題弄得很沮喪。

建立起來環境了,改變世界就靠你的程式碼了。學習一門程式語言沒有太多的訣竅,你可能可以去找一本比較好的經典的入門書籍,現在網路上也有非常多的資料,圖文或者視訊都可以,根據個人喜好選擇。最重要的練習,熟能生巧,在不斷的練習中去加深自己對程式語言的理解。

接下來你需要了解這三個術語,叫SDK、API跟Lib,分別表示軟體開發套件,應用程式設計介面和庫。這三者之間其實有一定的聯絡,或者是交叉。總體來說,它們都是給我們提供的一些封裝了底層功能的基礎設施。做Java開發的話,這些東西通常體現為我們所經常說的“框架”。事實上要成為一個資深的Java開發者,對各種API和框架的學習,可能是花時間最多的一個地方。

當然你也不可能把所有API或者SDK種的所有內容完全弄懂。在軟體開發中也有二八原則,少數的API能夠勝任開發中的大部分場景。所以你只需要掌握這些關鍵部分,當在新場景下遇到不能解決的新問題時,再去檢視幫助文件。所以幫助文件的閱讀也是技術學習的一個關鍵因素。瞭解了基礎原理之後一般就能上手開發了,幫助文件可以幫助你在實踐中學習。


2、三個神器

三個神器,對於軟體開發者來說非常重要。

第一個Google,雖然因為各種原因的話有時候我們訪問不了,但是這基本上是可以去尋找技術資料最好的方式。

第二個是Github,之前提到過庫的概念,Github就是一個可以找到大量第三方庫的地方,那是別人給我們封裝好的可以複用的程式碼。比方說造一輛汽車的話,我們經常不要自己造輪子,而Github上可以找到很多優質的輪子,這些輪子還是免費(程式碼都是開源的),我們應該儘量利用它們來拼裝自己的汽車。

第三個是StackOverflow網站,在這個問答網站上你遇到的幾乎任何開發問題都能快速找到答案。


3、Java Web全棧開發的推薦學習內容

簡單總結一下,大概包括下面這些內容。每一部分都可以細化成很多知識點,這只是一個粗略的羅列。把它當做技術地圖就好了。

開發環境的建立與專案管理:Eclipse、Maven和Git

Java程式設計基礎:基本語法、物件導向特性、Java8新特性、更高階庫(比如Guava)的使用等

前端開發技術:HTML、CSS、Bootstrap和JavaScript基礎

Spring基礎:依賴注入IoC、面向切面程式設計AOP、SpringBoot

MVC框架:Spring MVC、Struts等,包括URL路由、模板、表單、Session、攔截器等知識

資料訪問:關係型資料庫、JDBC、Spring JDBC、事務、ORM框架(MyBatis,Hibernate、JPA)

成熟應用的關鍵功能實現:郵件傳送、非同步任務、快取、日誌等

應用的測試和部署


下面對每部分的內容詳細介紹一下。


4、JSP/Servlet的相關內容

雖然現在各種成熟的MVC框架已經讓Java Web開發基本很少使用JSP和Servlet的原生功能了,基本都做了一層封裝。但是這部分基礎知識建議初學者還是要認真學習。


Web基礎,HTTP協議

C/S模型,瀏覽器訪問網站過程

URL基礎知識

HTTP訊息——請求和響應

處理HTTP請求的應用程式

Servlet/JSP簡介


Servlet

Servlet容器,Servlet處理機制,Servlet生命週期

部署Servlet

ServletContext, ServletConfig

Filter, Event Listener


JSP

表示式,scriptlet, declaration

在JSP中訪問Java類

JSP內建物件


處理使用者輸入

HTTP方法——GET v.s. POST

讀取表單資料


構建MVC應用

Servlets/JSP存在的問題

MVC設計模式

使用RequestDispatcher

在Servlets和JSP中傳遞資料,EL表示式


使用JSTL作為模板

JSP Tag Lib

Core Tag(if, loop)

Function Tag(string, fmt, utils)



Session

Session&&Cookie基本概念

通過Cookie記錄使用者狀態(類似購物車的例子)

使用Session跟蹤使用者(登入)


5、資料庫相關的內容

掌握了Servlet/JSP技術,我們已經可以建立動態的Web應用了。除了動態的Web介面,一個有價值的Web應用必然需要進行資料儲存,開發上我們一般稱之為資料持久化(Data Persistence)。

從業務功能的角度出發,簡單的應用可以認為就是資料的增刪改查。比如一個產品級的部落格應用,最核心的功能就是對部落格內容的建立、修改、刪除和查詢,而這些功能都離不開Web伺服器背後的資料庫系統。


資料庫基本概念

實體、關係(表)、記錄(行)、列(屬性)

主鍵、外來鍵等

資料庫表設計的基本原則

SQL基礎

MySQL基本使用

SQL中的DDL——create,drop,alter,建立主鍵外來鍵等約束

SQL中的DML——insert, select, delete, update,join

JDBC

資料庫連線,連線池

使用JDBC API訪問資料庫

分頁查詢

事務的基本概念

JDBC程式碼的封裝與資料訪問的三層架構


6、Spring相關的內容

Spring最重要的兩個核心功能是依賴注入(DI,Dependency Injection)和麵向切面程式設計(AOP,Aspect Oriented Programming)。其中DI用於管理Java物件之間的依賴關係,AOP用於解耦業務程式碼和公共服務程式碼(如日誌,安全,事務等)。DI和AOP能夠讓程式碼更加簡單,具有良好的鬆耦合特性和可測試性,極大地簡化開發。理解這兩者是使用Spring框架的基礎。


Spring的核心思想

依賴注入

面向切面程式設計(AOP)

基於POJO的程式設計模型

預置的模板程式碼(如Spring JDBC)

依賴注入的基本原理

依賴注入的優點

依賴注入如何實現

依賴注入的使用

基於XML的裝配,方式

基於Java Configuration的裝配,方式

自動裝配

多種裝配,方式的混用

處理裝配的歧義

如何注入屬性值

Spring Bean的作用域

Singleton

Prototype

Request

Session

Global

AOP

切面、目標物件、切點、通知、織入等基本概念

如何定義切點:定義切點的aspectJ語法

定義通知

前置通知(Before)

後置通知(AfterReturning)

異常通知(AfterThrowing)

最終通知(After)

環繞通知(Around)

如何給切面傳參


7、Spring MVC相關內容

Spring作為Java系的全棧(full-stack)開發框架,當然也對Web開發有著非常好的支援。Spring的 Web MVC框架能夠使開發者非常容易的開發Web應用,同時能夠無縫享受到Spring本身的諸多好處——IoC容器、AOP程式設計等等。


Spring MVC基本原理、配置

DispatcherServlet

WebApplicationContext

處理HTTP請求過程

實現Controller

@Controller, @RequestMapping註解

URL模板模式,@PathVariable

獲取HTTP請求引數,@RequestParam

@RequestMapping方法支援的引數

@RequestMapping方法支援的返回值

檢視解析

處理靜態資源

配置JSP

配置其它模板引擎

重定向、Flash Attribute

表單處理

表單資料繫結

Spring表單標籤

表單驗證

檔案上傳

Flash Attribute

攔截器Interceptors

Spring MVC請求處理流程

HandlerInterceptor介面

配置Interceptor

異常處理

配置錯誤頁面

使用HTTP狀態碼

@ExceptionHandler

ControllerAdvice全域性異常處理

REST API

@ResponseBody和@RequestBody

處理PUT和DELETE請求



8、MyBatis相關內容

MyBatis 是支援定製化 SQL、儲存過程以及高階對映的優秀的持久層框架。MyBatis 避免了幾乎所有的 JDBC 程式碼和手動設定引數以及獲取結果集。MyBatis 可以對配置和原生Map使用簡單的 XML 或標註,將介面和 Java 的 POJOs(Plain Old Java Objects,普通的 Java物件)對映成資料庫中的記錄


MyBatis基礎

ORM的概念

如何定義Mapper介面

如何定義XML Mapper對映

如何使用Mapper


MyBatis的基本使用

SqlSessionFactory

SqlSessionFactoryBuilder

SqlSession


MyBatis-Spring

基於Spring如何配置和使用Mapper

SqlSessionFactoryBean的配置

MyBatis Spring Boot Starter的使用


增刪改查

熟悉Mapper配置檔案

select元素

select的resultType屬性

insert元素

update元素

delete元素


複雜查詢

resultMap元素

association元素

巢狀結果與巢狀查詢

collection元素

discriminator元素

動態SQL

分頁查詢(分頁外掛)


9、JPA

ORM框架的出現使得我們能夠以物件導向的方式來操作關聯式資料庫,但是長久以來實現應用系統中的資料訪問層依然是一件非常繁瑣的事情,簡單的查詢也往往涉及大量重複程式碼。Spring Data JPA在則基於JPA進一步簡化了資料訪問層的實現,它提供了一種類似於宣告式程式設計的方式,開發者只需要編寫資料訪問介面(稱為Repository),Spring Data JPA就能基於介面中的方法命名自動地生成實現。

JPA(Java Persistence API,Java持久化API),定義了物件關係對映(Object Relation Mapping,ORM)以及實體物件持久化的標準介面。 JPA是一套介面規範,JPA的實現主要包括 JBoss 的 Hibernate EntityManager、Oracle 捐獻給 Eclipse 社群的 EclipseLink和Apache 的 OpenJPA 等。

Spring Data JPA的核心概念

Repository

使用Repository的步驟

自定義的Repository介面

Repository介面層次及其方法

定義實體類

自動生成資料庫Schema

@Entity和@Table

@Id和@GeneratedValue

@Basic

@Column

@Transient

@Temporal

@Lob


定義一對一關係

@OneToOn

@JoinColumn

unique屬性

雙向@OneToOne關聯

雙向關聯與cascade

自動對映的命名規則


一對多與多對多關係

@ManyToOne

@OneToMany

@ManyToMany

JoinTable

用@ManyToOne實現多對多

其它

如何通過方法名建立查詢

分頁與排序

@Query標註

事務


10、Java Web應用的部署

War包規範和結構

在IDE中除錯和部署

使用IDE匯出War包

將War包部署到伺服器

基於Spring Boot的部署


11、其它主題

快取:EhCache、Spring Cache Manager、資料層快取、服務層快取、頁面快取

安全:Spring Security(HTTP基本驗證,角色驗證,許可權驗證)

任務排程:Spring任務執行器(Executor)

郵件傳送:SMTP協議、spring-boot-starter-mail

Web Socket:@SubscribeMapping, WebSocketConfig

日誌:SLF4J與Logback、 Spring Boot Logging、 ConsoleAppender/RollingFileAppender 、Sentry、ELK

我之前在學習過程中用到的一些學習資料整理成了文件,以及我自身之前的一個面試文案和知識點補充,有需要的可以加我的扣扣群697888503,這裡也希望大家最終都能夠學有所成,學習程式設計不是一天兩天的功夫,勤能補拙才是硬道理,祝大家最終都能成為一名合適開發攻城獅。


12、設計模式

13、更進一步

分散式、深入Java虛擬機器、針對不同場景的Java技術框架,到這個階段已經不僅僅是Java的學習了,而是大型應用場景的技術積累、架構設計的精進了。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69985551/viewspace-2752723/,如需轉載,請註明出處,否則將追究法律責任。

相關文章