Schwerpunktthema

praktiker

Artikel

Bibliotheken f√ľr Kommandozeilen­anwendungen

Kommandozeilenanwendungen in Java sind zwar, aufgrund der Startzeit der JVM, nicht die verbreitetsten. Allerdings kann die Entwicklung f√ľr interne Anwendungen, je nach Wissensstand des Teams, sinnvoll sein. Und dank der nativen Kompilierung mit der GraalVM wird die Startzeit beschleunigt. Neben der Fachlichkeit besteht ein Gro√üteil der Arbeit einer Kommandozeilenanwendung darin, die √ľbergebenen Argumente und Optionen auszulesen und anzuwenden. Dazu schauen wir uns vier m√∂gliche Bibliotheken an.

Artikel

Java-HTTP-Clients im Vergleich

Neben der Einbindung von Datenbanken findet sich die Kommunikation per HTTP zu anderen Diensten mittlerweile in fast jedem Projekt wieder. Innerhalb von Java hat sich hierzu mittlerweile eine große Menge an Bibliotheken gebildet, die wir einsetzen können. In dieser Kolumne wollen wir uns darum vier dieser Kandidaten anschauen und sehen, in welchen Aspekten sich diese unterscheiden.

Artikel

A Comparison of Java HTTP Clients

Many Roads Lead to the Web

Artikel

Maven, das unbekannte Wesen ‚Äď Teil 2

Bereits in der letzten Kolumne haben wir uns mit vier Themen zu Maven besch√§ftigt. Nat√ľrlich war diese nicht ersch√∂pfend und es gibt noch viele weitere Themen, die eine Betrachtung wert sind. In dieser Kolumne betrachten wir deswegen f√ľnf weitere Themen, die meiner Meinung nach wertvoll sind.

Artikel

Maven, das unbekannte Wesen - Teil 1

In sehr vielen Java-Projekten wird heute zum Bauen Maven als Build-Tool verwendet. Die grundlegende Nutzung von Maven ist dabei in der Regel schnell erlernt und auch die erste pom.xml schnell geschrieben. Die nächsten Schritte bestehen dann meiner Meinung nach darin, sich mit weiteren Details zu beschäftigen. Dazu wollen wir uns in diesem Artikel vier ausgewählte Themen zur Vertiefung von Maven anschauen.

Artikel

Widerstandsfähigen Java-Code mit Resilience4j schreiben

Stabilitätsmuster in Java

Artikel

Feature Flags mit FF4j, Togglz oder Unleash in Java einsetzen

Feature Flags haben mittlerweile in vielen Projekten einen festen Platz. In dieser Kolumne wollen wir uns anschauen, welche Probleme sich durch Feature Flags lösen lassen. Neben der reinen Theorie lernen wir dabei auch die drei Java-Bibliotheken FF4j, Togglz und Unleash kennen, mit denen sich Feature Flags in Java nutzen lassen.

Artikel

Mit Git die Vergangenheit manipulieren

Nachdem wir uns in der letzten Kolumne mit Grundlagen von Git auf der Kommandozeile beschäftigt haben, wollen wir uns nun einige erweiterte Konzepte, vor allem rund um die nachträgliche Manipulation der Historie, anschauen.

Artikel

Es muss nicht immer grafisch und klickbar sein

Grundlagen von Git auf der Kommandozeile

Artikel

Unbekannte Besonderheiten von Java

So gut wie jede Programmiersprache, die ich kenne, besitzt Dinge, die so erstaunlich sind, dass ich oft denke ‚ÄěWas? Das geht?‚Äú. In dieser Kolumne wollen wir uns acht solche Besonderheiten von Java anschauen und verstehen, wieso diese funktionieren und wozu sie gut sein k√∂nnen.

Artikel

Images f√ľr Java-Anwendungen bauen

Vielfach werden f√ľr den Betrieb von Java-Anwendungen Container verwendet. Das setzt voraus, dass die Anwendung als Container-Image zur Verf√ľgung gestellt wird. Doch wie entsteht ein solches Image? Und worauf sollten wir achten? Dieser Artikel zeigt mehrere Wege, wie wir f√ľr eine Anwendung zu einem solchen Image gelangen k√∂nnen und worauf wir dabei achten sollten.

Artikel

JSX-Komponenten mit Java nutzen

Eine Lingua franca f√ľr HTML-Views

