在學習以前,咱們想一想什麼是 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協議。 ,好比什麼是進程、什麼是內核、什麼是內核空間和用戶空間、進程...