Blog

Alle Beiträge von Jan Weinschenker

Fast Internet

Spring-Boot-Service mit HTTP/2

Bild: Designed by starline / Freepik

Im vorigen Artikel wurde gezeigt, wie wir einen Spring-Boot-Service für das unverschlüsselte http/2-Cleartext (h2) aufsetzen. Jetzt wird es darum gehen, einen Service mit echtem http/2 aufzusetzen.

Echt heißt in diesem Fall, inklusive der obligatorischen Verschlüsselung des Datenverkehrs mit TLS bzw. SSL.

Dafür muss etwas mehr Aufwand betrieben werden. Dieser Artikel erklärt, was im Einzelnen zu tun ist.

weiterlesen

Java 8 Stream API

Java Stream Debugger für IDEA

Die Java 8 Streams haben den Umgang mit Collections grundlegend verändert. Statt den Inhalt von Collections mit for- oder while-Schleifen zu bearbeiten, erlauben die Streams eine Aneinanderkettung von Operationen, die über die Elemente der Collection ausgeführt werden. Das Debuggen solcher Implementierungen ist mit dem Java Stream Debugger Plugin für IDEA eine sehr einfache Geschichte. Dieser Artikel zeigt ein kurzes Beispiel.

weiterlesen

Software-Enthusiasten

Wir brauchen Software-Enthusiasten!

Software-Architektur

Software-Architektur

Holisticon ist eine IT-Beratung. Wir leben davon, dass wir alle herausragende Kenntnisse im Entwickeln von Software haben. Wir sind Software-Enthusiasten. Und wir sind immer auf der Suche nach neuen Kolleginnen und Kollegen, die unser Team bereichern und verstärken können. Wir versuchen in diesem Artikel zu erklären, warum es toll ist, bei uns zu arbeiten.

weiterlesen

HTTP/2 vs. HTTP/1.1

Spring-Boot-Service mit HTTP/1.1 und HTTP/2 Cleartext

Die Version 2 des HTTP-Protokolls ist eigentlich dafür gedacht, nur mit SSL- bzw. TLS-Verschlüsselung verwendet zu werden. Dennoch ist es möglich, und für Testzwecke unter Umständen auch sinnvoll, die Variante h2c (HTTP/2 Cleartext) zu verwenden. Dabei findet keine Verschlüsselung statt. Kein Webbrowser und nur wenige Webserver unterstützen so etwas.

Der Java-basierte Webserver Jetty jedoch schon. Damit ist es möglich, eine kleine, auf Spring Boot basierende Beispiel-Anwendung zu bauen, um ein wenig mit h2c und HTTP-Protokoll-Upgrades herumzuspielen.
weiterlesen

iX Developer – Java 2017: Was Java-Entwickler wissen müssen!

HTTP/2 – iX DEVELOPER „Java 9 / Java EE8“

Mein Artikel über den HTTP/2-Client, der es fast ins neue Java 9 geschafft hätte, erscheint am 4. Juli 2017. Oder ab sofort online.

Dieses iX DEVELOPER Sonderheft mit dem Titel Java 2017: Was Java-Entwickler wissen müssen! widmet sich den Neuerungen der neuen Java-Version. Neben dem Modulsystem, das den Namen Jigsaw trägt, bringt „die 9er“ u.a. ein neues Kommandozeilen-Tool mit dem Namen jshell und eine neue Process-API.

HTTP/2 und Completable Futures

Der HTTP-Client aus dem JDK hätte (Konjunktiv!) mit der Version 9 ein umfassendes Update bekommen. Darunter waren Features wie die Unterstützung der neuen Protokollversion HTTP/2 und die Implementierung der Completable-Futures-API zur Behandlung asynchroner Ereignisse.

Incubator-Feature

Bedauerlicherweise wurde unter den JDK-9-Entwicklern die Entscheidung getroffen, den neuen HTTP-Client nicht als Teil der finalen API des JDK-9 mit auszuliefern. Er wird stattdessen als Incubator-Feature geliefert (siehe JEP 110).

Leider können sich Incubator-Features jederzeit in API und Umfang ändern und werden nicht für die Nutzung in produktivem Code empfohlen. Sie dienen vielmehr dazu, experimentellen Code frühzeitig in einem gesicherten Rahmen auszuliefern, damit die Entwickler-Community Erfahrungen sammeln kann.

Genau das ist auch die Absicht hinter dem Artikel. Anhand von kurzen Code-Beispielen und Vergleichen mit anderen HTTP/2-Clients (Jetty und OkHttp) soll gezeigt werden, was mit der Implementierung aus dem neuen JDK möglich ist und wie sie sich derzeit „anfühlt“.

Weiterhin diskutiert der Artikel den möglichen Nutzen von HTTP/2 für die Entwicklung von Webservices. Insbesondere die Tatsache, dass HTTP/2 immer auch die Verwendung von HTTPS erfordert, ist beim Einsatz von Web- und Microservices kritisch zu sehen. Hier entsteht ein nicht zu unterschätzender Mehraufwand durch die Verwaltung und Verteilung von SSL- bzw. TLS-Zertifikaten.

Der Artikel enthält eine Reihe von Code-Beispielen, die bei Github und auf der Heft-DVD verfügbar sind.