你所说的 “客户端访问页面也不需要装jvm啊”
证明了你连服务端和客户端都分不清
你可能是正版培训班的受害者
花点功夫解释下给你哈。
纵向比较:客户端编程 vs 服务器编程
客户使用的软件叫做客户端。比如 手机APP,所有的网站, 游戏客户端,由于这些软件是直接面向客户的,所以经常叫做前端。他们的数据来源是远程的服务器端的应用软件。他们对软件客户是不可见的,就像一个“幕后黑手”,因此服务器端应用也经常叫后端。换句话讲:很多软件产品,是分前后端的。前端是给客户用的,后端是为前端提供服务的。因此整个拓扑是星形结构(先不说分布式)。N多个前端对应一个后端。
在用户使用客户端的时候,前端和服务器应用建立连接,互相传递数据。服务器这端究竟是什么程序,如何实现的,跟你毫无关系,作为客户端,我只是要从服务器来的数据就可以了。
作为前端选手,实际上就是负责客户端编程。你编写设计的页面与软件客户直接交互。而软件的业务逻辑并不在客户端实现(一般而言)。
作为后端选手,实际上你是为客户端提供各种各样的数据和数据结构。客户端会向服务端发出各种各样的数据请求,然后针对请求完成逻辑业务,取得数据,返回给客户端。
在前后端交互过程中,前端不知道后端的结构,后端也不清楚前端是用啥编写的。二者仅仅通过数据结构(XML,JSON等)和通信协议(HTTP,SOAP,SOCKET等)来交互(如果不清楚前面的缩写,慢慢你会知道的)。
举一个例子: 用户登录
用户填写好用户名密码等登录信息后,客户端把这些数据发送给服务端。服务端接到数据后再去数据库或者缓存查询校验用户信息(看看你密码对不对),除此之外还有其他行为,比如身份校验,常用登录地点是否符合等等。
2.横向比较: 为什么后端普遍使用Java
第一,跨平台。
实际上在真正的工作环境中,大多数服务器使用的都是Unix系统。跨平台的意义不大。但是Java这个语言被发明的初衷之一就是跨平台。在现在服务器端趋于统一的情况下,本来这个很有意义的价值变得不那么有闪光点了,再加上现在大热的虚拟化技术,Java的跨平台的优点已经不够突出。但是在开发的时候,跨平台仍然会带来好处。因为在多人开发的条件下,由于JVM的存在,开发和部署服务器的系统可以随意挑选,只要有对应版本的JDK。
第二,开源健壮轮子多。
Java简化了C++很多难以学习的地方,因此会Java的人多,开源社区活跃,轮子也就多,形成良性循环。降低了开发成本。尤其是现在形成了Spring Boot逐渐一统江湖的局势,让Java开发更简单。说白了就是,招个刚学会的也能写出让人能看懂可维护的代码。