這才是你想要的Java學習路線!

2021-03-02 異步圖書

如今,IT行業裡新的程式語言層出不窮,例如Python、Google Go、Rust……這些各有千秋的程式語言讓新手程式設計師挑花了眼,不知道該選哪一個入行比較好。

說到這裡,異步君就不得不提Java了,作為程式設計師數量最多的程式語言,Java目前仍然是世界上最受歡迎的程式語言之一。基於Java開發的應用已經滲透到我們生活中的方方面面,比如我們熟知的大型電商網站、訂票系統、安卓App等應用,大多數應用軟體都離不開Java。

Java能有如此成績,主要得益於其優秀的品質——簡潔高效,具有高度的可移植性,可以實現「一次編寫,到處運行」。

在過去,大多數程序在移植到不同的作業系統平臺(如 UNIX、Linux 和 Windows 等)上時,程式設計師通常不得不重新調試與編譯這些程序,有時甚至需要重寫。而Java最大的優勢就在於跨平臺性,在一種平臺下用 Java 語言編寫的程序可以在編譯後不用經過任何更改,就能在其他平臺上運行。

如此優勢,讓Java自出生起就成為企業級應用的寵兒,更是在網際網路大爆發的時代,成為程式設計師們最容易就業的程式語言。

招聘和Java不得不說的故事

一直以來,Java 人才的需求量旺盛,根據 IDC(International Data Corporation,國際數據公司)的統計數字, 在所有軟體開發類人才的需求中,對 Java 工程師的需求達倒全部需求量的 60%~70%。

先來了解一下大家最關心的職業發展的問題,對於 Java 程式設計師來說,大致可以從三個大方向來規劃自己的職業藍圖。

1.繼續走技術工作之路。從技術發展方向來看,Java 工程師則可以由最初的初級軟體工程師即程式設計師逐漸晉升至中級軟體工程師(高級程式設計師)、高級軟體工程師及架構師等。走這條路,依然可進入電信、銀 行、保險專業軟體開發公司等從事軟體設計和開發工作。在資訊時代,越來越多的公司重視信息化,而信息化落實起來離不開軟體開發,而軟體開發中 Java 當屬挑大梁者。如果選擇這個方法,程式設計師要腳踏 實地,一步一個腳印地練好 Java 的基本功。對於初(中)級程式設計師來說首先掌握 Java 的基本語法(如類 與對象、構造方法、引用傳遞、內部類、異常、包、Java 常用類庫、Java IO 及 Java 類集等)。當然,如果讀者定位高級程式設計師以上的目標,那麼目標的實現主要依賴三點:一是前期紮實的 Java 基礎,二是後期對軟體開發持續性熱愛,三是靠程式設計師個人的領悟。

2.定位成為技術類管理人員,如產品研發經理、技術經理、項目經理及技術總監職位等。如果選擇管理 方向,首先要有一定的「基層「經驗,至少要有幾年的 Java 開發經驗。否則,即使偶然因素讓你「擢升 『至』管理層」,那麼也會因為「外行指導內行」而飽受詬病,所以如果定位管理人員,那麼成功的第 一步就是至少成為一名中級以上的 Java 程式設計師,前面所言的 Java 基礎也是需要掌握的。想成為技術類管 理人員,還要深諳 Java 設計模式及軟體工程的思想,從而能把控軟體開發的全局。一個好的技術類管理 人員,不僅要自身具有很強的技術管理能力,同時,也要有很強的技術體系建設和團隊管理的能力,對自己所處的行業技術發展趨勢和管理現狀具有準確的判斷。統籌全局、集各個層次的技術人員之合力,高質量完成軟體項目,是成為技術類管理人員的挑戰。

3.在其他領域成就大業。Java 軟體開發發展前景好,運用範圍也廣,具備 Java 基礎的工程師,還可以嘗試著在其他領域成就一番大業。

例如,Java 工程師可以從事 JSP 網站開發、移動領域應用開發、電子商務開發等工作。如果從事 WEB 開發,那麼在此之前一定要熟練掌握 HTML、JavaScript、XML。

