JDK 26中的HTTP/3支持
💡
原文英文,约2900词,阅读约需11分钟。
📝
内容提要
JDK 26新增HttpClient对HTTP/3的支持,基于UDP和QUIC协议。开发者可通过设置HttpClient或HttpRequest的版本启用HTTP/3,若连接失败,HttpClient会自动降级到HTTP/2或HTTP/1.1。此功能经过多年开发,现已在JDK 26早期版本中可用。
🎯
关键要点
- JDK 26新增HttpClient对HTTP/3的支持,基于UDP和QUIC协议。
- HTTP/3与HTTP/2在功能上没有太大区别,主要区别在于传输协议,HTTP/2使用TCP,而HTTP/3使用UDP。
- 开发者可以通过设置HttpClient或HttpRequest的版本来启用HTTP/3。
- 如果HTTP/3连接失败,HttpClient会自动降级到HTTP/2或HTTP/1.1。
- HttpClient API自JDK 11以来一直存在,JDK 26引入了HTTP/3的支持。
- HttpClient默认使用HTTP/2作为请求的首选版本,可以通过设置来覆盖这一行为。
- HTTP/3的使用需要在HttpClient或HttpRequest实例中设置为首选版本。
- HttpClient在尝试建立UDP连接时,如果失败会自动降级到HTTP/2或HTTP/1.1。
- 设置HTTP/3为首选版本并不保证请求会使用HTTP/3,HttpClient会根据服务器的支持情况决定使用的协议版本。
- HttpClient可以通过HTTP响应头中的alt-svc字段来学习服务器是否支持HTTP/3。
- JDK 26的HTTP/3支持经过多年的开发,现已在早期版本中可用,开发者可以进行测试并反馈问题。
❓
延伸问答
JDK 26中HTTP/3的支持是基于什么协议的?
JDK 26中HTTP/3的支持是基于UDP和QUIC协议的。
如何在HttpClient中启用HTTP/3?
可以通过设置HttpClient或HttpRequest的版本为HTTP/3来启用HTTP/3。
如果HTTP/3连接失败,HttpClient会怎么处理?
如果HTTP/3连接失败,HttpClient会自动降级到HTTP/2或HTTP/1.1。
HTTP/3与HTTP/2的主要区别是什么?
HTTP/3与HTTP/2的主要区别在于传输协议,HTTP/2使用TCP,而HTTP/3使用UDP。
HttpClient如何学习服务器是否支持HTTP/3?
HttpClient可以通过HTTP响应头中的alt-svc字段来学习服务器是否支持HTTP/3。
JDK 26的HTTP/3支持经过了多少年的开发?
JDK 26的HTTP/3支持经过了多年的开发。
➡️