自學 Java 怎麼入門?看了這篇希望對各位讀者有所幫助!

如果能給初學者更多詳細的指點,我也很樂意去做,這次我又更新了一些新的內容.有興趣的可以往下看。然後就是,總有人問學不學docker、hadoop、spark、hbase、服務治理等等。

這裡我做一個統一答疑,這些東西真不是你一個剛學習Java的人該看的,也不是你工作第一年應該去看的東西,不要總在某些地方看到一些詞就跟風.技術這門活,你入行了就會發現,還有更廣闊的技術棧,更多的開源項目,每年都有新花樣,想學熟練的地步,就第一階段花一年時間學都不為過。

如果你是一個遇見困難望而卻步的人,那麼我建議你不用接著看下去了。真的不用因為Java前景好,上升空間大就來學習它。如果你是一個邏輯思維比較強的,喜歡有挑戰性的工作的話,那麼學習編程方面的技能對你來說會比較合適!

------------------------------------------update1------------------------------------------

1年前寫的回答了,看到好多人還是在問從哪裡開始學習適不適合之類的,我覺得還是把答案改改,寫清楚點兒吧。

------------------------------------------update--------------------------------------------

其實Java並沒有想象中的那麼難,首先想要入這個行,要做好一個心理準備,那就是你想走遠點,就得不間斷的去學習,去汲取知識,前期不能怕辛苦,不要閒下來就打LOL、吃雞、王者農藥,有空就得多看看各種開源項目的代碼,API的設計方式,各大網站的設計架構,理解各個環節的作用。補齊自己的知識視野。

當然這個行業也並不是什麼門檻都沒有,不要再私信我初中生、高中生、中專生能不能學習Java了。反正我個人是認為不可行的,或許你可以去問問其他大神? 或許他們會覺得可以的。

下圖是我更新過的自學表,分別分為4個階段。按照這四個階段平穩的去學習並在每一個階段做完相應的項目和練習,找一份工作是完全沒有問題的 。當然,這裡有個前提是你能學得下去,且通過查看網上的資料或視頻能起碼看得懂第一階段的內容。如果第一階段全職學習耗時2個月以上的話,我個人建議你就需要仔細考慮考慮是否真的要人這個行業吧。因為這個時間節點還沒能夠搞明白第一階段的內容的話,從我個人的經驗來講可能後續走起來會更加吃力。


自學 Java 怎麼入門?看了這篇希望對各位讀者有所幫助!

2018年10月8日17:59:44


Java學習前的一些準備

  • JDK - (Java SE Development Kit)

JDK是Java開發所需要的環境,就跟我們想玩某個網遊一樣,玩之前一定是需要先安裝相應的程序包的。 那這個JDK就是我們準備登陸Java大陸前需要安裝的一個程序包。

下載地址 : Java SE - Downloads

  • IDE - (Integrated Development Environmen)

IDE是集成開發環境,一般集成開發環境都會帶有JDK,可以使用自帶的JDK也可以使用我們下載的JDK,不同的IDE配置不同。Java常用的IDE有Eclipse、MyEclipse、IntelliJ IDEA。IDE具備代碼分析、補全、變異、調試等常用功能,可以大大的提高開發人員的編程效率。

eclipse下載地址 : https://www.eclipse.org/downloads/
MyEclipse下載地址 : MyEclipse官方中文網
IntelliJ IDEA : IntelliJ IDEA: The Java IDE for Professional Developers by JetBrains


階段大致細節