在 WEB 開發中其核心就是進行資料庫的操作,先從 JSP(Java Server Pages)學習,並可以使用 JSP + JDBC(Java Data Base Connectivity,Java 資料庫連接)或者是 JSP + ADO(ActiveX Data Objects)完成操作。JSP 技術是以 Java 語言作為腳本語言的。

之後再學習 MVC 設計模式(Model View Controller),它是指軟體工程中的一種軟體架構模式,把軟體系統分為三個基本部分:模型(Model)、視圖(View)和 控制器(Controller)。

如果掌握了 MVC 設計,就可以輕鬆地掌握 AJAX(Asynchronous JavaScript and XML)和 Struts 技術。AJAX 是在不重新加載整個頁面的情況下與伺服器交換數據並更新部分網頁的手段。Struts 是 Apache 軟體基金會(ASF)贊助的一個開源項目。使用 Struts 機制可以幫助開發人員減少運用 MVC 設計模型開發 Web 應用的時間。 

之後,再學習 Hibernate 和 Spring 等輕量級實體層開發方法等。Hibernate 是一個開放原始碼的 Java 語言 下的對象關係映射框架,它對 JDBC 進行了非常輕量級的對象封裝,使得 Java 程式設計師可便利地使用對象編程思維來操縱資料庫。Spring Framework 是一個開源的 Java/Java EE 全功能棧,其應用程式框架內包 含了一些基於反射機制寫的包,有了它以後程式設計師便可以將類的實例化寫到一個配置文件裡,由相應的 Spring 包負責實例化。

當然以上三條與 Java 相關的職業發展規劃之路,都以夯實 Java 基礎為根本。每一條路走到頂層,都需要重視基礎,一步一個腳印,做事由淺入深,由簡入繁,循序漸進。

Java無處不在

Java 作為 Sun 公司推出的新一代面向對象程序設計語言,特別適於網際網路應用程式的開發,但它的平臺無關性直接威脅到了 Wintel(即微軟的 Windows 作業系統與 Intel CPU 所組成的個人計算機)的壟斷地位, 這表現在以下幾個方面。 

信息產業的許多國際大公司購買了 Java 許可證,包括 IBM、Apple、DEC、Adobe、SiliconGraphics、HP、TOSHIBA 以及 Microsoft 等。這一點說明,Java 已得到了業界的高度認可。眾多的軟體開發商開始支持 Java 軟體產品。例如 Inprise 公司的 JBuilder、Oracle 公司自己維護的 Java 開 發環境 JDK 與 JRE。Intranet 正在成為企業信息系統最佳的解決方案,而其中 Java 將發揮不可替代的作用。Intranet 的目的是 將 Internet 用於企業內部的信息類型,它的優點是便宜、易於使用和管理。用戶不管使用何種類型的機器和作業系統,界面是統一的 Internet 瀏覽器,而資料庫、Web 頁面、Applet、 Servlet、JSP 等則存儲在 Web 伺服器上,無論是開發人員還是管理人員,還是普通用戶都可以受益於該解決方案。 

雖然 Sun 公司被收購了,但 Java 作為 Sun 公司的優質資產被母公司 Oracle 公司高度重視,因此仍然得以 繼續「茁壯成長」。根據 TIOBE 公布的 程式語言排行榜,雖然不同的月份,程式語言之間的地位可能有互換,但 Java 在整個編程領域的前三甲的地位基本是不動搖的。這從側面可以反映,Java 的無處不在,其應用領域和前景非常廣闊。

