什么是Java核心在2016年创建HTTP连接的官方方式?

Ali*_*aka 8 java http httpurlconnection

我正在研究HttpURLConnection,自JDK 1.1,1997(现在差不多20年)以来存在,并且我非常惊讶它仍然是Java核心创建HTTP连接的官方方式.

自从它发布以来,许多库试图简化(/升级)HTTP连接的使用,比如Apache的HttpClient.

其他库试图简化REST HTTP调用,比如Jersey.

据我所知,没有HttpURLConnection向JDK添加包装器.

仍然是HttpURLConnection Java核心创建HTTP连接的官方方式吗?

如果没有,官方的方式是什么?

cas*_*lin 6

旧的HttpURLConnection是当前在Java SE中执行HTTP请求的标准方法.

Java EE 7带来了JAX-RS客户端API,这是使用基于HTTP协议构建的REST Web服务的标准方法.

将于2017年发布的Java SE 9将带来一个实现HTTP/2和WebSocket的新HTTP客户端API,并可替代旧版API.JEP 110中描述了新API的动机:HttpURLConnection

现有的HttpURLConnectionAPI及其实现存在许多问题:

  • 基础URLConnectionAPI在设计时考虑了多种协议,几乎所有协议现已不存在(ftp,gopher等).
  • API早于HTTP/1.1并且过于抽象.
  • 许多无证行为很难使用.
  • 它仅在阻塞模式下工作(即每个请求/响应一个线程).
  • 这很难维护.


Ste*_*n C 4

是的。HTTPUrlConnection目前是官方方式。(如果“官方”是指“标准 Java 类库支持的方式”。)

\n\n

许多人/团体尝试提出执行客户端 HTTP 的替代方法,并取得了不同程度的成功。然而,旧的(“官方”)方式仍然有效,并且在很多情况下它工作得足够好,不需要替代方案。

\n\n

Java 具有很强的保持向后兼容性的文化。如果某个功能有效,就不要管它。即使是无法正常工作的功能通常也被标记为“已弃用” 1如果无法以向后兼容的方式修复,这是有充分理由的。Oracle 通过支持合同和专业产品在 Java 上赚钱。他们的主要客户是企业计算人员。企业计算人员希望他们 20 年前编写的应用程序能够继续工作……而不需要不断地修补来处理平台(即 Java)更新时出现的问题。

\n\n

有关 Java 9(明年)中的详细信息,请参阅 @C\xc3\xa1ssio\ 的回答。

\n\n

1 - 有些 Java API 在 JDK 1.1 中已弃用……但仍然受支持。

\n