Kiosk-Artikel

Das eierlegende Truffle-Schwein: Neue polyglotte Programmierung auf der JVM

Viele, die im Java-Umfeld unterwegs sind, werden von ihr gehört haben: der sagenumwobenen GraalVM. Diese „magische“ neue Virtual Machine für Java soll vor allem für blanke Performance sorgen, indem sie den Java-Bytecode in nativen Code kompiliert. Dadurch fällt insbesondere der Start-up-Overhead weg, da weite Teile der Initialisierung bereits vom Compiler erledigt werden. So oder so ähnlich ist es vielerorts zu lesen. Doch das ist bei weitem nicht das einzige Feature, das Oracle der GraalVM gegeben hat. Hinzu kommt, dass sie zu nichts weniger das Potenzial hat, als eine neue Ära der polyglotten Programmierung auf der JVM einzuläuten. Die Rede ist vom Truffle API, einem generischen Framework zur Implementierung von Interpretern.

GraalVM startet durch: Oracles vielsprachige Virtual Machine im Java-Ökosystem

Die GraalVM ist eine universelle Virtuelle Maschine (VM) für Anwendungen, die in den JVM-basierten Programmiersprachen Java, Scala und Kotlin, den dynamischen Sprachen JavaScript, R, Ruby und Python und den LLVM-basierten Sprachen C/C++ geschrieben wurden [1]. Im Oktober 2019 wurde die auf dem JDK-8-Update 231 basierende GraalVM 19.2.1 veröffentlicht, die Performanceverbesserungen und polyglotte Unterstützung für verschiedene Programmiersprachen bietet. Sie ermöglicht die Sprachinteroperabilität in einer gemeinsamen Laufzeitumgebung und kann eigenständig oder im Kontext von OpenJDK, Node.js sowie der Oracle-Datenbank betrieben werden. Die GraalVM kann wahlweise als Open Source Community Edition (CE) oder als Enterprise Edition (EE) mit OTN-Lizenz verwendet werden.

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.

Unter der Lupe: Kubernetes und seine CI/CD-Generationen und Systeme

Der neue Kubernetes-Cluster ist eingerichtet, die Softwarearchitektur ist ganz modern auf Basis von Microservices geplant, jetzt fehlt nur noch eine Continuous Integration oder Continuous Delivery (CI/CD) Pipeline. Diese ist schnell mit dem Jenkins gebaut, der schließlich schon seit Jahren einen guten Dienst verrichtet. Alles nur noch eine Kleinigkeit, oder? Aber ist das eigentlich eine gute Idee?

Continuous Delivery für Machine Learning: Machine-Learning-Anwendungen in Produktion bringen

In der heutigen Softwareentwicklung ist es selbstverständlich geworden, dass Usern laufend neue Funktionen und Erweiterungen geboten werden. Das trifft sowohl auf Benutzeranwendungen im Mobil-, Web- und Desktopbereich zu als auch auf moderne Unternehmenssoftware. Umfangreiche und den Betrieb störende Software-Go-lives werden nicht mehr geduldet. Mit Continuous Delivery (CD) lässt sich die Frequenz, mit der Software zuverlässig produktiv ausgeliefert werden kann, drastisch erhöhen.

Dynamische Doku: Generierung der Dokumentation einer Microservices-Landschaft

Eine gute Dokumentation gilt als Aushängeschild eines Systems. Doch meist wird sie als notwendiges Übel betrachtet und daher viel zu oft vernachlässigt. Dabei ist eine lückenhafte und veraltete Dokumentation ein risikobehafteter Bereich mit viel Konflikt- und Fehlerpotenzial. Um die Risiken zu vermeiden, haben wir uns auf die Suche nach einer dynamischen und flexiblen Lösung gemacht. Die Ergebnisse stellen wir euch hier vor.

Laufzeitumgebung in AWS Lambda: In wenigen Schritten von der Anwendung zur Ausführung gelangen

AWS Lambda [1] ist ein serverloser Compute-Service, der Code als Reaktion auf Ereignisse ausführt und automatisch die zugrunde liegenden Compute-Ressourcen verwaltet. Lambda unterstützt nativ Java, Go, PowerShell, Node.js, C#, Python und Ruby. Vor kurzem wurde eine interessante neue Funktionalität vorgestellt: ein Runtime API [2], das es ermöglicht, jede andere Programmiersprache im Kontext von Lambda zu nutzen, um eigene Funktionen zu implementieren. Im Folgenden werden wir einen genauen Blick auf AWS Lambda, AWS Lambda Layers [3] und AWS Lambda Custom Runtimes [4] werfen.

Service Mesh: Eine Einführung in die Nutzung von Istio bei Microservices-Architekturen

Je umfangreicher und verflochtener eine Microservices-Architektur wird, desto unübersichtlicher wird es. Man spricht hierbei vom sogenannten Service Mesh. Viele solcher Architekturen werden heutzutage nativ in der Cloud entwickelt. An diejenigen, die diese Microservices dann verwalten sollen, werden besondere Anforderungen gestellt. Das Tool Istio soll dabei behilflich sein, die Übersicht zu behalten.

DDD: Taktisches Design – Architektur innerhalb eines Bounded Context

In Teil 2 dieser Serie [1] haben uns Carola Lilienthal und Michael Plöd gezeigt, wie man eine Domäne in mehrere Bounded Contexts aufteilt. Dabei erhalten wir statt einem großen, schwer verständlichen und schwer wartbaren Domänenmodell nun mehrere, besser handhabbare Domänenmodelle. In diesem Teil der Serie schauen wir darauf, wie man das einzelne Domänenmodell konkret implementieren kann.

Okay Google, hier spricht die Himbeere: Google Home auf dem Raspberry Pi installieren

Sprachassistenten sind heutzutage in aller Munde und werden immer beliebter. Die stylischen kleinen Geräte sind mittlerweile ein ständiger Begleiter im Alltag geworden. Leider sind sie nicht gerade billig. Daher sehen wir uns in diesem Artikel an, wie wir mit einem Raspberry Pi und einigen zusätzlichen Teilen einen eigenen Google Home aufbauen können. Damit es nicht zu theoretisch wird, verwenden wir den Raspberry Google Home, um einen Lüfter zu aktivieren, der uns an heißen Sommertagen ein wenig Abkühlung bringt.

Tekton-Tutorial: Cloudnative Java-Anwendungen mit Tekton entwickeln

Früher war Java in der Lage, die größten Probleme eines Unternehmens mit dem Paradigma „write once, run anywhere“ (WORA) zu bewältigen. Im Zuge von Phänomenen wie Serverless, der Popularität von cloudnativen Anwendungen und der Ausführung von Anwendungen als Linux-Container wurde Java von Sprachen wie Go und Node.js – den Vorreitern für den Aufbau von cloudnative Anwendungen – zurückgedrängt, da diese kleiner, schneller und wohl auch agiler sind.

Hohe Skalierbarkeit, weitreichende Ressourcen: Serverlose Webapplikationen mit AWS

Serverless Computing ist eine aktuelle Entwicklung im Cloud-Computing, bei der die meisten Anbieter mittlerweile auch Function as a Service im Programm haben. Geboten werden skalierbare Webapplikationen, bei denen man sich nicht um Ressourcen kümmern muss. Dieser Artikel ist eine Einführung in AWS Lambda von Amazon Web Services. Das händische Deployment von Lambda-Funktionen ist anspruchsvoll, aber Frameworks wie Chalice für Python-Entwickler nehmen dem Anwender die meisten Handgriffe ab.