從桌面辦公到網絡資料庫,從 PC 機到嵌入式移動平臺,從 Java 小應用程式(Applet)到架構龐大的 J2EE 企業級解決方案,處處都有 Java 的身影,就連美國大型太空(NASA)項目當中,也使用了 Java 來 開發控制系統和相關軟體。Java 技術的開放性、安全性和龐大的社會生態鏈以及其跨平臺性,使得 Java 技術成為智慧型手機軟體平臺 的事實性標準。在未來發展方向上,Java 在 Web、行動裝置以及雲計算等方面的應用前景也非常廣闊。雖然面對來自網絡的類似於 Ruby on Rails 這樣編程平臺的挑戰,但 Java 依然還是事實上的企業 Web 開發 標準。隨著雲計算(Cloud Computing)以及移動領域的擴張,更多的企業考慮將其應用部署在 Java 平臺上,那麼無論是本地主機,還是公共雲,Java 都是目前最合適的選擇。

Java 是目前世界上最流行的程式語言之一,而且也成為了事實上的應用層的開發標準,在很多的開發之中,都會把 Java 作為一些底層代碼的操作功能的調用工具,如目前面向手機的 Android 開發。Java 應用領域之廣,也勢必促使 Java 開發者的就業市場呈現欣欣向榮的發展態勢。學習 Java 不僅是學習一門計算機語言,更多的是學習一種思想,一種開發模式。對於從事軟體行業的工作人員,掌握了 Java 語言,可以讓自己日後的事業發展得更加順利。Java 語言由於學習相對完整, Java 開發人員可以輕鬆轉入到手機開發、.NET、PHP 等語言的開發上,以後也可以更快的跨入到項目經理的行列之中。

Java的技術體系

僅從傳統意義上來看, Java 技術體系包括以下幾個組成部分:

● Java 程式語言

● class 文件格式

● Java API 類庫

● 開源社區及商業機構的第三方 Java 類庫

● 各種平臺上的 Java 虛擬機

按照 Java 技術關注的重點業務領域來劃分,Java 技術體系可以分為4 個平臺:

1.Java SE(Standard Edition,標準版):支持面向桌面級應用(如 Windows 下的應用程式)的 Java 平臺,提供了完整的 Java 核心 API,這個版本 2005 年以前稱為 J2SE。

2.Java EE(Enterprise Edition,企業版):以 Java SE 為基礎,往外延伸,增加了許多支持企業內部使 用的擴充類,支持使用多層架構的企業應用(如 ERP—企業資源計劃系統、CRM—客戶關係管理系統的 應用)的 Java 平臺,除了提供 Java SE API 外,還對其做了大量的擴充並提供了相關的部署支持。這個版 本 2005 年以前稱為 J2EE。

3.Java ME(Micro Edition,微型版):Java ME 同樣以 Java SE 為基礎,但向內精簡。它所支持的只 有核心類的子集合,它支持 Java 程序運行在移動終端(手機、PDA—掌上電腦)上的平臺,加入了針對 移動終端的支持。這個版本 2005 年以前稱為 J2ME。Java 的微型版主要是進行嵌入式開發,目前漸漸被 Android 開發所替代。

4.Java Card(智慧卡版):由於服務對象定位更加明確化,Java Card 版本比 Java ME(微型版)更加 精簡。它支持一些 Java 小程序(Applets)運行在小內存設備(如容量小於 64K 的智慧卡)的平臺上。但是,不管 Java 的技術平臺如何劃分,都是以 Java SE 為核心的,所以掌握 Java SE 最為重要,這也是本 書的主要講解範圍。如果要想進行 Java EE 的開發,Java SE 是其中必要的組成部分,這也就是為什麼在 學習 Java EE 之前要讀者一定要有紮實的 Java SE 基礎了。

Java學習路線圖

對Java初學者或中級Java程式設計師來說,Java 學習的路線在整體上需遵循:初級階段>>初級階段>>高級階段,循序漸進地學習:

初級階段:學習 Java 基礎語法和類的創建與使用,基礎 I/O(輸入/輸出)操作、各種循環控制、運 算符、數組的定義、方法定義格式、方法重載等,並熟練使用一種開發工具,如 Eclipse 等。

中級階段:掌握面向對象的封裝、繼承和多態,學習常用對象和工具類,深入 I/O(輸入/輸出)操 作,異常處理、Java 的包管理機制、集合框架等。 

