Jetty
总的来说,Jetty是一个Servlet container,可以看做是Tomcat的替代品。
与 Tomcat 的比较
Tomcat 和 Jetty 都是作为一个 Servlet 引擎应用的比较广泛,可以将它们比作为中国与美国的关系,虽然 Jetty 正常成长为一个优秀的 Servlet 引擎,但是目前的 Tomcat 的地位仍然难以撼动。相比较来看,它们都有各自的优点与缺点。
Tomcat 经过长时间的发展,它已经广泛的被市场接受和认可,相对 Jetty 来说 Tomcat 还是比较稳定和成熟,尤其在企业级应用方面,Tomcat 仍然是第一选择。但是随着 Jetty 的发展,Jetty 的市场份额也在不断提高,至于原因就要归功与 Jetty 的很多优点了,而这些优点也是因为 Jetty 在技术上的优势体现出来的。
Jetty Vs Tomcat
Tomcat作为第一款成功的Web容器,具有广大的用户群体。从表面功能上Jetty和Tomcat都是差不多的,都提供Http Server和Servlet容器功能,下面我们从几个方面比较两者的差异:
从构架方面
Tomcat主要是作为JSP/Servlet最新规范的参考实现而设计,属于学院派,但是显得庞大而杂乱。最常见的Tomcat使用方式是将其作为一个服务器软件安装到操作系统上,然后在里面部署web应用,如果嵌入到其他JEE服务器中以提供Web容器功能或者作为组件嵌入到其他应用中,操作起来比较麻烦。
Jetty是由多个可以独立运行的构件通过彼此之间可插拔的接口组装在一起,其使用可以非常灵活。目前,Jetty在Geronimo、JBoss、Sybase EAServer、JOnAS和Glassfish等Java EE应用服务器中提供Web容器功能。
从性能方面
Tomcat在耗时请求连接数量不多时,也就是大多数请求能非常短的时间处理完毕的情况下,具有较好的执行效率。
Jetty 在存在大量并发连接,大多数连接又需要更多的处理时间(业务逻辑计算占用的时间)的情况下(这种情况是目前大多数web应用具有的特点),具有更好的性能和伸缩性。Jetty的这个优势得益于Continuation机制,这样可以把有限的内存资源更多的留给应用程序使用。在静态文件服务方面,Jetty 也具有更好的性能。这是由于Jetty使用了文件内存映射机制和NIO来对静态内容进行输入输出,这种方式将占用更少的系统内存和更快发送速度。
从标准规范方面
Tomcat曾是sevlet2.4规范的参考实现,从Servlet2.5之后,Tomcat不再是参考实现了,Sun公司自己创建了Glassfish,并作为Servlet2.5、Servlet3.0、Jsp2.1的参考实现。
Jetty在执行规范方面做的非常好,是Servlet2.5规范的一个优秀实现。在Servlet3.0中,Jetty自有的continuation机制也成为规范备选方案之一。
Reference
- Jetty 的工作原理以及与 Tomcat 的比较 - https://www.ibm.com/developerworks/cn/java/j-lo-jetty/index.html