Artikel

Dynamische Proxys mit dem JDK umsetzen

Bei der Entwicklung mit Java verwenden wir zwangsweise einige der im JDK enthaltenen APIs. Das Collections-API mit seinen Listen, Maps und Sets wird beispielsweise in so gut wie jedem Projekt genutzt. Neben solchen bekannten gibt es jedoch auch einige APIs, die vielen, auch nach mehreren Jahren Java-Entwicklung, noch nicht begegnet sind. In diesem Artikel wollen wir uns eine solche unbekanntere Programmierschnittstelle anschauen, nämlich das Dynamic Proxy Class API.

Artikel

Einf√ľhrung in ReplicaSet und Service

Um eine Anwendung ausfallsicher in einem Kubernetes-Cluster zu betreiben, wird diese mit mehreren Pod-Instanzen betrieben. Dadurch stellt sich allerdings die Frage, wie wir anschlie√üend daf√ľr sorgen, dass diese Pods auch f√ľr Clients innerhalb des Clusters einfach erreichbar sind. Um diese Frage und um eine verbesserte Version zur Replizierung von Pods geht es in diesem Artikel.

Artikel

Was ist die Magie von Spring Boot?

Ein Blick hinter die Kulissen

Artikel

JUnit5 f√ľr das Testen von Spring Boot-Anwendungen

Bei der Entwicklung von Spring und Spring Boot wurde schon immer darauf geachtet, dass hiermit entwickelte Anwendungen testbar sind. Ab und zu reichen die im Standardumfang mitgelieferten Mittel jedoch nicht vollkommen aus. In diesem Artikel wollen wir uns deshalb an drei Anwendungsfällen aus der Praxis anschauen, wie sich die vorhandenen Mittel in Kombination mit JUnit5 erweitern lassen.

Artikel

Cloud native Java-Anwendungen mit Quarkus

Anfang M√§rz wurde meine Timeline auf Twitter mit Tweets √ľber das neue Java-Framework Quarkus √ľberrollt. Bei soviel erzeugter Aufmerksamkeit sollten wir uns doch einmal genauer ansehen, was daran so besonders ist und warum wir Quarkus einsetzen sollten.

Artikel

Ein praxisorientierter Einstieg in Kubernetes

Container auf hoher See

Artikel

Was sind eigentlich Web Components?

F√ľr die Erstellung von Benutzeroberfl√§chen im Web sind HTML, CSS und JavaScript gesetzt. Doch die Wiederverwendung und Kapselung von so erstellten Komponenten l√§sst zu w√ľnschen √ľbrig. Um eine fertige Komponente zu nutzen, muss man das HTML √ľbernehmen und passendes CSS und JavaScript separat einbinden. Web Components versprechen, hier zu helfen. In dieser Kolumne schauen wir uns gemeinsam an, was Web Components sind und wie diese funktionieren.

Artikel

Die erste Java-Version mit Long-Term-Support seit Java 8

Mit Java 11 ist im September 2018 das erste Release, nach Java 8, mit Long-Term-Support erschienen. Neben den neuen Features und √Ąnderungen geht es in diesem Artikel somit auch um das neue Support-Modell von Java. Und auch ein Blick in die n√§here Zukunft von Java soll nicht fehlen.

Artikel

Java-Bibliotheken f√ľr den Einsatz in Tests

Testunterst√ľtzung

Artikel

Prinzipien zur Entwicklung von unabhängigen Systemen

Viele Systeme werden aktuell mit einer Microservice-Architektur geplant und umgesetzt. Da jede Architektur Vor- und Nachteile aufweist, muss die gewählte jedoch auch zum Problem passen. Dieser Artikel zeigt, welchen primären Vorteil eine Microservice-Architektur hat und welche Prinzipien bei der Entwicklung beachtet werden sollten, um diesen Vorteil nicht zu neutralisieren.

Artikel

Einsatz von Containern zum Testen

Container setzen sich beim Betrieb von Anwendungen immer mehr durch. Doch auch abseits davon helfen diese bei der Entwicklung und dem Testen von Anwendungen. Dieser Artikel zeigt, wie mithilfe der Java Bibliothek Testcontainers Container innerhalb von JUnit Tests verwendet werden können.

Artikel

Java 10 ‚Äď Evolution statt Revolution

Die Zukunft von Java

Artikel

