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,持續學習。筆者一直覺得程序員的投入與回報是不成正比的,我覺得沒有一個行業有程序員需要的知識更新速度快,目前還沒發現。也許有些人不認可,但是入這行時間久了就會明白!所以不要忘了你為什么出發?如果單純是因為錢,而不是因為熱愛,在適當的時間需要轉向或回頭!