Interview mit Simone Bordet

„HTTP/2 wird in JDK 9 mittels zwei spezifischer JEPs unterstützt“

Redaktion JAXenter

Simone Bordet

Nach dem überwältigenden Erfolg von HTTP/1 kann mit Recht angenommen werden, dass HTTP/2 das nächste große Ding im Web sein wird. Wir sprachen mit JAX 2016 Speaker Simone Bordet darüber, was uns in HTTP/2 erwartet. Neben dem Status der Spezifikationen standen die neuen Features und die Vorteile für Webseiten im Fokus.

JAXenter: Ist HTTP/2 das nächste große Ding im Web?

Simone Bordet: HTTP/2 ist sicherlich im Bereich der Webprotokolle das nächste große Ding im Netz. Das Design des Protokolls wird den Ansprüchen aktueller Webapplikationen gerecht – 20 Jahre nach dem Erscheinen von HTTP/1 war dieses Update mehr als notwendig. Das Web hat sich in den letzten 20 Jahren enorm weiterentwickelt. Wir brauchten ein neues Protokoll, das auf die heutigen Ansprüche zugeschnitten ist  – und nicht auf die von vor 20 Jahren.

Das Hauptproblem von HTTP/1 ist die limitierte Anzahl von Anfragen, die gleichzeitig getätigt werden können.

JAXenter: Welche neuen Features bietet HTTP/2 im Vergleich zur Vorgängerversion?

Simone Bordet: Im Vergleich zu HTTP/1 sind die beiden wichtigsten Features von HTTP/2 das Multiplexing und der Ressource-Push. Weitere wichtige Neuerungen sind die HTTP-Header-Kompression, die Priorisierung von Ressourcen und das Löschen von Anfragen. Die beiden ersten Eigenschaften lassen HTTP/2-Seiten aber erst wirklich in Glanz erstrahlen.

JAXenter: Wie profitieren Webseiten von HTTP/2?

Simone Bordet: Das Hauptproblem von HTTP/1 ist die limitierte Anzahl von Anfragen, die gleichzeitig getätigt werden können – typischerweise ist die Anzahl auf sechs begrenzt. Heutzutage werden aber 20-100+ Anfragen benötigt, um eine einzelne Seite zu rendern.

Ein Beispiel: Stell dir vor, du tätigst 60 Anfragen über sechs Verbindungen, um eine Seite zu rendern; mit HTTP/1 benötigst du zehn Roundtrips, um alle Ressourcen abzurufen. Dank Multiplexing (HTTP/2) können diese 60 Anfragen nun direkt gesendet werden. Es wird also bloß ein Roundtrip benötigt. Das bedeutet, dass die Roundtrip-Latenz – eine der Hauptursachen für einen langsamen Seitenaufbau – um den Faktor zehn gesenkt wird: ein beeindruckendes Ergebnis.

In der Realität sieht die Sache jedoch oftmals anders aus. Allerdings reicht die Performancesteigerung durch das HTTP/2-Multiplexing meistens schon aus, damit eine Webseite schneller lädt. Online-Beispiele wie https://http2.akamai.com/demo und https://http2.golang.org/gophertiles zeigen, welche Fortschritte HTTP/2 im Gegensatz zu HTTP/1 gemacht hat. Außerdem belegen verschiedene Studien, dass flottere Ladezeiten die User Experience verbessern und zu niedrigeren Bounce-Raten und höheren Page-Views führen. Das wiederum wirkt sich positiv auf die Geschäftsumsätze aus – es ist also nicht nur ein technisches Detail!

Viele sogenannte „Best Practices“ wie Domain-Sharding, Resource-Inlining und Image-Spriting sind eigentlich nur komplexe Abhilfemaßnahmen, um die Einschränkungen von HTTP/1 zu umgehen. Die Webentwicklung wird leichter und schneller, da HTTP/2 diese Workarounds obsolet macht.

HTTP/2 ist also bereits hier! Es muss nur die Infrastruktur geupdatet werden, um in den Genuss der Vorteile zu kommen.

JAXenter: Was wird benötigt, um HTTP/2-Applikationen in Java zu schreiben?

Simone Bordet: Entwickler müssen eigentlich nichts machen; und das ist gut so! Servlet-Container können bereits in HTTP/2 konfiguriert werden und existierende Web-Applikationen ohne eine einzige Änderung deployen. Jetty war der erste Servlet-Container, der HTTP/2 implementiert hat. Mittlerweile deployt Jetty seit über einem Jahr Web-Applikationen mithilfe von HTTP/2.

Deployer sollten sich darüber im Klaren sein, dass HTTP/2-Webseiten HTTPS voraussetzen und daher eine Public-Key-Infrastructure vonnöten ist. Erfreulicherweise stellen Public-Key-Infrastructure-Anbieter wie Let’s Encrypt bereits kostenlose Zertifikate und Tools zur automatisierten Zertifikatserneuerung bereit.

HTTP/2 ist also bereits hier! Es muss nur die Infrastruktur geupdatet werden, um in den Genuss der Vorteile zu kommen. Projekte wie Jetty bieten bereits Client- und Server-Libraries, die benutzt werden können, um HTTP/2-Applikationen jeglicher Art zu schreiben.

JAXenter: Gibt es Pläne für einen Support von HTTP/2 in JDK 9?

Simone Bordet: JDK 9 wird HTTP/2 mittels zwei spezifischer JEPs unterstützen. JEP 244 soll es möglich machen, ALPN zu bedienen. ALPN ist eine TLS-Extension, die benötigt wird, damit HTTP/2 über eine TLS-Verbindung kommunizieren kann. Eine Voraussetzung, die fundamental für den HTTP/2-Support ist. ALPN ist bereits für JDK 8 (auf Initiative des Jetty-Projekts) via externer Libraries verfügbar. Ein Build-in-Support für JDK 9 wird es hingegen möglich machen, von den Standard-APIs zu profitieren.

JEP 110 wird zudem eine HTTP/2-kompatible Standard-HTTP-Client-API bieten. Dieser Schritt wird es Entwicklern ermöglichen, HTTP/2-Client-Fähigkeiten in JDK 9 einzubauen.

Vielen Dank für das Gespräch!

Screen-Shot-2016-04-29-at-11.01.10-AMSimone Bordet ist ein Jetty-Committer und CometD-Projektleiter. Außerdem arbeitet er als Lead Architect bei Webtide. Als aktiver Open-Source-Entwickler gründete und unterstützte er verschiedene Open-Source-Projekte wie Jetty, CometD, MX4J, Foxtrot oder Livetribe. Simone war technischer Speaker für eine Vielzahl von nationalen und internationalen Konferenzen wie beispielsweise Devoxx, JavaOne oder CodeMotion. Darüber hinaus ist er Co-Lead der Java User Group von Torino, Italien. Simones Spezialgebiete sind: serverseitiges Multi-Thread-Development, J2EE-Applikation-Entwicklung, Web-Entwicklung (Comet-Technologien), Web-Netzwerk-Protokolle (HTTP, WebSocket, SPDY, HTPP/2) und High-Performance-JVM-Tuning.
Geschrieben von
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: