侯家萍
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学习路线图
下图描述了一个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最大的优势是网络编程, 还有是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 这是一个快速搭建环境的框架。很简单的回答 希望能帮到你。