Im Frühjahr 2016 wurden in der Presse die ersten Berichte zu den "Panama Papers" veröffentlicht. Mit knapp 3 TB an Rohdaten war dies das bisher mit Abstand größte Leak an Daten weltweit. weiterlesen
Für viele ist die Selenium IDE der Einstieg in die Testautomatisierung mit dem Browser. Auf Dauer wartbare Regressionstests lassen sich damit aber kaum erstellen, da eine Änderung in der zu testenden Anwendung, Änderungen an viele Tests zu Folge haben kann. weiterlesen
Java EE 8 bringt mit dem JSR-371 ein neues Action-basiertes Webframework mit. Getauft wurde es schlicht „MVC“. Grundlage für MVC sind bekannte und erprobte Technologien wie JAX-RS, CDI und Bean Validation. weiterlesen
Swift wurde überraschend während Apples WWDC Keynote im Juni 2014 vorgestellt. Ein Jahr später folgte die Open Source Veröffentlichung und der Sprung auf Version 2. weiterlesen
Microservices sind mittlerweile ein etabilierter Architekturstil. Dieser stellt neue Anforderungen an Automatisierung, Infrastruktur und Wissensmanagement. Das Wissen über Funktionalität, Abhängigkeiten, Verantwortlichkeiten und Build-Systeme ist stark verteilt, was Entwickler und Architekten vor neue Herausfoderungen stellt. weiterlesen
To make the complex, distributed and highly interconnected system landscapes of today robust, responsive and highly available, we need to implement resilience into them on the application level. weiterlesen
Mit JBoss Keycloak gibt es eine Open-Source Benutzerverwaltung, die sich über OAuth 2.0 auf einfache Art in die eigene Anwendung integrieren lässt. weiterlesen
„Schreibe aus Sicht des Lesers! Erkläre Deine Notation! Verwende eine Standardgliederung! ..." Die klassischen sieben Regeln für gute (Architektur-)dokumentation sind so alt, dass Ihr sie vielleicht gar nicht kennt. weiterlesen
Der Vortrag befasst sich mit den Herausforderungen der technischen System-, Anwendungs- und Service-Integration im Zeitalter des Digital Business und der digitalen Transformation von Unternehmen. weiterlesen
Das Spring Data Projekt organisiert seine Releases in ungefähr halbjährlichen Release-Trains, die ein gutes Duzend Module enthalten um Datenzugriffschichten für verschiedene Datenbanken zu implementieren. weiterlesen
Bei Microservices denken die meisten an Frameworks wie Spring Boot und Docker Container. Es geht aber viel kleiner, wenn man technologische Kompromisse eingeht. weiterlesen
Für mich und viele andere ist JUnit die vielleicht wichtigste Bibliothek im Java Universum. (Fast) jedes Projekt nutzt sie, alle IDEs integrieren sie, ebenso wie Buildtools. weiterlesen
Betriebliche Abläufe gehören zum Geschäftsalltag wie LEGO zur Kindheit. Dennoch mangelt es in vielen Unternehmen an der Transparenz und Wiederverwendbarkeit dieser Abläufe. weiterlesen
Es gibt Momente, in denen will man einfach nur Code schreiben und diesen in der Cloud ausführen. Ohne sich lange mit der Infrastruktur aufhalten zu müssen, ohne Infrastruktur dauerhaft betreiben/laufen lassen zu müssen. Weil man es nicht braucht, weil man es nicht will, weil es teuer ist. weiterlesen
Haben sich Unit-, Integrations- und Oberflächentests in der Vergangenheit doch mehr oder weniger gut durchgesetzt, fristen die Lasttests eher ein Nischen-Dasein oder fallen meist Zeit-Budgets zum Opfer. In vielen Unternehmen klicken die Mitarbeiter meist nur schnell aber unkontrolliert hin und her. Diese Art von Smoke-Tests haben keine Aussagekraft, sind nicht reproduzier- und damit nicht vergleich- oder bewertbar. Wenn ein Performance-Engpass auftritt, ist die eigentliche Ursache nicht ersichtlich. weiterlesen
Seit Ende 2011 steht WebSocket als offizieller Standard (RFC 6455) bereit. Doch wie sieht es mit dem Einsatz von WebSocket in der Praxis wirklich aus? weiterlesen
Der Elastic Stack ist weit verbreitet, um Logdaten mit Logstash zu sammeln, mit Elasticsearch zu analysieren und sie mit Kibana zu durchsuchen sowie zu visualisieren. weiterlesen
Docker hat sich inzwischen aus dem Hype-Bereich heraus entwickelt und bietet einige ausgereifte Werkzeuge, die im gesamten DevOps-Bereich benutzt werden können. Häufig wird Docker mit Microservices assoziiert. Wir finden aber, dass es sich auch wunderbar bei klassischen Anwendungsarchitekturen benutzen lässt. weiterlesen
Eine Tabelle mit drei Spalten: Das ist alles was man mit EventSourcing braucht, um einen eCommerce Shop zu entwickeln - oder ein ERM-System - oder eigentlich jede Art von Software. weiterlesen
Clojure ist eine JVM-Sprache, die das Unmögliche möglich macht: Ein tatsächlich in der Praxis von normalsterblichen Entwicklern einsetzbares Lisp. weiterlesen
Why craft and deliberate practice matter and how to raise the bar in today's software industry. What is software craftsmanship all about and how could you be part of it? weiterlesen
Fast jedes Softwaresystem wird mit guten Vorsätzen aber unter schwierigen Bedingungen entwickelt. Deadlines, unterschiedliche Qualifikationen und Missverständnisse im Entwicklungsteam führen dazu, dass die Architektur des Systems erodiert und Schritt für Schritt technische Schulden aufgebaut werden. weiterlesen
Deep learning, big data, data science: Der coole Entwickler von heute bietet seinen Kunden mehr als eine Produktliste und einen Warenkorb. Aber braucht es wirklich den großen Cluster in der Cloud bevor man anfangen kann, den eigenen Webshop mit kontextsensitiven Empfehlungen aufzuwerten? weiterlesen
Software-Architekturen werden mit Begriffen beschrieben, für die keine überprüfbaren Repräsentationen in Programmiersprachen existieren. Die Folge: Architekturdefinitionen mit ihren Konzepten und Constraints sind nur als Dokumentation vorhanden, über deren Inhalt alle Entwickler auf dem Laufenden gehalten werden müssen. weiterlesen
JavaScript ist seit ein paar Jahren die neue Hypesprache. Sie hat eine aktive Community und zahlreiche Frameworks, mit jedem Einsatzgebiet das man sich vorstellen kann. Spätestens seit dem Sprung ins Backend mit Node.js ist sie eine der populärsten Sprachen geworden. weiterlesen
Anhänger der funktionalen Programmierung sprechen gern von "Immutability", "polymorphen Typen" und "Monaden", meist begleitet von grandiosen, aber luftigen Metaphern. Aber wie sollen sich Java-Programmierer vorstellen, wofür diese Dinge in einer realistischen Anwendung konkret gut sind oder wie sie eingesetzt werden? weiterlesen
Im Rahmen eines Hackathons entstand VeRST (Versioned Represental State Transfer, https://github.com/openknowledge/jaxrs-versioning ), ein kleines aber nützliches Framework, um JAX-RS-Schnittstellen einfach und automatisiert zu versionieren. weiterlesen
Mit steigender Komplexität von Software-Systemen steigt auch die Komplexität die für den Aufbau einer Entwicklungsumgebung nötig ist. Wo früher für eine Webapplikation nur eine Datenbank für eine lokale Entwicklung nötig war, sind heute eine Vielzahl von Komponenten wie Messaging-Systeme, Suchserver oder andere Services für die Entwicklung nötig. Spätestens bei der Umsetzung von Mikroservice Architekturen ergeben sich hier noch deutlich größere Probleme bei der lokalen Bereitstellung der Umgebung. weiterlesen
Webschnittstellen, zur Integration externer Partner und Anwendungen werden immer wichtiger. Das gilt nicht nur für erfolgreiche Plattformen, wie eBay, Twitter, Salesforce oder Amazon, sondern auch für die Anbindung mobiler Anwendungen. weiterlesen
Viele Organisationen haben in den letzten Jahren eine Plattform für Continuous Integration oder gar Continuous Delivery aufgebaut. Man kann auch die Plattform selbst nach dem Prinzip "Infrastructure as Code" erstellen und kontinuierlich reproduzieren und testen, sie also zum Gegenstand einer Continuous Delivery Strategie machen. weiterlesen
Viele IT Teams stehen derzeit vor der Aufgabe ihre Systeme für die digitale Transformation fit zu machen. Die direkte Integration von Altsystemen in digitale Workflows und deren Anbindung an Webseiten stellt neue und andere Herausforderungen bereit. Nicht immer ist es direkt möglich oder sinnvoll diese System in moderne, skalierbare Architekturen zu überführen. Meist ergibt sich hier eine Lücke in der Belastbarkeit dieser Systeme gegenüber neueren Entwicklungen, welche von Anfang an auf Skalierbarkeit ausgelegt sind. weiterlesen
Software wird von AnwenderInnen besonders dann akzeptiert und eingesetzt, wenn sie deren Gewohnheiten und existierenden Tätigkeitsablauf unterstützen. Trotzdem ist das Einbinden von Human-Centered Design (HCD) in die Entwicklung noch keine Selbstverständlichkeit. Viele Projekte lassen die Betrachtung von Interessen, Fähigkeiten und Aktivitäten ihrer Zielgruppen außer acht. weiterlesen
Kreative Berufe - wie Software-Entwicklung - lassen viele Spielräume, aber im Alltag wird das oft vergessen. Angst vor falschen Entscheidungen schränkt den Blickwinkel immens ein. Vorgaben des Managements werden viel zu häufig unreflektiert umgesetzt - aus Angst vor falschen Entscheidungen. weiterlesen
Fullstack-Java-EE-Anwendungen schreibt man mit JSF. Zumindest im Standard. Nun sind Browser schon lange nicht mehr einfache Remote-Displays, sondern führen mit JavaScript eine leistungsfähige und allgegenwärtige Programmumgebung mit sich. weiterlesen
Wenn man sie pflegen muss hat man zu viele Assertions, wenn ein Fehler durchschlüpft zu wenige. Observational Diff (auch Characterization Test, Golden Master oder Approval-Test) ist ein innovativer Testansatz um dieses Problem zu lösen. weiterlesen
Microservices are now a trend and every new piece of software must be written following the Microservices’ architecture. But what if you already have a big monolith and don't want to rewrite it from scratch? weiterlesen
Für das Releasen von Java-basierten Artefakten (JARs/WARs/...), die mit Maven oder Gradle gebaut werden, hat sich die Verwendung von Semantik Versioning (SemVer) weitgehend durchgesetzt. Typischerweise wird ein Release gebaut, wenn die Software eine gewisse Reife erreicht hat. weiterlesen