Jetty 是一个开源的
servlet容器,它为基于
Java的
web容器,例如
JSP和servlet提供
运行环境。Jetty是使用
Java语言编写的,它的
API以一组
JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。
特性
易用性
易用性是 Jetty
设计的基本原则,易用性主要体现在以下几个方面:
通过 XML 或者
API 来对Jetty进行配置;默认配置可以满足大部分的需求;将 Jetty 嵌入到
应用程序当中只需要非常少的代码;
可扩展性
在使用了 Ajax 的 Web 2.0 的应用程序中,每个连接需要保持更长的时间,这样
线程和内存的
消耗量会急剧的增加。这就使得我们担心整个程序会因为单个组件陷入瓶颈而影响整个程序的性能。但是有了 Jetty:
即使在有大量服务请求的情况下,系统的性能也能保持在一个可以接受的状态。利用 Continuation 机制来处理大量的用户请求以及时间比较长的连接。 另外 Jetty 设计了非常良好的接口,因此在 Jetty 的某种实现无法满足用户的需要时,用户可以非常方便地对 Jetty 的某些实现进行修改,使得 Jetty 适用于特殊的应用程序的需求。
易嵌入性
Jetty 设计之初就是作为一个优秀的组件来设计的,这也就意味着 Jetty 可以非常容易的嵌入到应用程序当中而不需要程序为了使用 Jetty 做修改。从某种程度上,你也可以把 Jetty 理解为一个嵌入式的Web服务器。
Jetty 可以作为嵌入式服务器使用,Jetty的
运行速度较快,而且是轻量级的,可以在Java中可以从
test case中控制其运行。从而可以使自动化测试不再依赖外部环境,顺利实现自动化测试。
和Tomcat比较
原文地址:Jetty和Tomcat的选择:按场景而定
1、Jetty更轻量级。这是相对Tomcat而言的。
由于Tomcat除了遵循Java Servlet规范之外,自身还扩展了大量J2EE特性以满足企业级应用的需求,所以Tomcat是较重量级的,而且配置较Jetty亦复杂许多。但对于大量普通互联网应用而言,并不需要用到Tomcat其他高级特性,所以在这种情况下,使用Tomcat是很浪费资源的。这种劣势放在分布式环境下,更是明显。换成Jetty,每个
应用服务器省下那几兆内存,对于大的分布式环境则是节省大量资源。而且,Jetty的
轻量级也使其在处理
高并发细粒度请求的场景下显得更快速高效。
2、Jetty更灵活,体现在其可插拔性和
可扩展性,更易于开发者对Jetty本身进行
二次开发,定制一个适合自身需求的Web Server。
相比之下,重量级的Tomcat原本便支持过多特性,要对其瘦身的成本
远大于丰富Jetty的成本。用自己的理解,即增肥容易减肥难。
3、然而,当支持大
规模企业级应用时,Jetty也许便需要扩展,在这场景下Tomcat便是更优的。
总结:Jetty更满足公有云的分布式环境的需求,而Tomcat更符合企业级环境。
代码实例
作为嵌入式服务器使用代码实例
Java代码
需要的jar包:
commons-logging.jar
javax.servlet.jar
org.mortbay.jmx.jar
jetty还有对应maven插件
然后直接通过mvn jetty:run命令就能
直接启动-----------------------------------------------------------------------------------------
注:
在maven中,用
plugin的方式使用jetty,需要改动maven的setting.xml文件,才可以使用命令mvn jetty:run.
即可。
版本发布
2014年02月13日,Jetty 9.1.2 发布
2014年05月6日,Jetty 9.1.5 发布
2014年6月6日,Jetty 9.2.0发布
2018年8月6日,Jetty 9.2.26发布
2018年8月30 ,Jetty 9.4.12发布