Kiosk-Artikel

Lock & Crete: Upgraden von ReadWriteLock

Die Java-Klasse ReentrantReadWriteLock kann einen Read Lock nicht auf einen Write Lock upgraden. Kotlins Erweiterungsfunktion ReentrantReadWriteLock.write() schummelt ein wenig, indem sie den Read Lock vor dem Upgrade loslässt und so die Tür für Race Conditions öffnet. Eine bessere Lösung ist StampedLock, das über eine Methode verfügt, mit der versucht wird, den Lock in einen Write Lock umzuwandeln.

Event-basiert und evolvierbar: Anwendungsentwicklung mit dem Axon Stack

Obgleich das Zielbild sowohl ein Monolith als auch eine Microservices-Architektur sein kann – das Axon Framework offeriert einen leichtgewichtigen Ansatz zur Implementierung Event-basierter Anwendungen. Dabei stützt sich das Framework auf gängige Muster aus dem Domain-driven Design (DDD) und begünstigt die Umsetzung einer Anwendung nach dem Architekturprinzip Command Query Responsibility Segregation (CQRS) und der Persistenzstrategie Event Sourcing. Durch diese Flexibilität und die Tatsache, dass das Axon Framework bestens mit dem Spring Framework integriert ist und damit ein quasistandardisiertes Programmiermodell unterstützt, ist es für den modernen Java-Entwickler einen Blick wert.

Ein Einblick in Svelte: Mehr erreichen mit weniger Code

Svelte ist der neue Stern am Web-Frontend-Himmel. Es ist rasend schnell und seine minimale Bundle Size steckt andere Frameworks locker in die Tasche. Vor allem aber ist es ausdrucksstark: Minimaler Code führt zu maximalen Ergebnissen. Performancetuning durch den User mit Hilfe von Dingen wie shouldComponentUpdate? Nicht nötig. Boilerplate-Code, um eine Komponente zu erstellen? Nicht vorhanden. Gleichzeitig ist Svelte sehr umfangreich. Ein Animationspaket und eine State-Management-Lösung sind bereits enthalten. Wie schafft Svelte das? Darauf wollen wir in diesem Artikel einen Blick werfen. Gemeinsam machen wir die ersten Schritte mit Svelte und bauen die Mutter aller Apps: eine To-do-Liste.

Mehr Flexibilität: Hartkodierten Code verringern

Die Verwendung von hartkodiertem Code geht wesentlich einfacher von der Hand: Man muss fürs Erste weniger überlegen, da der Code nur im Hier und Jetzt läuft. Zukünftige Änderungen werden mit dieser Technik hingegen erschwert. Sobald der Code um neue Funktionen oder Datentypen erweitert wird, muss er erst überarbeitet werden. Wir zeigen, mit welchen Bibliotheken, Klassen und Techniken sich hartkodierter Code reduzieren lässt.

Legacy mit DDD verbessern

Legacy-Code treibt die Entwicklungskosten in die Höhe und führt dazu, dass wir diese alten Softwaresysteme nicht mehr gerne anfassen. Ist das unvermeidbar? Können wir etwas tun? Mit Domain-driven Design (DDD) haben wir ein Werkzeug zur Hand, um Legacy-Code Schritt für Schritt wieder in den Bereich beherrschbarer Wartungskosten zu bringen.

Cloud-Services zum Entwickeln und Testen von mobilen Apps

Geräte- und plattformübergreifende Entwicklung ist angesagt, zum Beispiel mit Xamarin oder NativeScript. Möchte man Apps für mehrere Systeme erstellen, benötigt man die passende Systemumgebung aus Entwicklungsrechner und Testgeräten. Statt echter Hardware können Lösungen aus der Cloud helfen.

Classic Games Reloaded: Klassische KI gegen neuronales Netzwerk – Runde 1

Spieleklassiker erfreuen sich heutzutage einer großen Beliebtheit unter KI-Forschern und Programmierern, da die einfach strukturierten Spielewelten unter anderem ideale Testumgebungen für die Erforschung und Entwicklung von künstlichen neuronalen Netzwerken darstellen. Selbstverständlich werden auch wir uns diesem Trend nicht verschließen. Da wir jedoch die KI-Routinen unserer Spiele nicht von jetzt auf gleich völlig umkrempeln können, werden wir uns in diesem Artikel zunächst einmal mit den grundlegenden Aspekten von einfachen neuronalen Netzen beschäftigen.

