侯家萍
java學習路線圖
下圖描述了一個java程序員在成長過程中,需要逐步學習的知識。必須聲明,下圖不是本人原創,是github項目sorenduan/awesome-java-books ,原作者的項目還是要說明一下。大家可以去github上去看這個項目。但是因為原文是英文的,我謹在此向原作者表示敬意,並對英文內容進行翻譯,希望可以幫助到大家!
圖中的
- 黃色是優先,重點掌握的內容,優先級比較高
- 褐色是進階的內容,需要有一定工作經驗再去學習
- 灰色的內容,有時間有精力,自己有興趣或者明確需求的可以去學習一下
最重要的宗旨是:持續學習,Keep Learing
路線圖中文解釋
Prerequisites 必備基本
- Java java基礎
- Gradle or Maven 項目構建及管理工具
- SQL SQL基礎是必須要會而且要精的內容
- Java java基礎
General Development Skills
- Learn GIT, 代碼版本管理工具git,幾乎所有的開源世界的代碼都是git管理的,如果不會,你就只能閉門造軍,無法吸收大神們的精髓
- 知道HTTP及HTTPs原理,及常用的HTTP方法(GET, POST, PUT, PATCH, DELETE, OPTIONS)
- 學會使用搜索引擎,如果有可能,儘量用google,你懂的
- 學習一些算法和數據結構的知識
- 學一些基礎的權限管理相關的設計知識
- 常用的代碼開發及設計原則,如:SOLID系列原則
- Learn GIT, 代碼版本管理工具git,幾乎所有的開源世界的代碼都是git管理的,如果不會,你就只能閉門造軍,無法吸收大神們的精髓
命令行及參數解析工具
- args4j
- JCommander
- airline
web框架
- Spring 這個不說了,必學必會
- Play Framework 一個full-stack(全棧的)Java Web的應用框架
- Spark 一個簡單易用的web應用框架(這裡說的不是,在大數據流式處理領域的那個spark)
- Jersey RESTful 框架是開源的RESTful框架
- nanohttpd 一個開源的http庫,只需要一個類便可輕易實現http服務
- Spring 這個不說了,必學必會
Databases 數據庫
- Relational 關係型數據庫,這個不多說,掌握
- SQL Server
- PostgreSQL
- MariaDB
- MySQL
- Oracle
- Cloud Databases 雲數據庫(說實話這兩個筆者沒用過)
- CosmosDB
- DynamoDB
- Search Engines 全文檢索引擎類
- ElasticSearch 適用於海量數據存儲及全文檢索
- Solr 全文檢索引擎
- Sphinx 一個基於SQL的全文檢索引擎,可以結合MySQL,PostgreSQL做全文搜索
- ElasticSearch 適用於海量數據存儲及全文檢索
- NoSQL
- MongoDB 文檔類數據庫,較常用
- Redis 鍵值對內存數據庫,常用
- Apache Cassandra 分佈式的Key-Value數據庫,性能較好
- LiteDB 輕量級的Serverless 文檔數據庫LiteDB
- RavenDB
- CouchDB 一個開源的面向文檔的數據庫管理系統
- MongoDB 文檔類數據庫,較常用
- Relational 關係型數據庫,這個不多說,掌握
ORMs ORM框架類(筆者在這裡加上一個Mybatis,國內用的多)
- Hibernate(JPA) 即使不用也要學,思想
- Ebean
- BelleORM
- Hibernate(JPA) 即使不用也要學,思想
Caching 緩存數據存儲
- Caffeine
- EHCache
- Cache2k
- Distributed Cache 分佈式緩存
- Java-Redis 這種最常用
- Java-Memcached
- Infinispan
- Java-Redis 這種最常用
Logging 日誌
- Log Frameworks 日誌框架(筆者在這裡加上logback)
- Zap
- TinyLog
- log4j、log4j2 常用
- Log Management System 日誌管理系統
- Sentry.io
- Loggly.com
- Tracer
- Log Frameworks 日誌框架(筆者在這裡加上logback)
Real-Time Communication 實時通信
- Socket.IO
- atmosphere
- webbit
API Clients API客戶端
- REST REST接口-JSON格式,基於HTTP協議
- okhttp
- retrofit
- GraphQL 一種為你的 API 而生的查詢語言
- REST REST接口-JSON格式,基於HTTP協議
Good to Know 最好要會
- Beanvalidation 通常用於參數校驗
- bouncycastle
- gson JSON數據處理工具
- Apache Shiro 權限管理
- JJWT 接口訪問token授權
- RxJava 一套異步編程的 API
- Beanvalidation 通常用於參數校驗
Testing 測試相關
- Unit, Behavior, Integration, Load Testing
- JUnit 最常用
- CitrusFramework
- Gatling
- Tsung
- Mockito 模擬測試,常用
- Truth
- Assertj
- cucumber-jvm
- cukes
- hoverfly-java
- rest-assured
- jbehave
- JUnit 最常用
- E2E Testing 端到端測試
- Selenium 常用
- Selenium 常用
- Unit, Behavior, Integration, Load Testing
Task Scheduling 定時任務管理
- Aurora
- elasticjob
- Sundial
- cron-utils
MicroServices 微服務
- Message-Broker 消息中間件
- RabbitMQ 常用
- Apache Kafka 常用
- ActiveMQ 常用
- Azure Service Bus
- RabbitMQ 常用
- Message-Bus 消息總線
- mbassador
- rmq
- Frameworks 框架
- Apollo 分佈式配置中心
- lagom-framework
- micronaut
- eureka 服務註冊中心
- helidon
- armeria
- Apollo 分佈式配置中心
- RPC 遠程接口調用(序列化、反序列化)
- Protocol Buffers
- gRPC-Java
- thrift
- Message-Broker 消息中間件
Java-Patterns java設計模式
雖然這張路線圖,已經相對完整,但是相對於國內一些公司的要求還有很多可以補充的地方。如果想成為架構師,可能要學會
- linux 不會的話,開源分佈式軟件,你安裝不上,你怎麼學?
- docker & devops 持續集成、運維優化等
- spring cloud 和國內常用的 dubbo,負載均衡haproxy、nginx等
- 甚至你還要去學前端知識,css、html自不必說。目前國內最流行的vue。
總之一句話:Keep Learing,持續學習。筆者一直覺得程序員的投入與回報是不成正比的,我覺得沒有一個行業有程序員需要的知識更新速度快,目前還沒發現。也許有些人不認可,但是入這行時間久了就會明白!所以不要忘了你為什麼出發?如果單純是因為錢,而不是因為熱愛,在適當的時間需要轉向或回頭!
字母哥課堂
Java語言是最常見的後端開發語言之一,Java語言由於自身具備構建多線程的能力,且體系結構比較中立,所以在大型互聯網平臺的開發中得到了廣泛的採用。
目前要想從事Java的後端開發應該學習以下內容:
第一,Servlet技術。Servlet技術是Java後端的重要技術之一,作為Java Web開發的核心組件,Servlet承擔了Web MVC結構中的核心作用(功能導航)。傳統的Model2結構(Servlet+JavaBean+JSP)雖然在目前已經很少使用了,但是Web開發的基本結構依然沒有改變。Servlet技術的應用涉及到Web容器、會話(HttpSession)、安全、同步、Web應用部署等相關內容。
第二,Java操作數據庫。後端開發免不了與數據庫打交道,所以掌握Java的數據庫操作是一個基本要求。Java操作數據庫涉及到的內容有JDBC、JNDI、RMI、DAO等內容,其中使用RMI+JDBC是構建java數據庫開發的一個常見的解決方案,而JNDI則是對各種資源的定義。
第三,Spring框架。Spring+SpringMVC+MyBatis是目前一個比較常見的後端開發方案,Spring的原理就是構建了一個“業務組件容器”,SpringMVC則是Web MVC的一個具體實現框架,而MyBatis則是一個基於DAO的實現框架。從性能的角度來說,Spring是EJB的輕量級解決方案,得到了廣大Java程序員的歡迎。如果有Servlet以及數據庫操作的基礎,那麼學習這幾個框架的使用是一件非常輕鬆的過程。雖然基於Spring的編程比較方便,但是Spring也有缺點,比如配置文件過於繁瑣。
第四,結合hadoop構建Java的分佈式開發。Java的分佈式開發是提高Java後端處理能力的重要內容,RMI是Java分佈式開發比較常見的解決方案,學習起來也比較簡單。在學習完RMI之後可以進一步學習在Hadoop平臺(大數據平臺)下構建Java的分佈式應用,另外Docker(雲計算常用)也是一個不錯的構建分佈式開發的平臺。
Java開發涉及到的內容比較多,需要一個系統的學習過程,建議在實際使用過程中學習,這樣效果會更好。
我使用Java語言多年,目前主要研究方向是大數據和人工智能,也在帶大數據方面的研究生,我會陸續在頭條上寫一些關於軟件開發方面的文章,感興趣的朋友可以關注我的頭條號,相信一定會有所收穫。
如果有大數據方面的問題,或者是考研方面的問題,都可以諮詢我。
謝謝!
IT人劉俊明
java最大的優勢是網絡編程, 還有是Android編程,除了掌握Java基本的語言知識,比如三大基本特性,建議讀一本Java書,比如Java編程思想~
之後你可以學習高階的,例如jsp/servlet, struts, spring, springboot,這些都是web服務器的東西。也可以學習,tcp socket套接字,這些是服務器的東東。
更進一步的話,就看你的Java功底和計算機基礎了,比如web,最重要的是代碼結構還有架構,這會直接影響你的程序效率,因為一個人訪問你的服務器和一百萬人訪問你的服務器是不一樣的。那該如何處理呢?可以採用多個服務器,這多個服務器接在一個負載均衡之後~
在網上,就得考慮你的程序的安全性,比較成熟的框架比如springboot提供了很完善的安全模塊,相比而言strut就很渣……
總之,還有很多,不過大體就這些~
SleepyMonk
java web開發需要學習的知識體系非常龐大,這不是短時間內能夠學完的。當然最開始可以先挑必要的先學,後續再慢慢補充其它知識。首先既然要做java開發,肯定是要先學習java語言基礎,在java基礎之上學習java web體系知識。因為後端開發涉及到跟數據庫打交道,所以數據庫也是避免不了的。當然有個別的大公司有專門負責前端的,不過我去過的公司貌似還沒有說搞後臺的就不用去開發前端了。。。所以,目前的形勢就是,雖然你是以後臺為主,但仍然避免不了前端開發。那麼html、js等這些前端的東西也需要學習。綜合來講,如果剛入門的話,建議先從上述幾個知識體系開始學習,也就是數據庫、java基礎、java web、html+js。最後就是市面上主流的一些框架,如spring、spring mvc、struts2、hibernate、mybatis等。這些東西學完就可以試著做web開發了
代表月亮太陽伱
Java後端應該學什麼技術?我們知道Java語言應用廣泛,而且流行度很高、企業需求也非常大,粗略計算,大概100個程序員裡有17-18個人都是搞Java的,Java後端對於企業的重要性不言而喻。
隨著互聯網的快速發展,尤其是移動互聯網開始興起以後,海量的用戶呼嘯而來,一個單機部署的小小War包肯定是撐不住了,必須得做分佈式。業務日趨複雜,我們不得不把某些業務放到一個機器(或集群)上,把另外一部分業務放到另外一個機器(或集群)上,雖然系統的計算能力,處理能力大大增強,但是這些系統之間的通信就變成了頭疼的問題,消息隊列(MQ),RPC框架(如Dubbo)應運而生,為了提高通信效率,各種序列化的工具也爭先空後地問世。
隨著用戶對前端頁面的要求越來越高,很多大型互聯網公司都實行“前後端分離”,後端的工程師只負責提供接口和數據,專注於業務邏輯的實現,前端取到數據後在瀏覽器中展示,各司其職。Java後端應該具備的技術包括以下幾大模塊:
Java基礎:Java開發介紹、Java數組、Java面向對象、常用基礎類、集合、IO流、多線程、異常、網絡、反射
JavaWeb:HTML5、CSS3、JavaScript、MySQL使用、JDBC連接池、Servlet、JSP、AJAX、jQuery、Bootstrap
Java框架:Maven、Hibernate、Spring、Spring MVC、MyBatis、WebService、SVN、Activiti
Java + 雲數據:Linux版本、MySQL優化、MySQL優化、Nginx反向代理、Quartz 作業調度、Redis 高性能(Key-Value)數據庫、Shiro 安全(權限)框架、Lucene&Solr全文檢索、Zookeeper 分佈式系統、MyCAT 大數據集群、Dubbo實現分佈式架構、ActiveMQ 消息隊列、ActiveMQ 消息隊列、分佈式框架原理、基於SpringMVC的集成單元測試MockMVC、SpringBoot 快速構建JavaEE項目……
希望我的總結能對大家有幫助,需要Java視頻學習教程的小夥伴也可以私信我索取~
小貝的STEAM教室
新手的話。先學習ssm 即spring springMVC mybatis 這是目前主流的技術 在進階可以學習springboot 這是一個快速搭建環境的框架。很簡單的回答 希望能幫到你。