高級階段:掌握 Java 的反射機制、泛型、網絡編程、GUI 開發、多線程、高級 I/O、資料庫編程、 Java Applet 等。

學好Java的關鍵在於什麼?

不管處於哪個學習階段,程式語言的學習都要重視 Java 的實戰練習,等學習到高級階段還要用一些項目實訓來提升自己。

學習 Java 的途中沒有捷徑,需要進行不斷地理論學習、反覆地實戰練習才能將代碼運用靈活,就好像練習武功一樣,只有重視基本功,並持之以恆,才能讓自己的動作收放自如,招式爐火純青。

《禮記•中庸》有言:「君子之道,闢如行遠必自邇,闢如登高必自卑」。這句話告訴我們,君子行事,就像走遠路一樣,必定要從近處開始;就像登高山一樣,必定要從低處起步。

練就成為一名 Java 高手的過程可能需經歷多年的時間。一些讀者朋友擔心,自己可能等不到成為高手那一天, 就無力開發 Java 了。

其實,Java 相關的開發行業也如陳年美酒,越陳越香。Java 軟體開發行業職業壽命很長,能提供給從業人員更廣闊的發展方向。如果想在 Java 開發相關的領域有所建樹,多一份持久的堅持是必須的。

學習Java的準備工作

學習 Java 的第一步就是要搭建 Java 開發環境(Java Development Kit,JDK),它是在作業系統(如 Windows、Linux 等)下搭建的 Java 最基本的開發環境,目前由 Oracle 公司維護開發並免費提供。 

JDK 由一個處於作業系統層之上開發環境和運行環境組成,如下圖所示。JDK 除了包括編譯(javac)、 解釋(java)、打包(jar)等工具,還包括開發工具及開發工具的應用程式接口等。當 Java 程序編譯完 畢後,如果想運行,還需要 JRE(Java Runtime Environment,Java 運行環境)。 

JRE 是運行 JAVA 程序所必需的環境的集合,包含 JVM 標準實現及 Java 核心類庫。如果僅僅想運行 Java 程序,安裝 JRE 就夠了。也就是說,JRE 是面向 Java 程序的使用者的。如果想開發 Java 程序,就需 要安裝 JDK,它是面向 Java 程序的開發者。Java 程序的開發者自然也是 Java 程序的應用者。

如圖所示,Java 程序開發的第一步就是編寫 Java 語言的原始碼。而編寫原始碼的工具可以是任何文本編輯器,如 Windows 下的記事本、Linux 下的 Vim 均可。這裡推薦大家使用對程式語言支持較好的 編輯器:Notepad++、UltraEdit、Editplus 等。 

Java 源文件編寫完畢後,就可以在命令行下通過 javac 命令將 Java 源程序編譯成字節碼(二進位文件),然 後通過 java 命令來解釋執行編譯好的 Java 類文件(文件擴展名為.class)。但如果想正確使用 javac 和 java 等命令,用戶必須自己搭建 Java 開發環境。

採用 Oracle 公司提供的 JDK 開發 Java 程序,能夠讓初學者專注於 Java 語法的理解,代碼模塊之間的關 系比較清晰明了,有利於初學者理解 Java 面向對象的設計思想。

此外,JDK 的版本也會隨 Java (J2EE、 J2SE 以及 J2ME)版本的升級而升級。但它的缺點也是明顯的,從事大規模企業級 Java 應用開發比較困 難,也不利於團體協同開發。因此,目前市面上出現了很多優秀的 Java 集成開發環境 (Integrated Development Environment,簡稱 IDE),如 NetBeans 和 Eclipse 等。IDE 在 JDK 的基礎上,為程序提供了很多輔助功能的支持,極大方便 了程序的開發。

萬事開頭難,給大家分享了Java學習路線圖之後,不少朋友也可能會有「畏難」情緒。