Tutorial: Migration von Swing auf JavaFX

Obwohl JavaFX 2.0 bereits 2011 [1] erschienen ist, verfügen etliche Java-Anwendungen noch über eine Java-Swing-Oberfläche, so auch die Back-up-Software Areca oder MediathekView, die Sendungen der öffentlich-rechtlichen Rundfunkanstalten zum Download anbietet. Da Oracle JavaFX als Nachfolger von Swing betrachtet, zeigen wir, wie ein Umstieg auf JavaFX erfolgen kann. Das Tutorial berücksichtigt das Model-View-Controller-Pattern (MVC), auf dem Anwendungen mit grafischer Oberfläche üblicherweise basieren.

Classic Games Reloaded: Klassische KI gegen neuronales Netzwerk – Runde 1

Spieleklassiker erfreuen sich heutzutage einer großen Beliebtheit unter KI-Forschern und Programmierern, da die einfach strukturierten Spielewelten unter anderem ideale Testumgebungen für die Erforschung und Entwicklung von künstlichen neuronalen Netzwerken darstellen. Selbstverständlich werden auch wir uns diesem Trend nicht verschließen. Da wir jedoch die KI-Routinen unserer Spiele nicht von jetzt auf gleich völlig umkrempeln können, werden wir uns in diesem Artikel zunächst einmal mit den grundlegenden Aspekten von einfachen neuronalen Netzen beschäftigen.

Die Golumne: In die Ferne schweifen

Wir haben inzwischen 2020 und die Softwareentwicklung hat sich in mehreren Schritten von großen Programmen mit kompletter Funktionalität in einem System hin zu Microservices in verteilten Landschaften entwickelt. Das ist durch die Aufteilung in fachliche Komponenten, die leichtere Skalierbarkeit und eine bessere Hochverfügbarkeit eine spannende Veränderung. Dass damit auch neue Herausforderungen geschaffen werden, sei nicht verschwiegen. Das Design ändert sich, Netzwerklatenzen und -ausfälle werden zu eigenen Problemen und für die Verteilung muss ich mich auf weitere Plattformen einlassen. Hier hilft beispielsweise das leistungsfähige Kubernetes, das soll an dieser Stelle aber nicht das Thema sein.

Durch-, Rum- oder Reinreichen? Advanced Vue: Datenfluss und Dependency Injection

Was soll denn dieser Titel schon wieder? Wie sich im weiteren Verlaufe dieses Beitrags herausstellen wird, handelt es sich durchaus um eine passende Etikette, um den ersten Teil unserer Serie über fortgeschrittene Themen rund um Vue einzuleiten. In diesem Beitrag geht es um die Frage der Kommunikation und des Datenflusses zwischen den Komponenten einer Vue-Anwendung und wie Dependency Injection hier eingesetzt werden kann.

Domino statt Puzzle: CI/CD richtig umsetzen

Schneller, besser, zuverlässiger ist heute eine Kernanforderung an die Softwareentwicklung. Continuous Integration und Continuous Delivery versprechen, alle Aspekte gleichermaßen zu adressieren und dass man dabei keinerlei Einbußen hinnehmen muss. Der Weg dahin ist allerdings steinig und hat weitreichende Folgen für das gesamte Unternehmen. Julian Fish von Micro Focus erklärt die weitreichenden Stolperfallen und Fragestellungen, denen sich Unternehmen bei der Implementierung stellen müssen.

Golumne Spezial: Go 1.14 ist da – das beste Release ever

Kurz nach dem 10. Geburtstag erscheint im bekannten Rhythmus ein neues Release der Sprache Go. Während die Hauptversion weiterhin die Nummer 1 trägt, um das Halten des Sprachstandards zu dokumentieren, erreicht der Gopher nun die Unterversion 14. Und wie schon zuvor enthält sie so einige kleine, aber feine Verbesserungen, die zur Reife der Sprache beitragen.