Health-Checks in Java-Anwendungen

Health-Checks sind f√ľr den Betrieb von Anwendungen heute, insbesondere wenn sie als Container in einem Cluster deployt werden, unerl√§sslich. Dieser Artikel zeigt, wieso Health-Checks so wichtig sind, welche Details beachtet werden sollten und wie Health-Checks in Java mit drei g√§ngigen Bibliotheken umgesetzt werden k√∂nnen.

Artikel

Jepsen – verteilte Systeme testen

An verteilten Systemen kommt heute kein Entwickler mehr vorbei. Selbst wenn man keines baut, setzt man häufig Komponenten ein, die ein verteiltes System sind. Hierzu gehören vor allem viele Vertreter von neueren Datenbanken. Dieser Artikel zeigt, wie man diese mit Jepsen testen kann.

Artikel

Command Line Interfaces in Java

Auf Kommando

Artikel

Logging und Metriken in verteilten Systemen

Aufgrund des aktuellen Trends rund um Microservices entsteht in vielen Projekten ein verteiltes System. Eine Herausforderung von verteilten Systemen ist deren Überwachung und das Nachvollziehen, was zur Laufzeit vor sich geht. Dieser Artikel gibt Ihnen einen Überblick, wie dies mit Logging und Metriken gewährleistet werden kann.

Artikel

Tooling f√ľr JavaScript-Frontends

Nahezu jede Webanwendung besitzt einen Anteil an JavaScript im Frontend. Im Vergleich zu fr√ľher haben sich jedoch viele Dinge ge√§ndert. So sind heute zahlreiche Tools √ľblich, die den Entwickler unterst√ľtzen. Dieser Artikel gibt einen √úberblick √ľber aktuell genutzte Entwicklungswerkzeuge f√ľr die Entwicklung von JavaScript-Frontends.

Artikel

Docker Compose – Komplette Systeme mit Docker managen

Mehr als die Summe seiner Teile

Artikel

Lokale Datenanalyse mit Data Frames

Der Wunsch, aus Gesch√§ftsdaten Erkenntnisse gewinnen zu wollen, ist in der Breite der Unternehmen angekommen. H√§ufig werden dabei technologische Aspekte wie Machine-Learning-Algorithmen und Cluster-L√∂sungen als Schl√ľssel betrachtet, um viele Fragen quasi automatisch zu beantworten. Doch muss es f√ľr einen Einstieg in dieses Thema immer direkt ein Big-Data-Framework oder ein Cluster f√ľr Machine Learning sein? Dieser Artikel zeigt Ihnen, wie Sie ganz einfach lokal auf Ihrem Rechner die ersten Schritte im Data-Science-Umfeld gehen k√∂nnen und dabei einen √úberblick √ľber die Vorgehensweise erhalten.

Artikel

Microservice-Infrastruktur

Die Cloud und darauf aufbauend Microservices haben in den letzten Jahren die Softwareentwicklung stark beeinflusst. Vor allem im Bereich der Infrastruktur tut sich hier auch heute noch einiges. Dabei wird man den Eindruck nicht los, dass jede Woche ein neues Produkt veröffentlicht wird. In diesem Artikel versuche ich, Ihnen durch diesen Dschungel zu helfen.

Artikel

Features in Java 9

Unter dem Radar

Artikel

Consumer-Driven Contracts ‚Äď Testen von Schnittstellen innerhalb einer Microservices-Architektur

In einer Microservices-Architektur entstehen viele Services ‚Äď potenziell in den verschiedensten Programmiersprachen. Um eine reibungslose Kommunikation zwischen diesen zu gew√§hrleisten, m√ľssen die Schnittstellen passen und auch √ľber l√§ngere Zeit stabil bleiben. Consumer-Driven Contracts stellt hierzu einen Ansatz dar, der zudem die Schnittstellen und deren Aufrufer noch zus√§tzlich testet.

Artikel

AWS Lambda

Seit Kurzem gibt es von verschiedenen Cloud-Anbietern Services f√ľr die Entwicklung serverloser Event-getriebener Anwendungen in der Cloud: Google (Cloud Functions), IBM (OpenWhisk), Microsoft (Azure Functions) und allen voran AWS Lambda von Amazon. Dieser Artikel beschreibt am Beispiel von AWS Lambda das Programmiermodell und hilft bei der Beantwortung der Frage, ob sich der Einsatz f√ľr Ihre Anwendung lohnt.