1、入門基礎

    • Java簡介
      • 瞭解什麼是Java;代碼語法基本格式;輸出表達式。
      • 瞭解Java大致的編譯以及執行過程
    • Java語言基礎、循環、數組 ; 瞭解類和對象
      • 掌握Java的基本數據類型和引用數據類型有哪些;
      • 掌握強制數據類型轉換和自動類型提升規則;
      • 常量如何聲明及賦值;
      • 循環的語法及作用;
      • 數組的聲明及定義;
      • 掌握類的概念以及什麼是對象。
    • OOP封裝、繼承、多態
      • 面向對象的三大特徵,本節內容非常重要也相對來說較為難以理解,一定要耐下心來好好理解。
    • java.util.*包下的常用類
      • util包下的Collection、Comparator、Iterator、List、Map、Set接口都很重要,著重看一下他們的實現類,如:ArrayList、LinkedList、HashSet、HashMap、Hashtable、TreeMap、TreeSet等。
    • java.lang.*包下的常用類
      • lang包下的基本數據類型對應的包裝類(Byte、Short、Integer、Long、Double、Float、Character、Boolean);
      • 字符串相關的類String、StringBuffer、StringBuilder。
    • IO流操作,多線程及Socket
      • 掌握IO讀寫流相關的類,瞭解字節流,字符流和字符流緩衝區;
      • 掌握線程的概念,多線程的創建、啟動方式,鎖和同步的概念及運用;
      • 掌握Socket通信的概念,如何聲明客戶端服務端,如何完成雙端數據通信。
    • 泛型、數據庫基礎(Mysql)及JDBC
      • 到了數據庫前,我們可以看看泛型以及反射的一些基礎案例
      • 掌握數據庫的基本概念,Mysql的安裝、啟動與停止
      • Mysql數據庫客戶端的安裝與使用
      • JDBC的概念,在Java中使用Mysql驅動包連接Mysql

Mysql社區版下載 : Download MySQL Community Server
客戶端連接工具 Navicat for Mysql下載 : MySQL Database Administration and Development Tool

通過第一階段的學習掌握Java語法和常用類,數據庫入門技術相關知識。讓自己對於存儲,IO,這些有個大概的瞭解。這時候,暫時不需要花大量的精力以及篇幅去學習多線程和Socket,當然這裡不是說他們不重要,而是對於現階段的你,或許很難非常清晰的明白以及瞭解他們具體的作用。這裡第一節忽略掉了Swing,Swing章節的內容可以不學,因為在實際的工作中基本上沒有用武之地。

使用第一階段的技術完成一個小型的系統,找一個自己做容易理解的系統練練手,比如超市管理系統、成績管理系統等等這類需求簡單卻能講整章內容結合起來使用的項目。當然這個時候可能會有人覺得沒有圖形界面沒法完成系統操作。實際上我們可以通過Console的輸入輸出來做系統界面。

新手在第一階段的學習時,是最難熬的,因為這個時候需要背的東西特別多,且不再像看小說一樣,什麼東西都能看明白。路就變成了前面熟悉,左右陌生。這個時候人的求知慾作祟,往往會把自己帶著偏移了方向,因為我們自己也不知道這樣走對不對。漸而遠之,也就慢慢放棄了。而這樣的放棄,是最不值得的。所以,學習Java一定要按照某一個大綱,一直往下不要往其他地方偏,先走完一遍之後,再回頭慢慢撿。


2、前端基礎

    • HTML基本標籤、表格、表單和框架;
      • 掌握網頁的基本構成;
      • 掌握HTML的基本語法;
      • 表格的作用以及合併行、合併列;
      • 表單標籤的使用,提交方式get/post的區別;
      • 框架佈局的使用
    • CSS樣式表;
      • 掌握CSS的語法及作用,在html中的聲明方式;
      • 掌握CSS佈局的函數使用;
      • 掌握CSS外部樣式的引入。
    • JavaScript;
      • 掌握JS的語法及作用,在HTML中的聲明方式;
      • 掌握JS的運行方式;
      • 掌握JS中的變量聲明、函數聲明、參數傳遞等;
      • 掌握HTML中的標籤事件使用;
      • 掌握JS中的DOM原型

上述三節都可以查看w3school : HTML 系列教程

    • jQuery
      • 瞭解如何使用jQuery,下載最新版或者老版本的jQuery.js
      • 掌握選擇器、文檔處理、屬性、事件等語法及使用;
      • 能夠靈活使用選擇器查找到想要查找的元素並操作他們的屬性;
      • 動態聲明事件;
      • 動態創建元素。

