Enterprise Tales

Web Components API: Mach’s dir nicht so schwer!

Die Enterprise-Welt ist geprägt von webbasierten Formularanwendungen. Wenn man sich dann überlegt, mehrfach in unterschiedlichen Anwendungen die gleichen UI-Komponenten zu verwenden, ist der Einsatz von Framework-agnostischen Web Components als technische Grundlage naheliegend. Web Components ermöglichen eine einfache Wiederverwendung und Integration, doch es lauern auch ein paar Stolpersteine, die es zu vermeiden gilt.

EnterpriseTales Kolumne: Web Components API – Mach’s dir nicht so schwer!

Die Enterprise-Welt ist geprägt von webbasierten Formularanwendungen. Wenn man sich dann überlegt, mehrfach in unterschiedlichen Anwendungen die gleichen UI-Komponenten zu verwenden, ist der Einsatz von Framework-agnostischen Web Components als technische Grundlage naheliegend. Web Components ermöglichen eine einfache Wiederverwendung und Integration, doch es lauern auch ein paar Stolpersteine, die es zu vermeiden gilt.

Spring Boot 2.3, Coding Dojos und digitale Transformation – Unsere Top-Themen der Woche

Allmählich neigt sich die sommerliche Urlaubszeit dem Ende zu und die Suche nach einem leichten Einstieg zurück in den Alltag beginnt. Zum Glück hatte die vergangene Woche einige Artikel im Gepäck, die die Rückkehr versüßen. Hier findet sich vom Überblick über die Neuerungen aus Spring Boot 2.3 über Coding Dojos bis hin zur Studie von New Relic über die digitale Transformation in deutschen Unternehmen für jeden ein geeigneter Artikel. Aber auch unsere Kolumnen, namentlich EnterpriseTales und WomeninTech sorgen für einen guten Start in die neue Woche.

Schicksalsfrage: Muss es immer Java sein?

Als Programmierer versuchen wir Software zu schreiben, um unsere spezifischen Probleme zu lösen. Wo einst maschinennahe Programmiersprachen wie C++ dominierten, erhoben sich Java und dessen Sprachdesign zu einer echten Alternative. Mit der Zeit haben sich jedoch Umwelt und Erfahrung verändert. Neue Sprachen, wie z. B. Kotlin, haben sich dank Google und JetBrains in der breiten Masse etabliert. Doch vor welchen Problemen steht Java heute und wie kann Kotlin überzeugen?

Gecheckt – Architekturüberprüfung in der Pipeline

Eine saubere Architektur zu definieren, ist das eine, sich im Projektalltag auch in stressigen Zeiten daran zu halten, meist eine ganz andere Geschichte. Und wenn es sich dann auch noch um Vorgaben handelt, die nicht direkt den eigenen Service betreffen, sondern seine Kommunikation mit anderen, ist die Motivation, sie einzuhalten, meist noch geringer. Wie kann man also solche Makroarchitekturvorgaben umgehen?

EnterpriseTales: Cloud-Computing is someone else’s computer

Schon lange hören wir von Kunden immer wieder von der Absicht, in die Cloud zu wollen. So viele Befürworter hinter dem Geschäftsmodell stehen, so viele Kritiker stehen ihm gegenüber. Bei Vorfällen hört man dann immer öfter in scherzhaftem Ton, dass Cloud-Computing nur „someone else’s“ Computer sei. Doch ist das tatsächlich noch so? Steckt hinter Cloud-Computing wirklich nur der Computer von jemand anderem, oder hat sich das Geschäftsmodell in den letzten Jahren gewandelt?

Web Components in der Welt der Micro Frontends

Früher bestand eine Webanwendung mehr oder weniger aus nur einer Sammlung von dynamisch erzeugten HTML-Dokumenten, die ggf. mit Ajax Calls und jQuery angereichert wurden. Nahezu die gesamte Komplexität war serverseitig. Erhöhte Anforderungen an Interaktivität haben mittlerweile aber dazu geführt, dass mehr Logik im Client zu finden ist. Single Page Applications (SPAs) sind das Resultat. Durch diese wachsende Logik steigt auch die Komplexität der Anwendungen. Es entstehen Frontend-Monolithen. Eine Wunderwaffe dagegen können Micro Frontends sein. Aber wie gewährleisten wir dann Konsistenz in der gesamten Anwendung und isolieren gleichzeitig die einzelnen Micro Frontends voneinander?

Enterprise Tales: Nur eine Zeile Code …

Eine Annotation, wie z. B. @Transactional, ist während der Entwicklung (in der Regel) nur eine Zeile Code. In Enterprise Java (sei es JEE oder Spring) löst diese eine Zeile Code aber häufig viel Magie aus, die im Hintergrund passiert, wenn das Programm gestartet wird. Welche Auswirkungen hat das aber auf die Entwicklungsperformance? Wie kriegt man es hin, dass der lokale Entwicklungsserver einen Live Reload durchführt, ohne dass man lange Zeit auf das Rekompilieren und Neustarten der Applikation warten muss?

WebAssembly: Die nächsten Schritte