Artikel

Java-Web-Frameworks von innen?

Im Maschinenraum

Artikel

Ein Dom√§nenmodell f√ľr das SmartHome

Es gibt in der Dom√§ne SmartHome viele unterschiedliche Sichtweisen, propriet√§re Produktfamilien, einige offene Standards und verschiedene Konsortien, die versuchen, langfristig tragf√§hige, standardisierte Kommunikationsstandards zu definieren. Wir skizzieren f√ľr das Umfeld des sogenannten Ambient Assisted Living eine m√∂gliche API f√ľr die relevanten Anwenderrollen.

Artikel

Amazon EC2 Container Service

Dank des Amazon EC2 Container Service finden Docker-Container nun auch bei den Amazon Web Services (AWS) Unterschlupf. In diesem Artikel stellen wir nach einem kurzen √úberblick √ľber die wichtigsten bisher verf√ľgbaren Dienste den neuen Service vor, mit dem Docker-Container in der Cloud gehostet werden k√∂nnen.

Artikel

Batch-Computing in Java

Lieber mit Batch-Framework

Artikel

Apache Cassandra

In dieser Kolumne stellen wir Cassandra vor und zeigen, warum die Datenbank quasi beliebig skaliert und h√∂chst performant ist. Cassandra wirkt f√ľr Kenner von relationalen Datenbanken auf den ersten Blick recht vertraut, weil hier auch von Tabellen und Spalten die Rede ist und die Abfragen einfachen SQL-Abfragen √§hnlich sehen. Dennoch unterscheidet sich Cassandra konzeptionell von relationalen Datenbank-Management-Systemen (RDBMS).

Artikel

Logging konsolidieren und Performance gewinnen

Apache Log4j 2.0 ist eine Neuimplementierung von Log4j zeichnet sich vor allem durch einen h√∂heren Durchsatz ‚Äď dank asynchronem I/O ‚Äď aus. Die Neuerungen des Frameworks machen Lust darauf, Log4j2 einzusetzen. Da dr√§ngt sich die Frage auf, wie die Vorz√ľge von Log4j2 in einem System genutzt werden k√∂nnen, wenn Teile noch Log4J 1, commons-logging oder √Ąhnliches verwenden.

Artikel

Micro-Services in Java realisieren ‚Äď Teil 2: Web-Apps in Docker-Umgebungen

Der goldene Käfig

Artikel

Micro-Services in Java realisieren ‚Äď Teil 1: Leichtgewichtige Web-Apps mit DropWizard

Dieser Beitrag in zwei Teilen stellt zwei interessante Zutaten f√ľr den Bau von Micro-Services vor: Docker.io zum Bereitstellen von definierten Umgebungen f√ľr unsere Services und DropWizard zum Realisieren von Web-Anwendungen. In dieser Ausgabe besch√§ftigen wir uns zuerst einmal mit der Realisierung und einem daf√ľr passenden Framework.

Artikel

Hystrix ‚Äď Wider den Totalausfall

Michael T. Nygard hat in seinem Buch ‚ÄěRelease It!‚ÄĚ sehr anschaulich die Folgen von sich fortpflanzenden Fehlern beschrieben. Seine klare Empfehlung lautete, Isolationsmuster wie zum Beispiel Leistungsschutzschalter ‚Äď engl. Circuit Breaker ‚Äď in die Software zu integrieren, um Totalausf√§lle zu vermeiden. Mit Hystrix hat Netflix ein Framework bereitgestellt, das den Einbau von solchen Schaltern vereinfacht. Dieser Beitrag stellt das Framework vor.

Artikel

Domain-Driven Design in Clojure

Gut bewertet

Artikel

Endlich viel erben?

Im Fahrwasser der Lambda-Funktionen werden in Java 8 Default-Methoden eingef√ľhrt, um Interfaces aus dem JDK abw√§rtskompatibel um neue Methoden zu erweitern. Hier schlie√üen wir an den Artikel von Christian Robert (Default-Methoden in Java 8, JavaSPEKTRUM 03/2013) an. Wir kl√§ren bis zu welchem Grad Mehrfacherbung in Java einzieht und wie wir die M√∂glichkeiten und das Risiko f√ľr bestehende Systeme einsch√§tzen.

Artikel

