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 web开发需要学习的知识体系非常庞大,这不是短时间内能够学完的。当然最开始可以先挑必要的先学,后续再慢慢补充其它知识。首先既然要做java开发,肯定是要先学习java语言基础,在java基础之上学习java web体系知识。因为后端开发涉及到跟数据库打交道,所以数据库也是避免不了的。当然有个别的大公司有专门负责前端的,不过我去过的公司貌似还没有说搞后台的就不用去开发前端了。。。所以,目前的形势就是,虽然你是以后台为主,但仍然避免不了前端开发。那么html、js等这些前端的东西也需要学习。综合来讲,如果刚入门的话,建议先从上述几个知识体系开始学习,也就是数据库、java基础、java web、html+js。最后就是市面上主流的一些框架,如spring、spring mvc、struts2、hibernate、mybatis等。这些东西学完就可以试着做web开发了


代表月亮太阳伱


java最大的优势是网络编程, 还有是Android编程,除了掌握Java基本的语言知识,比如三大基本特性,建议读一本Java书,比如Java编程思想~

之后你可以学习高阶的,例如jsp/servlet, struts, spring, springboot,这些都是web服务器的东西。也可以学习,tcp socket套接字,这些是服务器的东东。

更进一步的话,就看你的Java功底和计算机基础了,比如web,最重要的是代码结构还有架构,这会直接影响你的程序效率,因为一个人访问你的服务器和一百万人访问你的服务器是不一样的。那该如何处理呢?可以采用多个服务器,这多个服务器接在一个负载均衡之后~

在网上,就得考虑你的程序的安全性,比较成熟的框架比如springboot提供了很完善的安全模块,相比而言strut就很渣……

总之,还有很多,不过大体就这些~


SleepyMonk


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 这是一个快速搭建环境的框架。很简单的回答 希望能帮到你。


分享到:


相關文章: