- 1、Java程序員的發展方向有哪些
- 2、請問艾編程教育,java進階架構師到需要怎麼成長?
- 3、請問從java工程師成為一名架構師的學習路線是什麼樣的?
- 4、Java工程師以後發展路徑是什麼?
其實Java可以做的東西實在太多了,網站、軟件、手機遊戲、電腦遊戲、中間件以及現在流行的安卓手機app等,都是由Java語言編寫的;除了這些,Java還有很多用途,家裡的微波爐、洗衣機等家電也有可能是Java控制的。
1、編寫網站
現在許多大型網站都是用Java編寫的,比如我們熟悉的電子商務交易平台阿里巴巴、淘寶、京東都是使用Java編寫的。
即使是簡單的jsp、servlet,和以struts為基礎的網站,在政府項目中也是很受歡迎的,例如保險、教育、醫療、國防等部門的網站都是以Java基礎來開發的。
2、Android應用
Java做安卓不單單是系統,還有APP。對於如今的開發人員來說,他們更多的時間是花在開發APP上面。
你在Android手機上,隨便打開一個App應用,都是用Java語言編寫。雖然現在Android運用了不同的JVM以及不同的封裝方式,但是代碼還是用Java語言編寫的。
3、大型企業服務器應用
很多大型企業管理系統、CRM系統,ERP系統主要使JAVA編寫。例如移動、聯通、電信等通訊行業的客戶管理系統,快遞公司的物流系統離不開Java;交通工具的訂票系統絕大部分也是使用Java開發的。
4、做軟件工具
一般來說,編程語言都可以做軟件,Java也不例外,許多常用的軟件和開發工具都是運用Java來編寫和開發的,例IneteliJIdea、Eclipse,NetbansIDE等。
5、嵌入式領域及消費類電子產品
Java在嵌入式領域發展空間很大,對於嵌入式系統來說,Java技術因為比C語言和彙編語言有很明顯的優越性,而受到了嵌入式領域的青睞,並得到了大量的研究與開發應用。
嵌入式設備及消費類電子產品,主要用JavaMe,信息家電(如數字電視、機頂盒、電冰箱)、無線手持設備、通信終端、醫療設備、汽車電子設備等都是比較熱門的Java應用領域。
6、大數據技術
Java最大的優勢之一是它在大數據領域的地位,目前很多的大數據的架構都是通過Java來完成的。
例如現在最主流的大數據框架Hadoop的應用主要用Java開發的;Apache的基於Java的HBase和Accumulo以及ElasticSearchas。
首先很感謝對我提問,Java進階架構師是目前一個很明智的選擇。目前架構師方面如果要學好需要有一定的Java項目經驗,從事Java一年到三年以上時間更合適。
架構設計與思想:學習架構師要從架構思想和架構設計,學習怎麼架構產品,接着要學會怎麼繪製架構圖。
構建架構能力:當了解這些體系之後就要開始學習從單體架構到集群化部署的一步一步大致分別為十五次架構演進的學習,需要學會業務架構、技術架構、應用架構、數據架構的部署能力;
高並發分佈式的部署能力:掌握單體架構設計到高並發、分佈式的大流量部署能力。
安全防護和流量攻擊的防護能力:而且還要學會進行安全防護、流量攻擊的預防等技術掌握哦。
對於java工程師成為一名架構師如何進階學習及掌握應有的技能體系在這做出一些建議!同時大家可以到知乎專欄「動力節點視頻教程資源庫」看更架構師的文章,歡迎大家來關注閱讀!
可以驕傲地說,Java程序員應該是這個世界上最為廣泛的工程師群體。在最新的2019年3月編程語言排行榜中,第一寶座依舊是Java,可見Java強大的生命力。不過,我發現身邊不少程序員朋友,對Java的掌握僅限於使用 Java 語言和 Java 生態里的技術框架做功能實現,很少有人去了解 Java 的底層動力 JVM 的運營機制,以至於技術水平和認知停滯不前,最終成了CRUD 研究員。
同時也為那些針對2到5年及以上工作經驗的想在技術上提升到一定高度甚至想往架構師發展的Java程序員提供一份系統詳情的架構進階路線,從廣度到深度架構圖還比較全面的,裏面的技術包涵了Java高並發、微服務、源碼分析、源碼分析、高性能、分佈式等技術,這些也是目前互聯網企業比較常用的技術,那麼來詳細看看。
JVM與性能優化
JVM作為Java語言的基礎,雖然平時工作中真正運用到的時候可能並不多,一個程序員想要上升到高級層次,那就必須知道Java到底是怎麼運行的,這就逃不開JVM。想要告別增刪改查和簡單開發,而是去做Java性能分析和調優工作,那麼,Java虛擬機絕對是一把助力的利劍。學習Java虛擬機的原因,本質是讓你了解Java程序是如何被執行且優化的。這樣一來,你才可以從內部入手,達到高效編程的目的。同時,你也可以為學習更深層、更核心的Java技術打好基礎。
框架源碼解讀
我認為有三個維度來說明:這個框架是為了解決什麼問題而誕生的?這個框架的核心思想是什麼?這個框架適合應用到哪些場景?說到思想,我覺得編程的靈魂就是思想,沒有思想的編程和鹹魚沒什麼區別。「不要重複造輪子」,當時聽了趕腳這句話挺高大上的,現在我認為這句話只能在某一方面是正確了。首先我來說一下為什麼要學會造輪子–因為你會造輪子後,用別人的輪子時才會明白其原理,用的時候才會得心應手,如果你對一個框架的理解只是停留在用,用的多熟練的階段的話,那麼你就是一個「碼畜」,別人隨時可以替代你。或許有人會說,項目時間緊根本不允許你寫一個輪子、你寫的還有那些大牛們寫的好嗎等理由反駁。但我想說的是:我沒說項目中非得用自己寫的輪子,自己寫的輪子不一定要和別人比,因為造輪子的目的是要理解這些輪子的思想。說這麼多其實就是想告訴大家學習框架要理解框架的底層的原理,要掌握的就是最常用的原理。
分佈式架構
近年來隨着服務體系的不斷龐大以及用戶量的迅速增長,傳統單一應用架構已經無法滿足我們系統的需求,尤其是大型互聯網系統的快速發展,各種靈活多變的系統架構模型層出不窮。分佈式的處理方式越來越受到業界的青睞——計算機系統正在經歷一場前所未有的從集中式向分佈式架構的變革。同時分佈式也成為Java程序員面試不可缺少的一部分知識,尤其是對現在工作2到5年的工程師來說分佈式無疑不是一項加分技術。
微服務架構
雖然很多文章都說微服務架構是複雜的、會帶來很多分佈式的問題,但只要我們了解這些問題,並找到解法,就會有種撥開雲霧的感覺。微服務架構也不是完美的,世上沒有完美的架構,微服務架構也是隨着業務、團隊成長而不斷演進的。最開始可能就幾個、十幾個微服務,每個服務是分庫的,通過 API Gateway 並行進行服務數據合併、轉發。隨着業務擴大、不斷地加入搜索引擎、緩存技術、分佈式消息隊列、數據存儲層的數據複製、分區、分表等!
總結
不管是學什麼技術,最終都需要你進行歸納、整理,才能把所學的東西變為自己的。工作為什麼要寫日誌,平時學習為什麼要寫博客,其實就是在構建自己的知識體系。在學習的過程中多做筆記,多做總結,習慣一旦形成,久而久之,便會印在你的腦海里,你下次再被問到這一問題時,你就可以用自己之前總結過的內容來回答。
最近有些網友問我如何自學 Java 後端,還有些是想從別的方向想轉過來,但都不太了解 Java 後端究竟需要學什麼,究竟要從哪裡學起,哪些是主流的 Java 後端技術等等,導致想學,但又很迷茫,不知從何下手。我就以過來人的經歷,寫在這篇博客里,不一定都對,但都是我根據自己的經歷總結出來的,供你們的參考。
Java 基礎
Java 是一門純粹的面向對象的編程語言,所以除了基礎語法之外,必須得弄懂它的 oop 特性:封裝、繼承、多態。此外還有泛型、反射的特性,很多框架的技術都依賴它,比如 Spring 核心的 Ioc 和 AOP,都用到了反射,而且 Java 自身的動態代理也是利用反射實現的,這裡我特意寫了一篇 Java動態代理原理分析。此外還有 Java 一些標準庫也是非常常見,比如集合、I/O、並發,幾乎在 Web 開發中無處不在,也是面試經常會被問到的,所以在自學 Java 後端之前,不妨先打好這些基礎,另外還有 Java8 的一些新特性,也要重點關注,比如 Lambda 表達式、集合的 Stream 流操作、全新的 Date API 等等,關於新特性,我也寫了幾篇關於這方面的博客,請自行找吧,就不貼出來了。
關於書籍推薦,我是不建議初學者一開始就拿着「Java 編程思想」啃的,因為當初我就是那個當天下午決定自學 Java,晚上就抱着這本書啃的人,說實話,我當時真的不懂它在說啥,因為我沒有一點的面向對象語言編程的基礎,而這本書又寫得太博大精深了,在當時的我來說,完全是天書,但是我認為它仍然是 Java 界的聖經,每讀一次都有所收穫。我在這裡推薦你們一開始先看「Java 核心技術」,這本書講得比較通俗易懂,初學者比較能接受。
關於視頻推薦,我當初就是聽某客的畢向東老師講的 Java 基礎教程,畢老師講的實在是太生動有趣了,不知不覺把我帶進 Java 的坑裡無法自拔,有時候我會聽他視頻時笑出聲來,也許是我那段自學階段最有趣的時刻了。
數據庫
關於 sql 方面:SQL 教程、MySQL 教程
我是了解了一些基礎語法之後,就直接跟着視頻的老師做一些表操作實戰練習了,比如單表查詢、多表查詢等。我建議學 sql 切勿眼高手低,需多加練習,不要只看懂了就行,因為工作中寫得一手簡練的 sql 是非常重要的。在這裡我說下我在項目一直秉承着 sql 語句是能避免多表查詢就避免多表查詢,能夠分開多條語句就分開多條語句,因為這裡涉及到多表查詢性能和數據庫擴展的問題。
關於 JDBC 方面:JDBC 教程、 JDBC 獲取連接對象源碼分析
你需要弄懂 JDBC API 的用法,其實它只是一組規範接口,所有數據庫驅動只要實現了 JDBC,那麼我們就可以通過標準的 API 調用相應的驅動,完全不用知道驅動是怎麼實現的,這就是面向接口編程的好處。而且對於 JDBC 我是直接看視頻去理解的,跟着視頻做了一個基於 Apache Dbutils 工具做了一個具有事務性的小工具,我特意用思維導圖總結了一下:
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 通信與客戶端進行交互的服務端程序:Tomcat結構及處理請求過程
Web 主流框架
Java Web 框架多如牛毛,等你有一定經驗了,你也可以寫一個 Web 框架,網上很多說 Spring、Struts2、Hibernate 是 Java 三架馬車,我只想說,那是很久遠的事情了,我嚴重不推薦 Struts2、Hibernate,相信我,一開始只需要上手 Spring、SpringMVC、Mybatis 就可以了,特別是 Spring 框架,其實 Spring 家族的框架都是很不錯的。
但是提醒一點就是,千萬不要沉迷於各種框架不能自拔,以會多種用法而沾沾自喜,導致知其然而不知其所以然。
Spring其核心思想就是 IOC 和 AOP:
談談對 Spring IOC 的理解
Spring 面向切面編程
SpringMVC 它的思想是全部請求統一用一個 Servlet 去做請求轉發與控制,這個 Servlet 叫 DispatcherServlet:
SpringMVC 初始化過程
SpringMVC 處理請求過程
Mybatis 它可實現動態拼裝 sql,避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集:
mybatis 入門教程
Mybatis 深入淺出系列
Web 框架進階
使用了 SSM 框架後,你會覺得框架也不過這麼回事,如果你對 Spring 有過大概了解,你也會產生想寫一個「山寨版」Spring 的心思了,一個輕量級 Web 框架主要具備以下功能:
可讀取用戶自定義配置文件,並以此來初始化框架;
具備 Bean 容器,管理項目的類的對象生命周期;
具備依賴注入,降低類之間的耦合性;
具備 AOP 功能,使項目可進行橫向編程,可不改變原有代碼的情況增加業務邏輯;
具備 MVC 框架模式。
其實除了 SSM 之外,Web 框架可謂是百家齊放,其中以 Spring 全家桶最為耀眼,在這裡我極力推薦兩個 Spring 家族框架:SpringBoot 和 SpringCloud。
SpringBoot 彌補了 Spring 配置上的缺點,再也不用為繁雜的 xml 費勁精力了,堪稱是 Java 後端開發的顛覆者,推薦書籍「Java EE 開發的顛覆者:SpringBoot實戰」
SpringBoot 構建 web 項目
SpringBoot 自動化配置源碼分析
自定義 SpringBoot Starter
spring-boot-starter-tutorial
SpringCloud 是一個微服務架構,能夠將項目按照業務分成一個個微服務,每個微服務都可獨立部署,服務之間互相協調。當一個項目越來越大時,隨之而來的是越來越難以維護,此時將項目拆分成若干個微服務、單獨維護、單獨部署,也可以降低項目不同業務間的耦合度。推薦書籍「Spring Cloud 與 Docker 微服務架構實戰」,這本書將 Docker 與微服務完美地結合在一起,堪稱完美!
Spring Cloud 中文官網
史上最簡單的 Spring Cloud 教程
我寫的有關於 Spring Cloud 的博客:
SpringCloud微服務架構之服務註冊與發現
SpringCloud微服務架構之服務消費者
SpringCloud微服務架構之斷路器
SpringCloud微服務架構之服務網關
其它技術
Redis:一個高性能的 key-value 數據庫,當有並發量很高的請求時,將數據緩存在 Redis 中,將提高服務器的響應性能,大大減輕數據庫的壓力。
redis 中文官網
redis 教程
Git:世界上最先進的分佈式版本控制系統,建議所有初學者從命令行開始使用 Git!關注 stormzhang 公眾號「googdev」,回復「github」,即可免費獲取一份 GitHub 教程電子書,我覺得寫得很不錯。
Git 官網
最全 Git 教程
Git 的一些常用命令
Maven:一個用於構建項目的工具,將項目間的依賴通過 xml 完美地組織到一起,可通過編譯插件將項目編譯成位元組碼文件。還有類似的 Gradle 也是不錯的選擇。
maven 的 pom.xml 文件詳解
Linux:至少要求常用的命令會用,能夠在 linux 環境下部署項目。
Linux 命令大全
最全的 SSH 連接遠程終端教程
Docker:簡直是項目部署神器啊,來不及解釋了,看我 Docker 系列博客,開啟 Docker 之旅吧!推薦書籍「Docker 技術入門與實戰」,中國首部 Docker 著作!
Docker 實戰(一)
Docker 實戰(二)
Docker 實戰(三)
docker-deploy-tutorial
開發工具
工欲善其事,必先利其器,以下是我推薦的一些開發工具:
Intellij IDEA:Java 開發最好的 IDE,這個是公認的,我一開始是用 Eclipse 的,後來用了 Intellij IDEA,才發現 Eclipse 就是一坨屎,所以我以過來人勸你們不要使用 Eclipse,直接 Intellij IDEA!
IntelliJ IDEA 使用教程
Iterm2:macOS 最好用的終端!
Iterm2 使用指南
Chrome:人生苦短,請用 Chrome,來不及解釋了,快上車!
Postman:很好用的一個接口調試工具。
原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/127094.html