ROCA: Keine Angst vor HTML und JavaScript

ROCA ist ein Architekturstil zur Entwicklung anst√§ndiger und zukunftsf√§higer Web-Frontends. Er umfasst eine Reihe von Empfehlungen sowohl f√ľr die Client- als auch f√ľr die Serverseite. Der ROCA-Stil erfordert von vielen Java-Entwicklern ein gewisses Umdenken. Grund genug, sich den Stil genauer anzuschauen.

Artikel

Hypermedia as the Engine of Application State ‚Äď Spring Hateoas

RESTlos gl√ľcklich

Artikel

Log-Daten effektiv verarbeiten mit Apache Kafka

Mit Apache Kafka stellen wir ein ungewöhnliches Messaging-System vor. Es besticht durch persistente Speicherung der Nachrichten, hohen Transaktionsdurchsatz und gute Skalierbarkeit. Kafkas Architektur ermöglicht dadurch nicht nur den Einsatz in Online-Szenarien mit zeitnaher Verarbeitung, sondern auch in Offline-Szenarien mit stark zeitverzögerter Verarbeitung von Nachrichten. Dieser Beitrag demonstriert, wie Kafka auch mit großem Log-Aufkommen zurecht kommen kann.

Artikel

Micro-Cloud mit Cloud Foundry

In dieser Ausgabe stellen wir mit Cloud Foundry einen Plattformdienst vor, mit dem Java-Anwendungen in der Cloud betrieben werden k√∂nnen. Die Plattform stellt Java-Anwendungen eine virtuelle Umgebung mit Ressourcen zur Verf√ľgung. Wir haben Cloud Foundry f√ľr diese Kolumne gew√§hlt, weil es die Cloud-Plattform auf den eigenen Rechner holt. Dadurch wird die Cloud- Entwicklung netzunabh√§ngig.

Artikel

Java ‚ÄstFunktional ohne Zauberei

Totally Lazy

Artikel

Eine Lanze f√ľr XML brechen

Heute ‚Äď zehn Jahre nach der ersten Vorstellung von JAXB im JavaSPEKTRUM ‚Äď m√∂chte ich noch einmal eine Lanze f√ľr XML brechen. Auch wenn JSON, der sympathische Cousin von XML, immer mehr Freunde gewinnt, bietet XML immer noch einiges, wenn auch selten genutztes Potenzial. In dieser Kolumne m√∂chte ich ein paar Aspekte von XML noch mal in Erinnerung rufen.

Artikel

Java-Programme mit Clojure w√ľrzen

F√ľr jeden, der einen Lisp-Dialekt auf der JVM verwenden will, ist Clojure eine naheliegende Wahl. Es verbindet die Ausdruckskraft von Lisp mit der Vielzahl von bestehenden Java-Bibliotheken. Was zur Integration von Clojure mit Java geh√∂rt und wie sich die M√§chtigkeit von Clojure auswirkt, wollen wir am Beispiel der Clojure-Bibliothek Incanter betrachten.

Artikel

Neo4j ‚Äď Eine graph-basierte transaktionale Datenbank

Es rockt total

Artikel

Webanwendungen mit dem Play!-Framework

Das Play!-Framework ist ein recht junges, vollst√§ndiges MVC-Framework, das den Charme von Ruby on Rails hat. Aber anstatt unreflektiert jede Entwurfsentscheidung von Rails ins Play!-Framework zu √ľbernehmen - wie das manch andere Rails-Klone gemacht haben -, haben die Entwickler darauf geachtet, es so zu konstruieren, dass es sich gut in das √Ėkosystem eines typischen Java-Entwicklers einf√ľgt.

Artikel

OpenShift Express

Oracle hat bereits zu Zeiten des Grid-Computing-Hypes verk√ľndet, dass die bestehenden Java EE/J2EE-Standards v√∂llig ausreichen, um Systeme f√ľr das Grid zu entwickeln. Diese Idee gewinnt im Cloud Computing bei verschiedenen ‚ÄěPlatform as a Service (PaaS)‚Äú-Anbietern an Bedeutung, zumal der vom JCP akzeptierte JSR 342 verschiedene Features f√ľr Java EE 7 vorschl√§gt, die effizientere PaaS erm√∂glichen. Einen der Anbieter habe ich herausgepickt und mit ihm erste Geh-Versuche gemacht.