jQuery文檔 : jQuery API 中文文檔 | jQuery API 中文在線手冊 | jquery api 下載 | jquery api chm

    • BootStrap;
      • 掌握BootStrap的設計理念,以及使用方式。這是我們需要接觸的第一個前端框架,使用起來也很簡單;
      • 掌握BootStrap的柵格系統、表單、全局樣式、分頁工具欄、模態框等。
    • Servlet
      • 掌握Java中的Web項目目錄結構;
      • 掌握Java Web項目的重要中間件Tomcat;
      • 掌握Servlet中的Request和Response;
      • 掌握Servlet的基本運行過程。
      • 掌握Servlet的聲明週期
    • 動態網頁技術
      • JSP在Java Web中的角色;
      • JSP的編碼規範,以及JSPServlet;
      • JSP顯示亂碼的解決辦法等。
    • JSP數據交互
      • JSP中如何編寫Java代碼,如何使用Java中的類;
      • JSP中的參數傳遞。
    • 狀態管理Session和Cookie
      • 掌握Session的作用及作用域;
      • 掌握Cookie的作用及作用域;
      • 掌握Session及Cookie的區別,存儲位置,聲明週期等;
      • 掌握Session及Cookie分別在JSP和Cookie中的使用
    • JSTL和EL表達式
      • 使用EL表達式輸出page、request、session、application作用域中的值
      • 使用JSTL來做邏輯判斷或循環控制
    • JNDI數據庫連接池
      • JNDI的作用以及如何使用JNDI連接數據庫
    • 分頁和文件上傳
      • 掌握在JSP中如何使數據達到分頁的目的;
      • 掌握在JSP表單中如何上傳文件,Servlet如何處理上傳請求(Commons-Fileupload、Commons-IO)。
    • Ajax
      • 掌握Ajax的基本概念;
      • 掌握jQuery中的Ajax請求;
      • 掌握JSON
    • Filter、Listener;
      • 掌握Filter和Listener
      • 掌握Session過濾器和編碼過濾器

通過第二階段瞭解前端相關的技術,如果你喜歡前端各種酷炫的效果,那麼就深入學習JS、CSS。不大感興趣的話,就淺嘗輒止,並重點學習Servlet、Filter、Listener。重點學習,重點學習,重點學習。 重要的話說三遍!

學習完第二階段的內容之後,就可以進行B/S版本的系統開發了。這個時候我們可以挑選個稍微複雜點兒的項目來練練手,能找到商業項目練手的那是最好不過的,沒有的話,就寫寫學生管理系統,檔案管理系統,人事管理系統之類的練練手吧。

最後說一下本階段的前端知識,如果將jQuery和Bootstrap學的差不多了的話,再看EasyUI這之類的前端框架也基本上都是照著API用就行了。別害怕看API,看API將是你以為的整個職場生涯必不可少的一個技能。


3、 主流技術應用

    • Mybatis的應用
      • Mybatis的Mapping與實體映射;
      • Mybatis中的SQL語句寫法;
      • Mybatis的緩存。
    • Spring應用
      • Spring容器的作用;
      • Spring的AOP和IOC;
      • Spring託管Mybatis事務;
    • SpringMVC的應用
      • SpringMVC中的控制器註解、請求註解、參數註解、響應註解等;
      • SpringMVC中的靜態資源處理;
      • SpringMVC的容器。
    • Spring+SpringMVC+Mybatis整合
      • SSM的整合使用;
      • Spring容器和SpringMVC容器
    • Redis+Mysql的查詢優化設計
      • Redis的安裝與連接;
      • Redis常用命令及各命令使用場景;
      • Redis存儲機制;
      • Redis的持久化機制。
    • 任務處理相關
      • HttpClient模擬請求
      • Quartz定時任務
    • 常用工具
      • Excel&World導入導出
      • 短信&郵件發送
    • Maven
      • Maven的作用
      • Maven項目的創建
      • Maven的生命週期
      • Maven中央倉庫及私服
    • Log4J2日誌
    • FastDFS的使用
      • 什麼是分佈式文件系統;
      • 分佈式文件系統解決的問題是什麼;
      • FastDFS的使用

通過第三階段瞭解目前Java領域比較經典的三大框架,瞭解他們的大概功能,並加以使用。通過使用SSM開發一個簡易CRM之類的項目來加強了解,理清楚框架的大致原理。搞清楚這三個框架之間的作用域以及角色。理解Redis作為內存數據庫與MySQL這類關係型數據庫的區別,並能使用常用的Jar包完成模擬請求,定時任務等相關係統常用功能的開發。並能夠通過Maven創建SSM項目,整合Log4j或其他的日誌包。瞭解FastDFS的作用,並理解圖片上傳至文件服務器和上傳到tomcat之間的區別

