Tomcat(這裏以tomcat代表web服務器)和Servlet對比:
Tomcat可以理解成用於http平臺的服務器,能接受http的請求並分析。
Servlet是java內部的一種規範,準確的說,他可以對參數進行分析,創建對象然後返回數據。
這兩者對比,差不多就是Tomcat負責請求連接,斷開連接,連接校驗等操作,Servlet主要處理內部數據操作,注意這個對請求的操作實際上是最複雜的。
Tomcat和Netty對比:
tomcat是web服務器,主要針對http協議,netty支持各種協議,自己造協議都OK,當然netty也能封裝http協議,所以也當然可以用netty當做web服務器。
Tomcat是基於netty嗎?貌似不是,tomcat官網上是這麼寫的:
Tomcat 8.5 and 9.0 have completely dropped the BIO connector.
也就是說,老版本tomcat只有bio,後來加入了支持nio功能,8.5之後乾脆直接放棄bio模式了。
Tomcat用java後來的NIO來優化自己,netty也是基於nio,不過用netty做一個http服務器似乎沒那麼輕鬆,所以netty更多領域在於走各種rpc協議,消息中間件,或者其他領域的網絡通訊。
Servlet和Netty對比:
這兩個似乎沒什麼可對比的,不過都是前身都是java,關係比較遠
如果說把java當做元祖,Nio(這裏指java的NIO)當做老爹,Tomcat和netty關係可以當做兄弟(Nio),tomcat跟nginx表兄關係(nginx跟nio沒父子關係),那Servlet和netty可以當做堂兄關係(Servlet跟Nio沒關係)。