別急,異步君還有寵粉福利,零基礎Java訓練營原價199元,限時限量免費送!8月26日-8月30日晚20點,Java訓練營限時免費,趕緊參與吧!

👇👇👇

相關焦點

  • 史上最強Java學習路線(詳解)
    如果願意,同時學習一下Java1.7的try-with-resource語句和AutoCloseable接口。熟悉Java常用的數據結構,如基本的數組類型,以及泛型容器(java.util.*),尤其是java.util.List接口和java.util.ArrayList實現;以及java.util.Map接口和java.util.HashMap實現。
  • 大數據學習路線整理
    >    java並發包線程池及在開源軟體中的應用    Java並發包消息隊裡及在開源軟體中的應用    Java JMS技術    Java動態代理反射6、輕量級RPC框架開發    RPC原理學習    Nio原理學習    Netty常用API學習    輕量級RPC框架需求分析及原理分析    輕量級RPC
  • 一位資深程式設計師大牛給予Java初學者的學習路線建議
    今天我是打算來點乾貨,因此咱們就不說一些學習方法和技巧了,直接來談每個階段要學習的內容甚至是一些書籍。這一部分的內容,同樣適用於一些希望轉行到Java的同學。在大家看之前,我要先聲明兩點。1、由於我本人是Java後端開發出身,因此所推薦的學習內容是Java Web和Java後端開發的路線,非Java Web和Java後端開發的同學請適當參考其學習思想即可,切勿照搬。
  • 這可能是最全的JAVA入門教程
    java是有一個龐大的生態系統,它的覆蓋範圍非常廣,而且已經連續十幾年位居開發語言的榜首,所以java是相對於其他語言來說,非常穩定的。一、JAVA的市場java有非常廣泛的應用市場,它的生態系統幾乎涵蓋了目前市面上所有的軟硬體,java幾乎是萬能的,你能想到的,java基本都能實現(雖然吹的有點大,但不可否認)。
  • 這可能是最全的JAVA入門教程 ~
    java是有一個龐大的生態系統,它的覆蓋範圍非常廣,而且已經連續十幾年位居開發語言的榜首,所以java是相對於其他語言來說,非常穩定的。一、JAVA的市場java有非常廣泛的應用市場,它的生態系統幾乎涵蓋了目前市面上所有的軟硬體,java幾乎是萬能的,你能想到的,java基本都能實現(雖然吹的有點大,但不可否認)。
  • Java後端學習流程
    首先,我個人比較推崇的學習方法是:先學java前端,也就是HTML,css,js,因為學習java以後肯定是往java ee方向發展的,學習完前端
  • Android開發入門學習路線
    關注我們,發現你想要的的乾貨   ——————————————————————工具  技能 資源分享
  • 資源|2017Java學習路線圖:完整Java自學視頻教程+工具+API+源碼
    還有其他的開發工具到底在哪裡能下載到……各種各種的問題今天播妞特意整理的零基礎學Java學習路線相關內容從今天起不要在找藉口,不要再說想學Java卻沒有資源趕快行動起來,Java等你來探索Java學習路線圖(點擊看大圖)
  • Web安全測試基礎-12-學習路線
    吳老的java版《selenium webdriver 實戰寶典》和python版《selenium Webdriver 3.0 自動化測試框架實戰指南
  • 這可能是最全的JAVA入門教程 ~【白鯨·114期】
    java是有一個龐大的生態系統,它的覆蓋範圍非常廣,而且已經連續十幾年位居開發語言的榜首,所以java是相對於其他語言來說,非常穩定的。一、JAVA的市場java有非常廣泛的應用市場,它的生態系統幾乎涵蓋了目前市面上所有的軟硬體,java幾乎是萬能的,你能想到的,java基本都能實現(雖然吹的有點大,但不可否認)。
  • Java學習從入門到精通,看這一篇就夠了!
    2、JDK的命令工具JDK的最重要命令行工具:java:啟動JVM執行classjavac:Java編譯器jar:Java打包工具javadoc:Java文檔生成器這些命令行必須要非常非常熟悉,對於每個參數都要很精通才行。對於這些命令的學習,JDK Documentation上有詳細的文檔。
  • 學習人工智慧太難?這裡有份快速入門的GitHub高星學習路線
    這一份機器學習路線圖主要分為 4 大部分:基礎概念、算法、用例以及所用工具。在機器學習路線結束後,就可以進階進入深度學習路線啦,這是本文圖示中學習路線的最後一部分。深度學習路線圖由 4 大部分組成:論文、神經網絡、網絡架構以及所用工具。
  • 程式設計師學習路線:developer-roadmap
    作為程式設計師,你應該知道這個!     這倉庫的名字叫做「developer-roadmap」,其包括的學習路線涵蓋:前端、後端、DevOps、Android、React、PostgraSQL DBA。    下圖就是這個倉庫關於前端的學習路線的中文翻譯版本。
  • Simatic IT平臺學習路線
    ,在西門子工業自動化論壇,或者別的論壇裡面,基本找不到,或者很少找到關於MES的文章或者資料,而且我也不太理解的是,為什麼做工業軟體的(SISW),我接觸過他們一些人,對自己手裡抱著的資料總是不願意分享(人家國外開發的軟體,不知道國內牛逼啥),大家可以去PLM的官網看看,你連現在最基本的資料,都是需要webkey的,那哪裡來webkey呢?
  • java學習|用maven創建java程序~
    繼上文設置完環境變量之後,(還未看過如何設置環境變量的小夥伴速戳~)環境變量|你還不知道怎麼設置環境變量嗎!?超詳細步驟分解!我們已經可以運行java程序啦~如下面代碼所示一個簡單的java輸出程序:public class Main{    public static void main(String[] args){        System.out.println("Hello java");    }}
  • Java集合框架學習
    用來存儲對象信息所有集合類都位於java.util包下,支持多線程的集合類位於java.util.concurrent包java集合框架裡封裝了很多的算法和操作,提供了良好的接口,讓我們的學習十分方便在下面我們不在稱呼Collection集合,而是稱呼Collection容器我們操作其中數據也不外乎增刪查改,外加排序(排序暫時先不寫),我們下面就從這幾個角度開始學習初學集合框架,我們只需要學習Collection和Map及其常用的實現類,
  • Java前端和後端的區別
    Java的前後端分離對java後端開發,還是按照需求寫好自己的接口,和前端協調你需要什麼樣的參數,然後前端需要展示一些什麼樣的數據,根據這個供求關係去實現後臺接口就可以了,對於前端開發者來說,你可以通過你會的方式,這裡方式有很多,比vuejs,angularjs就是兩個比較好用並且比較流行的前端框架,通過框架可以調用後臺接口,接收返回的數據並加載到頁面上
  • mui 初級入門教程(一)— 小白入手 mui 的學習路線
    稍微有點基礎的開發者可能仔細去看看官方文檔,然後就可以自己跟著文檔或者 demo做點小例子,然而很多人由於是業務臨時需要才轉到跨平臺 app開發的,很多可以說零基礎,即使有文檔也不定會看得懂,或者看了更暈,相信這部分開發者最期待的是有人手把手教最好,我見過很多開發者一上來一言不合就要例子,如果你讓他去看 hello mui, hello h5+這兩個最精華的例子,他也許會覺得你在逗他。
  • 最全Android學習路線總結,絕對乾貨
    Android Studio 2.3 正式版發布,新特性最全總結MVP+Dagger2+Rxjava+Retrofit+GreenDao 小應用,包含新聞、圖片、視頻3個大模塊,代碼整潔幹練摘要:Android學習路線總結,絕對乾貨 。
  • 這才是我想要的 Android Startup庫!
    所以Android Startup藉助這一特性將初始化的邏輯都封裝到自定義的StartupProvider中:https://github.com/idisfkj/android-startup/blob/master/android-startup/src/main/java/com/rousetime/android_startup/provider/StartupProvider.kt