在学习以前,咱们想一想什么是 Web 容器,以及怎么学习 Web 容器。在学习一门技术以前,想一想这两个问题,能够达到事半功倍的效果。java
让咱们回顾一下web技术的发展历史,能够帮助你理解web容器的由来。web
早期的web应用主要应用于浏览静态网页,HTTP服务器(好比Apache、Nginx)向浏览器返回静态HTML,浏览器负责解析HTML,将结果呈现给用户。小程序
随着互联网发展,咱们已不知足于仅仅浏览静态网页,还但愿经过一些交互操做来获取动态结果,所以也就须要一些扩展机制可以让Http服务器调用服务端程序。浏览器
因而Sun公司推出了Servlet容器。能够把servlet简单理解为运行在服务端的java小程序,可是servlet没有main方法,不能独立运行,所以必须把它部署到serlet容器,由容器来实例化并调用servlet。服务器
而Tomcat和jetty就是一个Servlet容器。为了方便使用,他们也具备Http协议服务器的功能,所以Tomcat或jetty就是“HTTP服务器+Servlet容器”,咱们也叫它Web容器。网络
其余应用服务器好比JBoss和WebLogic,他们不只有servlet容器的功能,也包含EJB容器,是完整的javaEE应用服务器,从这个角度看,Tomcat和jetty算是轻量级的应用服务器。架构
在微服务架构日渐流行的今天,开发人员比较喜欢稳定的、轻量级的应用服务器,而且应用服务器用内嵌的方式来内嵌的方式运行servlet容易也逐渐流行起来。异步
在微服务架构下,咱们把一个大而全的单体应用,拆分红一个个功能单一的微服务,在这个过程当中,服务的数量必然增长,为了减小资源的消耗,并下降部署的成本,咱们也但愿运行部署的web容器也是轻量级的,web容器自己应该消耗较少的内存和CPU资源,而且由应用自己来启动一个嵌入式的web容器,而不是经过web容器来部署和启动应用,这样能够下降应用部署的复杂度。微服务
所以轻量级的Tomcat和jetty就是一个很好的选择,而且Tomcat它自己也是Springboot默认的嵌入式Servlet容器。最新版本Tomcat和jetty也支持Servlet4.0。学习
学习Java Web容器以前须要学习一些计算机基础知识:
对于web容器来讲,操做系统方面应该掌握它的工做原理,好比什么是进程、什么是内核、什么是内核空间和用户空间、进程间通讯的方式、进程和线程的区别、线程同步的方式、什么是虚拟内存、内存分配的过程,什么是I/O,什么是I/O模型、阻塞与非阻塞的区别、同步与异步的区别、网络通讯的原理、OSI七层网络模型以及TCP/IP、UDP和Http协议。 ,好比什么是进程、什么是内核、什么是内核空间和用户空间、进程...