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支持经过了多年的开发。

➡️

继续阅读