新手程序员通常会走入一个误区就是认为学习了一门语言就可以称为是某某语言工程师了。但事实上真的是这样吗其实并非如此。今天我们就来聊一聊Java 开发工程师到底开发的是什么东西。准确点来说Java后端到底在做什么大家都知道 Java 是一门后端语言后端指的就是服务端服务端代码一般运行在服务器上通常我们运行Java 程序的服务器都是 Linux 服务器。这些服务器在互联网公司中一般放在一个叫做机房的地方里于是像我们这类 Java 程序员的代码一般也运行在这些机房里的服务器中。Java 里有一个概念叫做虚拟机你可以把它理解为一个安卓的模拟器比如你在电脑上装了一个安卓模拟器就可以通过它来运行安卓应用程序比如装个 APP手机游戏什么的。所以当你在电脑上安装了一个叫做 JDK 的东西时电脑里就有了 JRE 也就是 Java 运行环境有了这个运行环境你就可以运行 Java 应用程序了。知道 Java 程序如何运行在计算机上之后我们再来讲一讲平时学的一些 Java 基础知识它们到底有什么用其实平时这一些 Java 基础语法都仅仅是你写代码的一些基础知识就相当于英语中的 26 个字母常见的有基本类型变量、for 循环、if else 等等基本语法掌握了这些基础知识之后你就可以上手写一些很简单的代码了。除此之外Java 还有一些比较特别的概念比如面向对象的特性其中有类、接口等概念。为什么 Java 要引入这些东西呢其实就是想让使用者更好地进行设计、抽象和编程。对于新手来说你不需要理解得特别的深刻因为这些东西只有你在你真正写代码之后才能逐步去理解。说完基本知识之后我想你也会好奇Java里经常提到的一些集合类是干嘛的呢因为在现实生活中有很多场景需要用到集合类比如说一个用户名列表你要怎么存呢你会用一个 List 来做对不对所以集合类的作用就是让你在编程中更好的存储数据。事实上集合类的概念最早是来源于数据结构的因为计算机里有很多特殊的数据存储结构比如文件树比如链表和数组等结构因此计算机理论把这些存储数据的模型抽象成一些常见的结构统称为数据结构。那么Java 中的并发编程又是做什么的呢Java 中的多线程是为了更好地利用电脑中的CPU核心通过并发编程就可以提高程序并发的效率。但是并发编程的背后需要操作系统的支持以及计算机硬件的支持所以如果你要完全地理解多线程绝不仅仅是理解 Java 里的 Thread 或者是线程池就足够了你还需要去理解操作系统以及计算机组成原理。和并发编程类似Java 里也有网络编程的概念Java 里的网络编程和其他语言大同小异其实也是基于 TCP/IP 协议实现的一套 API通过网络编程你就可以在程序中把你想传输的数据传输到网络的另一端有了网络编程和并发编程之后Java 程序员的能量已经很大了讲完这几点之后接下来再谈谈我们通常说的 Java 后端技术到底是什么就拿支付宝来举例吧曾经的支付宝用户数并不多一台服务器一个数据库就可以支持所有的业务了。当支付宝的用户越来越多的时候一台服务器无法同时满足海量用户的需求于是开始出现了多台服务器多台服务器组成了一个集群用户可以通过负载均衡的方式访问这些服务器每个用户可能会访问到不同的机器上这样子就达到了分流的效果服务器的压力就会减小。由于数据库需要保证数据的可靠性万一某一台数据库挂了并且没有备份的话那么这个数据就无法访问了这在大型系统中是不允许出现的于是乎就有了数据库的主从部署。但事实上随着业务发展数据库的压力也越来越大主备部署并不能解决数据库访问性能的问题于是乎我们需要进行分库分表在数据库主备的基础上我们会把一个数据量很大的表拆成多个表并且把数据库请求分流到不同的数据上比如说100个分库100个分表就相当于把一个数据表划分成10000个数据表。此时又出现一个问题如果一个数据库有多个备库并且当主库挂掉的时候需要进行主从切换时主备数据库之间的数据就可能发生不一致而这也是分布式理论研究的问题之一因为比较复杂我们这里就略过不讲。刚才说到了分布式技术其实负载均衡、分库分表都是分布式技术的一种实现如果你不想做分库分表那还有什么办法能够减轻数据库访问的压力呢于是缓存就出现了缓存可以让服务器先把请求打到缓存上由于缓存的数据一般在内存中所以访问速度会非常快这些请求无需经过数据库。随着业务发展缓存的单点压力也会比较大于是乎分布式缓存就出现了通常来说缓存难以保证数据的可靠性因为它们的数据可能会丢失同时缓存只能存储一部分的数据并不能解决所有问题。所以当某些业务的请求量非常大的时候光靠缓存也解决不了问题此时我们还可以通过消息队列来帮我们解决大流量并发请求的问题。我们可以通过消息队列来存储一部分的请求消息然后根据我们服务器处理请求的能力把消息再逐步取出来接着去把这些消息逐渐地进行处理这样就可以很好的解决高并发的问题。当然前提是消息队列要保证消息存储的可靠性这也是大部分消息队列都会保证的能力。一口气讲了这么多算是把 Java 后端的大概面貌介绍清楚了除此之外还有很多东西没讲到真要讲完的话一晚上也说不完。总体来说Java 后端技术说难不难说简单也不简单我尽量把这些内容都讲的比较通俗易懂事实上每项技术的背后都有特别多复杂的实现原理当然在你理解了 Java 后端技术的整体概念以后相信对于你之后的学习会更有帮助。