@[toc]
Jetty、Netty、Tomcat、Undertow
Jetty是一个开源的基于Java开发的Web容器,主要用于构建可扩展的服务器端应用程序。它可以运行在Java虚拟机上,可以通过插件以及其他应用程序组件来
实现服务器功能。它提供了一个用于构建Web应用的框架,可以轻松构建高性能的Web应用程序。
优势
Jetty可以提供高性能,同时拥有简单易用的API,可以让开发人员快速构建和部署Web应用程序。它还支持多种协议,如SSL、AJP、HTTP/2等,
支持OSGi框架,拥有完善的文档,以及强大的插件系统。
劣势
Jetty不支持JSP和Servlet 2.5以下的版本,并且不能支持EJB组件,也不支持重新加载Web应用程序,以及其他一些功能。
应用场景
Jetty可以用于构建高性能的Web应用程序,比如Web站点、REST API、移动应用程序、Web服务等。
基本原理
Jetty的核心是一个HTTP服务器,它可以处理HTTP请求,并将其转发给应用程序层,从而实现Web应用程序的构建和部署。
Netty 是一个基于Java NIO的客户端服务器通信框架,用于快速开发可维护的高性能协议服务器和客户端程序。
Netty可以让开发人员简化网络编程,提供易于使用的API来简化复杂的网络编程,比如TCP和UDP socket服务器。
优势
Netty拥有灵活的编程接口,可以快速构建可扩展的协议服务器和客户端程序,可以支持多种网络协议,提供可靠的网络服务,拥有高性能的网络I/O,可以支持高并发连接,并且拥有可插拔的编解码器。
劣势
Netty不支持JSP和Servlet,不支持EJB,不支持重新加载Web应用程序,也不支持HTTP/2协议。
应用场景
Netty可以用于构建分布式系统,比如消息队列,网络通信系统,网络游戏,分布式应用程序等。
基本原理
Netty的核心是一个NIO框架,它可以处理不同的网络协议,并将其转发给应用程序层,从而实现网络服务的构建和部署。
Jetty | Netty | Tomcat | Undertow | |
---|---|---|---|---|
核心原理 | 基于Servlet容器 | 基于NIO框架 | 基于Servlet容器 | 基于NIO框架 |
运行环境 | Java Servlet API | Java NIO | Java Servlet API | Java NIO |
运行方式 | 同步阻塞 | 同步非阻塞 | 同步阻塞 | 同步非阻塞 |
适用场景 | 后端Web服务器 | 构建分布式系统 | 后端Web服务器 | 后端Web服务器 |
Servlet
Servlet 是一种运行在 Web 服务器上的 Java 小程序,它主要负责处理客户端发出的 HTTP 请求,并且生成响应给客户端的结果,Servlet 把客户端发出的请求
(可能是一个 HTML 表单)作为输入,并产生一个动态的 Web 页面作为输出,它主要用于动态地交互式地生成内容,而不是生成一个静态的 HTML 页面,Servlet
的核心是Java API(应用程序编程接口),它主要包括了以下几个核心的包:
- servlet:Servlet 核心的接口,它定义了 Servlet 的生命周期,由容器调用;
- servlet-api:Servlet 接口的实现;
- javax.servlet.http:定义用于处理 HTTP 请求和响应信息的接口;
- javax.servlet.jsp:定义用于处理 JSP 文件的接口;
- servlet-context:定义用于访问 Web 应用程序上下文的接口;
- servlet-config:定义用于访问 Servlet 配置信息的接口。