Der WebAssembly-Standard steht in den meisten Browsern zur Verfügung und wird bereits in vielen Webanwendungen verwendet. Die Features und APIs sind aktuell zwar noch vergleichsweise rudimentär, die geplanten Erweiterungen der Spezifikation aber vielversprechend. Zudem gibt es einen Standardisierungsvorschlag, der die Verwendung von WebAssembly außerhalb des Browsers ermöglicht. Zeit für einen Ausblick.

EnterpriseTales: Die Cloud als Allheilmittel

Die Cloud ist nach wie vor eines der großen Hypethemen. Versprechungen werden gemacht und Hoffnungen geschürt. Doch welche davon löst die Cloud ein? Auch wenn der Begriff der Cloud schon länger verwendet wird, ist die Abgrenzung zwischen den verschiedenen Varianten nicht immer eindeutig. Für diese Kolumne unterscheide ich sie in die nachfolgenden Abschnitte.

Kolumne: EnterpriseTales – Die Cloud als Allheilmittel

Die Cloud ist nach wie vor eines der großen Hypethemen. Versprechungen werden gemacht und Hoffnungen geschürt. Doch welche davon löst die Cloud ein? Auch wenn der Begriff der Cloud schon länger verwendet wird, ist die Abgrenzung zwischen den verschiedenen Varianten nicht immer eindeutig. Für diese Kolumne unterscheide ich sie in die nachfolgenden Abschnitte.

EnterpriseTales: Wenn der Client das API spezifiziert

Wie teste ich eigentlich das Zusammenspiel in meiner Microservices-Landschaft? Wie stelle ich sicher, dass jeweils die richtige Version eines Service auf der richtigen Stage deployt ist? Wie behalte ich die Abhängigkeiten meiner Microservices im Blick? Und wie stelle ich bei der Weiterentwicklung meiner APIs sicher, dass alle Clients weiterhin funktionieren? Wie kann ich sicher sein, dass eine alte Version einer Schnittstelle nicht mehr benötigt wird und deshalb entfernt werden kann? Consumer-driven Contracts versprechen eine Lösung für alle diese Fragen, kommen aber mit einer erheblichen Komplexität und haben ihrerseits Grenzen.

EnterpriseTales: Microframeworks to the Rescue

Enterprise Java scheint mit seinem Memory- und Runtime-Overhead in Zeiten von Cloud-native und Serverless nicht wirklich gut für die Zukunft gerüstet zu sein. Erschwerend kommt hinzu, dass viele Enterprise Frameworks mit Annotation Scanning, Aufbau von Proxies und Caches das Start- und Speicherverhalten weiter negativ beeinflussen. Bedeutet dies das Aus für Java in der Wunderwelt der Cloud? Mitnichten. Microframeworks to the Rescue!

EnterpriseTales: Was ein „modernes“ Web-Frontend bedeutet

Der Entscheidungsprozess bei Web-Frontends ist häufig Framework-getrieben und betrachtet die architektonischen Implikationen nur am Rande. So ist es heute schon fast selbstverständlich, dass Webanwendungen als clientseitig gerenderte Single Page Applications (SPA) entwickelt werden. Die allgemeine Definition eines „modernen“ Frontends ist dabei nicht selten unmittelbar an die Auswahl eines konkreten Frameworks gebunden. Die Zeiten der eher klassischen, rein serverseitig getriebenen Ansätze (z. B. JSF) scheinen vorbei zu sein.

EnterpriseTales: Reaktiv bis zur Datenbank

Für Reactive Programming gibt es in Java mittlerweile viele Frameworks. Aber wie greife ich dann auf eine relationale Datenbank zu? Der Java-Standard zum Zugriff auf relationale Datenbanken, JDBC, unterstützt bisher nur blockierende Aufrufe. Welche Möglichkeiten gibt es aber dann, wenn man ganz auf Reactive Programming setzt?

Enterprise Tales: Ein Blick auf Web Components

Im Web haben sich komponentenbasierte UI-Frameworks durchgesetzt. Alle heute relevanten Single Page Application Frameworks setzen vollständig oder mindestens zu großen Teilen auf dieses Paradigma. Mit Web Components existiert ein vielversprechender Standard, der die Erstellung Framework-unabhängiger Komponenten ermöglicht und so bereits heute für mehr Wiederverwendbarkeit im Web sorgen kann.

Die Jagd nach Performance: Ist Reactive Programming der richtige Weg?

Reactive Programming verspricht eine höhere Performance von Enterprise-Java-Anwendungen bei geringerem Speicherbedarf. Erreicht wird dieses Versprechen, indem blockierende Aufrufe vermieden werden. Blockierende Aufrufe führen im Betriebssystem immer zu Prozess- und damit zu Kontextwechseln. Solche Kontextwechsel haben einen hohen CPU- und Speicher-Overhead. Dieser Overhead wird durch weniger Kontextwechsel reduziert. Erkauft wird dieser Performancegewinn von Reactive Programming allerdings durch schlechtere Wartbarkeit der Software. Ist die höhere Performance aber diesen Preis wert, und was sind die Alternativen? Dieses Thema wollen wir uns einmal genauer anschauen.