JAVA后端應(yīng)該學(xué)什么技術(shù)?
java學(xué)習(xí)路線圖
下圖描述了一個java程序員在成長過程中,需要逐步學(xué)習(xí)的知識。必須聲明,下圖不是本人原創(chuàng),是github項目sorenduan/awesome-java-books ,原作者的項目還是要說明一下。大家可以去github上去看這個項目。但是因為原文是英文的,我謹(jǐn)在此向原作者表示敬意,并對英文內(nèi)容進(jìn)行翻譯,希望可以幫助到大家!
圖中的
黃色是優(yōu)先,重點(diǎn)掌握的內(nèi)容,優(yōu)先級比較高褐色是進(jìn)階的內(nèi)容,需要有一定工作經(jīng)驗再去學(xué)習(xí)灰色的內(nèi)容,有時間有精力,自己有興趣或者明確需求的可以去學(xué)習(xí)一下最重要的宗旨是:持續(xù)學(xué)習(xí),Keep Learing
路線圖中文解釋Prerequisites 必備基本
Java java基礎(chǔ)Gradle or Maven 項目構(gòu)建及管理工具SQL SQL基礎(chǔ)是必須要會而且要精的內(nèi)容General Development Skills
Learn GIT, 代碼版本管理工具git,幾乎所有的開源世界的代碼都是git管理的,如果不會,你就只能閉門造軍,無法吸收大神們的精髓知道HTTP及HTTPs原理,及常用的HTTP方法(GET, POST, PUT, PATCH, DELETE, OPTIONS)學(xué)會使用搜索引擎,如果有可能,盡量用google,你懂的學(xué)習(xí)一些算法和數(shù)據(jù)結(jié)構(gòu)的知識學(xué)一些基礎(chǔ)的權(quán)限管理相關(guān)的設(shè)計知識常用的代碼開發(fā)及設(shè)計原則,如:SOLID系列原則命令行及參數(shù)解析工具
args4jJCommanderairlineweb框架
Spring 這個不說了,必學(xué)必會Play Framework 一個full-stack(全棧的)Java Web的應(yīng)用框架Spark 一個簡單易用的web應(yīng)用框架(這里說的不是,在大數(shù)據(jù)流式處理領(lǐng)域的那個spark)Jersey RESTful 框架是開源的RESTful框架nanohttpd 一個開源的http庫,只需要一個類便可輕易實現(xiàn)http服務(wù)Databases 數(shù)據(jù)庫
Relational 關(guān)系型數(shù)據(jù)庫,這個不多說,掌握SQL ServerPostgreSQLMariaDBMySQLOracleCloud Databases 云數(shù)據(jù)庫(說實話這兩個筆者沒用過)CosmosDBDynamoDBSearch Engines 全文檢索引擎類ElasticSearch 適用于海量數(shù)據(jù)存儲及全文檢索Solr 全文檢索引擎Sphinx 一個基于SQL的全文檢索引擎,可以結(jié)合MySQL,PostgreSQL做全文搜索NoSQL MongoDB 文檔類數(shù)據(jù)庫,較常用Redis 鍵值對內(nèi)存數(shù)據(jù)庫,常用Apache Cassandra 分布式的Key-Value數(shù)據(jù)庫,性能較好LiteDB 輕量級的Serverless 文檔數(shù)據(jù)庫LiteDBRavenDB CouchDB 一個開源的面向文檔的數(shù)據(jù)庫管理系統(tǒng)ORMs ORM框架類(筆者在這里加上一個Mybatis,國內(nèi)用的多)
Hibernate(JPA) 即使不用也要學(xué),思想EbeanBelleORMCaching 緩存數(shù)據(jù)存儲
CaffeineEHCacheCache2kDistributed Cache 分布式緩存Java-Redis 這種最常用Java-MemcachedInfinispanLogging 日志
Log Frameworks 日志框架(筆者在這里加上logback)ZapTinyLoglog4j、log4j2 常用Log Management System 日志管理系統(tǒng)Sentry.ioLoggly.comTracerReal-Time Communication 實時通信
Socket.IOatmospherewebbitAPI Clients API客戶端
REST REST接口-JSON格式,基于HTTP協(xié)議okhttpretrofitGraphQL 一種為你的 API 而生的查詢語言Good to Know 最好要會
Beanvalidation 通常用于參數(shù)校驗bouncycastlegson JSON數(shù)據(jù)處理工具Apache Shiro 權(quán)限管理JJWT 接口訪問token授權(quán)RxJava 一套異步編程的 APITesting 測試相關(guān)
Unit, Behavior, Integration, Load TestingJUnit 最常用CitrusFrameworkGatlingTsungMockito 模擬測試,常用TruthAssertj cucumber-jvmcukeshoverfly-javarest-assuredjbehaveE2E Testing 端到端測試Selenium 常用Task Scheduling 定時任務(wù)管理
AuroraelasticjobSundialcron-utilsMicroServices 微服務(wù)
Message-Broker 消息中間件RabbitMQ 常用Apache Kafka 常用ActiveMQ 常用Azure Service BusMessage-Bus 消息總線mbassadorrmqFrameworks 框架Apollo 分布式配置中心lagom-frameworkmicronauteureka 服務(wù)注冊中心 helidonarmeriaRPC 遠(yuǎn)程接口調(diào)用(序列化、反序列化)Protocol BuffersgRPC-JavathriftJava-Patterns java設(shè)計模式
雖然這張路線圖,已經(jīng)相對完整,但是相對于國內(nèi)一些公司的要求還有很多可以補(bǔ)充的地方。如果想成為架構(gòu)師,可能要學(xué)會
linux 不會的話,開源分布式軟件,你安裝不上,你怎么學(xué)?docker & devops 持續(xù)集成、運(yùn)維優(yōu)化等spring cloud 和國內(nèi)常用的 dubbo,負(fù)載均衡haproxy、nginx等甚至你還要去學(xué)前端知識,css、html自不必說。目前國內(nèi)最流行的vue。總之一句話:Keep Learing,持續(xù)學(xué)習(xí)。筆者一直覺得程序員的投入與回報是不成正比的,我覺得沒有一個行業(yè)有程序員需要的知識更新速度快,目前還沒發(fā)現(xiàn)。也許有些人不認(rèn)可,但是入這行時間久了就會明白!所以不要忘了你為什么出發(fā)?如果單純是因為錢,而不是因為熱愛,在適當(dāng)?shù)臅r間需要轉(zhuǎn)向或回頭!