JAVA後端應該學什麼技術?

侯家萍


java學習路線圖


下圖描述了一個java程序員在成長過程中,需要逐步學習的知識。必須聲明,下圖不是本人原創,是github項目sorenduan/awesome-java-books ,原作者的項目還是要說明一下。大家可以去github上去看這個項目。但是因為原文是英文的,我謹在此向原作者表示敬意,並對英文內容進行翻譯,希望可以幫助到大家!


圖中的

  • 黃色是優先,重點掌握的內容,優先級比較高
  • 褐色是進階的內容,需要有一定工作經驗再去學習
  • 灰色的內容,有時間有精力,自己有興趣或者明確需求的可以去學習一下


最重要的宗旨是:持續學習,Keep Learing

路線圖中文解釋

  1. Prerequisites 必備基本

    • Java java基礎
    • Gradle or Maven 項目構建及管理工具
    • SQL SQL基礎是必須要會而且要精的內容
  2. General Development Skills

    • Learn GIT, 代碼版本管理工具git,幾乎所有的開源世界的代碼都是git管理的,如果不會,你就只能閉門造軍,無法吸收大神們的精髓
    • 知道HTTP及HTTPs原理,及常用的HTTP方法(GET, POST, PUT, PATCH, DELETE, OPTIONS)
    • 學會使用搜索引擎,如果有可能,儘量用google,你懂的
    • 學習一些算法和數據結構的知識
    • 學一些基礎的權限管理相關的設計知識
    • 常用的代碼開發及設計原則,如:SOLID系列原則
  3. 命令行及參數解析工具

    1. args4j
    2. JCommander
    3. airline
  4. web框架

    1. Spring 這個不說了,必學必會
    2. Play Framework 一個full-stack(全棧的)Java Web的應用框架
    3. Spark 一個簡單易用的web應用框架(這裡說的不是,在大數據流式處理領域的那個spark)
    4. Jersey RESTful 框架是開源的RESTful框架
    5. nanohttpd 一個開源的http庫,只需要一個類便可輕易實現http服務
  5. Databases 數據庫

    1. Relational 關係型數據庫,這個不多說,掌握

      1. SQL Server
      2. PostgreSQL
      3. MariaDB
      4. MySQL
      5. Oracle
    2. Cloud Databases 雲數據庫(說實話這兩個筆者沒用過)
      • CosmosDB
      • DynamoDB
    3. Search Engines 全文檢索引擎類
      • ElasticSearch 適用於海量數據存儲及全文檢索
      • Solr 全文檢索引擎
      • Sphinx 一個基於SQL的全文檢索引擎,可以結合MySQL,PostgreSQL做全文搜索
    4. NoSQL
      • MongoDB 文檔類數據庫,較常用
      • Redis 鍵值對內存數據庫,常用

      • Apache Cassandra 分佈式的Key-Value數據庫,性能較好
      • LiteDB 輕量級的Serverless 文檔數據庫LiteDB
      • RavenDB
      • CouchDB 一個開源的面向文檔的數據庫管理系統
  6. ORMs ORM框架類(筆者在這裡加上一個Mybatis,國內用的多)

    1. Hibernate(JPA) 即使不用也要學,思想
    2. Ebean
    3. BelleORM
  7. Caching 緩存數據存儲

    1. Caffeine
    2. EHCache
    3. Cache2k
    4. Distributed Cache 分佈式緩存
      1. Java-Redis 這種最常用
      2. Java-Memcached
      3. Infinispan
  8. Logging 日誌

    1. Log Frameworks 日誌框架(筆者在這裡加上logback)
      • Zap
      • TinyLog
      • log4j、log4j2 常用
    2. Log Management System 日誌管理系統
      • Sentry.io
      • Loggly.com
      • Tracer
  9. Real-Time Communication 實時通信

    1. Socket.IO
    2. atmosphere
    3. webbit
  10. API Clients API客戶端

    1. REST REST接口-JSON格式,基於HTTP協議
      • okhttp
      • retrofit
    2. GraphQL 一種為你的 API 而生的查詢語言
  11. Good to Know 最好要會

    • Beanvalidation 通常用於參數校驗
    • bouncycastle
    • gson JSON數據處理工具
    • Apache Shiro 權限管理
    • JJWT 接口訪問token授權
    • RxJava 一套異步編程的 API
  12. Testing 測試相關

    1. Unit, Behavior, Integration, Load Testing
      1. JUnit 最常用
      2. CitrusFramework
      3. Gatling
      4. Tsung
      5. Mockito 模擬測試,常用
      6. Truth
      7. Assertj
      8. cucumber-jvm
      9. cukes
      10. hoverfly-java
      11. rest-assured
      12. jbehave
    2. E2E Testing 端到端測試
      • Selenium 常用
  13. Task Scheduling 定時任務管理

    • Aurora
    • elasticjob
    • Sundial
    • cron-utils
  14. MicroServices 微服務

    1. Message-Broker 消息中間件
      • RabbitMQ 常用
      • Apache Kafka 常用
      • ActiveMQ 常用
      • Azure Service Bus
    2. Message-Bus 消息總線
      • mbassador
      • rmq
    3. Frameworks 框架
      • Apollo 分佈式配置中心
      • lagom-framework
      • micronaut
      • eureka 服務註冊中心
      • helidon
      • armeria
    4. RPC 遠程接口調用(序列化、反序列化)
      • Protocol Buffers
      • gRPC-Java
      • thrift
  15. 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 這是一個快速搭建環境的框架。很簡單的回答 希望能幫到你。


分享到:


相關文章: