java11协议_Java 11新特性:HTTP Client API正式发布

HTTP Client API在Java 9被引入,在Java 10进行了更新,不过一直处于孵化状态,在此次Java 11中获得正式发布,包名由jdk.incubator.http改为java.net.http。HTTP Client API实现了HTTP(1.1和2)和WebSocket,用来取代遗留的java.net.HttpURLConnection。该API用来在Java程序中作为客户端请求HTTP服务,Java中服务端HTTP的支持由Servlet实现。

现有的HttpURLConnection API存在许多问题:

基本的URLConnection被设计为支持多种协议,很多协议已经过时不用了。该API早于HTTP/1.1发布,而且过于抽象。使用困难,包含很多没有文档说明的行为。只支持阻塞模式。维护困难。

除了HttpURLConnection,还有一些其他的HTTP客户端API和实现类库,比如Apache的HttpComponents(HttpClient)和Jetty等等,但是它们过于重量了,而且没有利用新的Java语言特性如Lambda表达式。

HTTP Client API内部实现上,通过java.util.concurrent.CompletableFuture来支持非阻塞请求和响应,由Java平台的响应式流(Reactive Streams)支持java.util.concurrent.Flow API来实现请求和响应的背压(back-pressure)和流量控制(flow-control)。利用响应式流RX Flow的概念,避免了为支持HTTP/2而创造过多概念。

HTTP Client API的主要类包括:

java.net.http.HttpClientjava.net.http.HttpRequestjava.net.http.HttpResponsejava.net.http.WebSocket

HTTP Client API特性:

对大多数场景提供简单易用的阻塞模型。通过异步机制支持事件通知。完整支持HTTP协议的特性。易于建立WebSocket握手。支持HTTP/2,包括协议升级(Upgrade)和服务端推送(server push)。支持 HTTPS/TLS。和现有的其他实现类库相比,性能相当或有提升,内存占用少。

2f9835aa68b21081f8b9453acbd2eb9f.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值