Was ist die offizielle Methode von Java Core, um eine HTTP-Verbindung in 2016 zu erstellen?

8

Ich schaue mir HttpURLConnection an, die seither existieren JDK 1.1 , 1997 (fast 20 Jahre jetzt), und ich bin ziemlich erstaunt, dass es immer noch Java Core's ist offizielle Möglichkeit, HTTP-Verbindungen zu erstellen.

Seit der Veröffentlichung haben viele Bibliotheken versucht, die Verwendung von HTTP-Verbindungen zu vereinfachen (/ upgraden), wie z. B. Apache HttpClient .

Andere Bibliotheken versuchten REST HTTP-Aufrufe wie Jersey .

Soweit ich finden konnte, wurde kein Wrapper von HttpURLConnection zum JDK hinzugefügt.

Ist HttpURLConnection immer noch die offizielle Möglichkeit von Java Core, eine HTTP-Verbindung zu erstellen?

Wenn nicht, Wie lautet der offizielle Weg?

    
AlikElzin-kilaka 19.05.2016, 07:42
quelle

2 Antworten

6

Das alte HttpURLConnection ist derzeit der Standardweg Führen Sie HTTP-Anforderungen in Java SE aus.

Java EE 7 brachte die JAX-RS Client API , das ist die Standardmethode, REST-Webdienste zu nutzen, die auf dem HTTP-Protokoll basieren.

Und Java SE 9, das im Jahr 2017 veröffentlicht wird, bringt ein neue HTTP-Client-API , die HTTP / 2 und WebSocket , und kann die Legacy HttpURLConnection API. Die Motivation für eine neue API ist im JEP 110 beschrieben:

  

Die bestehende HttpURLConnection API und ihre Implementierung haben zahlreiche Probleme:

     
  • Die Basis URLConnection API wurde mit mehreren Protokollen entwickelt, von denen fast alle nicht mehr existieren (ftp, gopher, etc.).
  •   
  • Die API ist älter als HTTP / 1.1 und ist zu abstrakt.
  •   
  • Es ist schwer zu verwenden, mit vielen undokumentierten Verhaltensweisen.
  •   
  • Es funktioniert nur im Blockierungsmodus (d. h. ein Thread pro Anfrage / Antwort).
  •   
  • Es ist sehr schwer zu pflegen.
  •   
    
Cassio Mazzochi Molin 19.05.2016 08:08
quelle
4

Ja. HTTPUrlConnection ist derzeit der offizielle Weg. (Wenn Sie mit "offiziell" meinen, "die Art, die von den Standard-Java-Klassenbibliotheken unterstützt wird").

Viele Leute / Gruppen haben versucht, alternative Wege zu finden, clientseitige HTTP mit unterschiedlichem Erfolg durchzuführen. Der alte ("offizielle") Weg funktioniert jedoch immer noch, und in vielen Fällen funktioniert es gut genug, dass es keine Alternative gibt.

Java hat eine starke Kultur der Aufrechterhaltung der Abwärtskompatibilität. Wenn ein Feature funktioniert, bleibt es in Ruhe. Selbst Features, die nicht ordnungsgemäß funktionieren, werden in der Regel als "veraltet" 1 markiert, wenn sie nicht rückwärtskompatibel behoben werden können. Dafür gibt es einen guten Grund. Oracle verdient mit Support-Verträgen und speziellen Produkten an Java. Ihre Hauptkunden sind Enterprise-Computing-Leute. Unternehmens-Computing-Leute wollen, dass die Anwendungen, die sie vor 20 Jahren geschrieben haben, weiter funktionieren ... ohne ständig zu basteln, um mit Dingen fertig zu werden, die kaputt gehen, wenn die Plattform (d. H. Java) aktualisiert wird.

Siehe @ Cássios Antwort für Details zu dem, was in Java 9 (nächstes Jahr) kommen wird.

1 - Es gibt Java-APIs, die in JDK 1.1 ... veraltet waren und noch immer unterstützt werden.

    
Stephen C 19.05.2016 08:04
quelle

Tags und Links