Jetty 9.3庆祝20周年生日快乐,并增加HTTP/2支持

2023-10-07 01:38

本文主要是介绍Jetty 9.3庆祝20周年生日快乐,并增加HTTP/2支持,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2015/06/Building-Distributed-Systems

今年6月12日,Jetty项目发布了旗舰性开源嵌入式应用服务器的9.3版,同时这一天也是该项目的20周年纪念日。此次发布的主要特性包括增加了对HTTP/2服务端(与客户端)支持、系统最低要求Java 8,以及更多的NIO集成与完全重构的调度器。此外,该版本还移除了SPDY网络支持、并修复了自Jetty 9.2.x以来的400多个Bug。

Jetty的主开发者Greg Wilkins撰写了一篇博文,谈到了Jetty对HTTP/2的支持。在文章中,他介绍了如何在Jetty启动命令中轻松启用HTTP/2支持。

$ java -jar $JETTY_HOME/start.jar --add-to-startd=http2,http2c

上述命令并不会创建或是开启新的连接器/端口,只是向端口8080与8443的既有连接器上增加了HTTP/2协议。大多数现代浏览器的最新版本都提供了对HTTP/2的支持。请访问http://caniuse.com/#feat=http2了解各个浏览器对HTTP/2的支持情况。

InfoQ有幸采访到了Greg Wilkins,请他谈谈Jetty这20年的发展历程。

InfoQ:恭喜你,Greg,我敢打赌你从来没有想到Jetty竟然能发展到今天,20年的历程。

事实上,我一开始只是将其作为我所开发的一个问题追踪Web应用中的一个模块而已,从来没有想过有人会对它产生兴趣。但结果却是很多人都开始使用Jetty,同时该HTTP服务器也成为了我主要的工作方向(要不我肯定还在开发那个问题追踪应用,也许后来成为Atlassian也不一定呢【译者注:Atlassian是知名的协作工具Confluence与JIRA的开发公司】)。

在过去的10到15年间,我期望Web服务器能够成为像日常用品一样的东西,无论人们选择哪个服务器都不会有什么不同。但事实却并非如此:JVM发生了变化、标准发生了变化、优化服务器的方式发生了变化、开发Web应用的方式也发生了变化。因此,为了适应这些变化,Jetty也总是需要不断变化,而各个容器的变化则是不同的。

InfoQ:紧跟所有最新的标准与需求如WebSockets和HTTP/2是件非常有挑战的事情。能否向大家介绍一下你探索并实现这些需求的过程么?

成为JCP与IETF专家组成员让我们能够始终走在标准发展的最前沿,我们认为有时我们在引领标准,有时也在跟随标准。不过,我认为最棒的创新还是来自于真实用户的真实需求,作为广泛多样的开源社区的一部分是寻找到这些需求的关键所在:异步Servlets就源自ActiveMQ的一个特性需求;WebSockets之所以能引起我们的注意,原因在于Dojo中的cometd;我们现在正在调研反应式Stream APIs,因为很多用户对此都非常感兴趣。

InfoQ:微服务部署量的持续增加对Jetty的使用产生了何种影响?

Jetty当然也适用于微服务,不过我希望微服务能促进Jetty的发展(在真正的开源项目中这是很难的)。不过到目前为止,微服务并未驱动Jetty发生任何重要的改变,我希望这是因为我们的设计目标是针对简单的嵌入式用途,而微服务在这个领域中并没有什么新东西。

InfoQ:在应用服务器市场有很多竞争者,特别是开源领域的Tomcat。那么Jetty是怎样做到如此成功的呢?

我们并未感受到应用服务器市场的竞争,因为我们并不想与完整的EE,甚至是提供Web Profile的对手竞争。当然了,Jetty可以用于EE部署,不过我们深信面向组件的开发,不理解为何你的HTTP协议提供者应该负责持久化业务Beans、管理事务或是生成内容。有很多其他组件可以完成这些事情,我们只专注在自己擅长的领域上:为HTTP、HTTP2、WebSocket、FCGI等提供可伸缩的协议实现,让用户为应用的其他部分选择合适的组件。我们还可以确保的是,我们对其他项目也有很好的把控,因此将CDI、JSF、JMS、ETC等集成到Jetty中是非常直接且高效的。

如果说有什么区别的话,我们觉得专注在可伸缩的异步微服务的轻量级HTTP服务器是我们真正面对的竞争对手。这个领域有一些创新空间,我们希望能够支持他们所期望的语义,同时依然提供Servlet API。因此,我们一方面提供了类似的、可伸缩的、灵活的异步HTTP,同时在需要时又提供了对Servlet API的完全访问。

这种灵活的做法在市场上很有吸引力,看看使用Jetty的那些大公司吧,Google、Yahoo、Facebook、Salesforce、LinkedIn等,他们彼此之间的用法都不同,但没有一家公司像以前那种使用EE的。

InfoQ:计划何时发布兼容于Servlet 4.0的版本呢?

Jetty 10将会支持Servlet 4.0。不过,我们还不确定4.0中到底会有哪些东西,这个过程将会持续很长时间。因此,现在还没有具体的时间规划,到底加入什么特性目前也是不明朗的。

InfoQ:不久的将来,Jetty将会增加哪些特性?

尚不确定。我们有一些想法:反应式流、增强的CDI集成、Websocket over HTTP2、Quic等。我们已经开始着手对其中一些特性进行试验了,不过还需要真实的用户需求,接下来才能将这些大概的想法形成计划。

Webtide提供了对Jetty的支持。事实上,Professional Services站点就是个HTTP/2的测试床。

查看英文原文:Jetty 9.3 Celebrates 20th Anniversary, adds HTTP/2 Support

这篇关于Jetty 9.3庆祝20周年生日快乐,并增加HTTP/2支持的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/155240

相关文章

定价129元!支持双频 Wi-Fi 5的华为AX1路由器发布

《定价129元!支持双频Wi-Fi5的华为AX1路由器发布》华为上周推出了其最新的入门级Wi-Fi5路由器——华为路由AX1,建议零售价129元,这款路由器配置如何?详细请看下文介... 华为 Wi-Fi 5 路由 AX1 已正式开售,新品支持双频 1200 兆、配有四个千兆网口、提供可视化智能诊断功能,建

详解Java如何向http/https接口发出请求

《详解Java如何向http/https接口发出请求》这篇文章主要为大家详细介绍了Java如何实现向http/https接口发出请求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用Java发送web请求所用到的包都在java.net下,在具体使用时可以用如下代码,你可以把它封装成一

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

Python如何实现 HTTP echo 服务器

《Python如何实现HTTPecho服务器》本文介绍了如何使用Python实现一个简单的HTTPecho服务器,该服务器支持GET和POST请求,并返回JSON格式的响应,GET请求返回请求路... 一个用来做测试的简单的 HTTP echo 服务器。from http.server import HT

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

如何确定 Go 语言中 HTTP 连接池的最佳参数?

确定 Go 语言中 HTTP 连接池的最佳参数可以通过以下几种方式: 一、分析应用场景和需求 并发请求量: 确定应用程序在特定时间段内可能同时发起的 HTTP 请求数量。如果并发请求量很高,需要设置较大的连接池参数以满足需求。例如,对于一个高并发的 Web 服务,可能同时有数百个请求在处理,此时需要较大的连接池大小。可以通过压力测试工具模拟高并发场景,观察系统在不同并发请求下的性能表现,从而