在第三階段的內容學習完了之後,就應該對整個系統研發有個大概的印象,實際上這個時候,獨立完成一個系統之後,再回過頭來仔細思考下Servlet+JDBC+JSP與SSM實現項目的相同點及區別。這樣會讓你更加的有收穫。並能夠理解非關係型數據庫Redis的性能優勢以及使用場景。


4、模擬實際項目開發

    • SpringBoot 2.0的應用
      • 瞭解SpringBoot的起源及優勢
      • 瞭解SpringBoot項目的格式以及創建方式
      • yaml語法特性
      • application配置文件及靜態資源處理
      • Thymeleaf模板引擎
      • SpringBoot核心之WebMVCConfigurer
      • Spring自定義錯誤處理
      • SpringBoot日誌引用及切換
      • SpringBoot數據源和Mybatis
      • SpringBoot-redis應用
    • Struts2應用(瞭解即可)
      • 通過學習Struts,瞭解什麼是MVC;
      • 掌握Struts是如何完成界面控制的;
      • 掌握Struts的參數接收及傳遞;
      • 掌握Struts的攔截器;
      • 掌握Struts的OGNL和標籤使用。
    • Hibernate應用(瞭解即可)
      • Hibernate在項目中的作用及優勢;
      • Hibernate中的hbm與實體類之間的關係;
      • 什麼是HQL,什麼是關係映射(一對一,多對一,多對多);
      • 瞭解Hibernate的事務、懶加載和緩存。
    • Redis哨兵模式的搭建
    • Linux操作系統
      • Linux中的常用命令;
      • Linux下的JDK、tomcat安裝;
      • Linux下的項目部署方式。
    • Nginx的使用
      • Nginx的作用;
      • 反向代理和正向代理分別是什麼;
      • Nginx實現tomcat代理。
    • Mysql集群方案
      • Mysql集群的常用方案有哪些;
      • Mycat中間件的概念
      • Mycat的使用準則;
      • 瞭解數據庫的主從複製;
      • 瞭解數據庫的主備切換;
      • 為什麼需要主從和主備。
    • Solr入門
      • 什麼是全文檢索;
      • Solr做搜索的優勢是什麼;
      • Lucene、ElasticSearch、Solr之間的關係;
      • Solr的安裝與使用。
    • JVM
      • 回顧所有所學習到的知識,聯繫所有框架中的自定義容器、上下文來理解變量及對象的存儲
      • 理解垃圾回收是怎麼一回事
      • 理解集中回收算法
      • 完全理解整個堆棧模型

通過第四個階段瞭解更簡單易用的SpringBoot,微服務應用和存儲集群相關的概念及實現方案。讓自己具備一個設計高可用,可擴展的項目框架視野。這樣對於後面繼續專研SpringCloud / Dubbo、zookeeper這些RPC相關的框架有很大的好處。

第四階段的內容更加偏向於互聯網技術棧,通過這一節的內容能夠脫離出基本的增刪改查,瞭解出了增刪查改之後,需要了解的集群、系統性能優化、外部緩存服務器使用、集群負載等概念。這些思維對於後面的提高以及學習會很有好處。


我提到的這些東西都能搜到對應的資料,無非多踩點坑罷了。但是,看文檔or項目永遠進步不了。一定要上手敲,想再多也不如動手。有機會聯繫一名優秀學長,有個走在前面的人給你指路肯定比你自己走要快得多。

最後,一定要動手,一定要動手,一定要動手。把代碼敲爛,你才會有收穫,不要被視頻誘導,敲一遍之後誤認為你自己會了,如果第二天你起來時已經忘了昨天學習了什麼的話,那說明你還是沒學會。好好加油吧。

在所有的學習過程中,每一個節點都應該有相應的練習或者項目來進行練手,看再多的博文和視頻都是不行的, 不能讓自己的雙手停下來,只有不停的敲打鍵盤,寫出自己的項目,然後在實際的開發中學會如何使用debug,總結所有遇到的bug及解決思路,這樣才叫做學習技術。所以,希望有興趣的同學,能夠好好努力,不要因為一點點難度就懈怠、放棄。開發這條路途,無論你工作多久,都會遇到各種奇奇怪怪的問題,以及形形色色的bug等著你去解決。


最後,我會根據最新的前沿技術更新更加全面的學習路線、課程和資料。都已整理好可以私聊小編“學習”就可以獲得免費學習資源!


分享到:


相關文章: