Focus

development

Talk
Talk

Java 10, 11 und darüber hinaus

Herbstcampus 2018 / 15:40 - 16:50

Talk
Talk

Hände waschen, Zähne putzen: (manchmal) vergessene Grundlagen von Software-Engineering

Java Forum Stuttgart 2018 / 12:15 - 13:00

Talk
Talk

Kubernetes, die abstrakte Cloud (Teil 1)

API Summit 2018 / 09:00 - 12:30

Talk
Talk

Kubernetes, die abstrakte Cloud (Teil 2)

API Summit 2018 / 13:30 - 17:00

Link

Podcast-Folge mit Joy Clark zum Thema Clojure

Article

Java 10 – Evolution statt Revolution

Die Zukunft von Java

Blog Post

Proof of Existence via HTTPS

Übliche “Proof of existence” - Konzepte nutzen die Blockchain von Kryptowährungen. Das geht auch einfacher und billiger.

Blog Post

Carbon dioxide monitoring with Rust, InfluxDB and Grafana

Carbon dioxide monitoring with Rust, InfluxDB and Grafana.

Article

Health-Checks in Java-Anwendungen

Die Gesundheit immer im Blick

Blog Post

Logging mit Docker und Elasticsearch

Wenn eine Anwendung als Microservices oder Self-contained Systems in Docker-Containern läuft, stellt sich die Frage, wie auf die Log-Einträge der Anwendung zugegriffen wird. Die Antwort lautet in der Regel: “Elasticsearch”. Aber wie kommen die Logs in Elasticsearch?

Blog Post

Tags für Docker Images ohne Registry

Gibt man bei “Tags” von Docker Images keine Registry an, so wird die Standard-Registry unter docker.io benutzt. Taggen ganz ohne Registry-Angabe scheint nicht vorgesehen zu sein, obwohl es dafür gelegentlich gute Gründe gibt. Der hier vorgestellte einfache Workaround hilft.

Article

Jepsen – verteilte Systeme testen

Den Problemen in verteilten Datenbanken auf der Spur

Link

Conway’s Law & die ewige Suche nach der „richtigen“ Architektur

Article

Command Line Interfaces in Java

Die meisten neuen Anwendungen stellen eine Web- oder grafische Benutzungsoberfläche für die Interaktion mit dem Benutzer bereit. Doch gerade für Anwendungen, die Teil eines Batch-Jobs sind, automatisiert aufgerufen werden oder für sogenannte Powernutzer gemacht sind, bietet es sich an, eine Oberfläche für die Kommandozeile anzubieten. Dieser Artikel zeigt die Bestandteile einer solchen Anwendung und wie man diese in Java benutzt.

Link

Java 9 Release: „Für mich sind die Erweiterungen der bestehenden APIs die wichtigsten Features“

Blog Post

Elm in the wild: A Sandwich Delivery Game

New languages often look shiny and cool in their playground examples. But bringing them out into the wild and having to code more than just the examples in the tutorials, often reveals the true value of these new languages. So, in order to evaluate the shininess of Elm, a language compiled to JavaScript and used for building web front ends, we decided to use it for a scoped project: We programmed the Sandwich Delivery Game for the “Smart City” exhibition in Basel, Switzerland.

Article

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.

Article

Tooling für JavaScript-Frontends

Hämmer und Schraubenzieher

Link

Continuous Delivery im Expertencheck, Teil 2

Link

Continuous Delivery im Expertencheck

Article

Docker Compose – Komplette Systeme mit Docker managen

Mehr als die Summe seiner Teile

Blog Post

The Power of the HTML Form

The HTML form is a powerful tool for telling a server what you want to do. But does everybody know how it works? With the multifarious JavaScript frameworks currently available today, software developers in the industry today often do not know how to create a web application without JavaScript. Is there an alternative? The web has been around for ages. What did people do before JavaScript?

Blog Post

Serverless

Um den Begriff serverless gibt es immer noch hitzige Diskussionen. Einige halten ihn für einen Hoax und setzen ihn mit “useless” gleich, andere schwören darauf, dass serverless bald alle anderen Architekturstile ablösen wird.

Blog Post

Implementierung einer einfachen Zustandsmaschine (state machine) in Java

JSE

Article

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.

Link

The Empathic Programmer

Article

Vault

Schlüsselkasten 2.0

Article

Wo bist du?

In einer verteilten Systemlandschaft gilt es irgendwann, das Problem zu lösen, wie Services sich gegenseitig im Netz finden. Der einfachste Ansatz ist es, in den betreffenden Services eine feste Konfiguration zu hinterlegen. Meist finden sich dann hinter einem Servicenamen eine IP-Adresse und der dazugehörige Port wieder. Eine etwas dynamischere Lösung ist es, anstatt IP-Adressen einen DNS-Eintrag zu verwenden. Dabei können Adresse und Port z. B. in einem DNS SRV Record hinterlegt werden. Auch ist es möglich, mehreren Instanzen der gleichen Services zur Verfügung zu stellen, indem man ein Round-Robin-Verfahren nutzt. Vereinfacht ausgedrückt wird bei jeder Anfrage die IP-Adresse einer anderen Instanz zurückgegeben.

Article

Horden von Zombies

Kennen Sie das Computer-Spiel „Plants vs. Zombies“? 1 Das Szenario ist einfach: Zombies stürmen auf unser Haus zu. Als Spieler haben wir eigentlich nur eine Chance, der Übermacht zu begegnen: Wir müssen die Verteidigungsmechanismen vorbereiten, die wir im Eifer des Gefechts brauchen werden. Paprikaschoten, Erbsen und Walnüsse werden uns helfen, die Angriffswut der Zombies zu stoppen. In dieser Ausgabe nutze ich die Kulisse des Spiels, um ein paar Eigenschaften von Reactive Extensions vorzustellen.

Article

Features in Java 9

Unter dem Radar

Article

Zwei Jahre nach dem Tod der Java Application Server

Der ursprüngliche Artikel 1 hat mehrere Gründe aufgeführt, warum Application Server keine zeitgemäße Plattform mehr darstellen. Kurz zusammengefasst:

Article

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.

Link

Continuous Architecture Blog: Was ist ein Festpreisprojekt wert?

Article

Java-Web-Frameworks von innen?

Web-Frameworks für Java gibt es nun bereits seit fast 20 Jahren. Diese nehmen dem Anwendungsentwickler eine Menge Arbeit ab und sorgen dafür, dass dieser sich nicht auf Infrastruktur konzentrieren muss, sondern die Anwendungslogik im Vordergrund steht. Doch was genau tut so ein Web-Framework eigentlich? Dieser Artikel zeigt, was heutige Web-Frameworks leisten und wo diese sich dann doch in Nuancen unterscheiden.

Link

When Option is not good enough

Link

Codepancake Spotlight 51: Introducing senior consultant Silvia

Blog Post

Horizontal automation – a waste of time.

Automation of server administration tasks is a waste of time.

Blog Post

Web Scraping

This blog post provides examples how to implement web scraping using HtmlUnit, Selenium, ui4j or jaunt and compares them.

Blog Post

git pull gotchas

Podcast

Redis in der Praxis

Überblick und praktischer Einsatz des schnellen Datenstruktur-Servers

Blog Post

iOS: Writing to Core Data in your Today extension

This blog post gives guidance on how to propagate changes in Core Data made by a Today extension to the host app and handle them properly.

Link

JAX TV: Technologie-Trends jenseits von Java

Blog Post

Auto Layout in iOS: How to avoid the common mistake

Creating and adding new views using Auto Layout often results in missing views when running the app because the flag that determines whether a view’s autoresizing mask is translated into Auto Layout constraints has not been turned off for each new view. This blog post provides a solution on how to never run into this situation again.

News

W-JAX 2015 mit Web-Anwendungen, Microservices und REST 2015

Blog Post

Play 2.4 with Guice and MyBatis

News

Informatica Feminale 2015 in Bremen und Furtwangen

Blog Post

Reliable Web Clients

Microservices can make teams and systems more independent but also more vulnerable to the fallacies of distributed systems. Initially I thought this blog post is going to be about how to build reliable web clients with Akka and Akka Persistence. While this is an interesting topic by itself, I now think it is more crucial to first understand the underlying problems and trade-offs before we learn how to get around them.

Article

Bessere Web-Apps mit HTML5-APIs

Pimp my Browser

Podcast

Erlang/OTP

Eine Programmiersprache für non-stop laufende Systeme

Blog Post

Declarative HTTP API Testing with gabbi

While HTTP APIs are ubiquitous these days, testing and documenting such APIs remains somewhat awkward: Tests usually consist of procedural code that is specific to the respective language or even framework - which is neither very expressive nor easy to maintain.

Article

Batch-Computing in Java

Lieber mit Batch-Framework

Link

Put your writes where your master is

News

Microservices, Internet of Things und RxJava beim Java Forum Stuttgart

Blog Post

A day full of Clojure - organizing the first German ClojureBridge workshop

Blog Post

Per request debugging with Log4j 2 filters

Customers quite regularly call on me to support them when an application is not behaving as expected. On a development machine there are a lot of ways and utilities to analyse the situation. But troubleshooting the erroneous application behaviour in production environments quite often limits your tool belt to a minimum.

Podcast

Twelve-Factor App: Web-Applikationen auf die neue Art

Ein Ansatz für skalierbare, portable und leicht deploybare Web-Applikationen in der Cloud

Article

Rails gegen Grails

Webframeworks für JVM-Sprachen

Blog Post

Using Vector Assets on iOS

Vector graphics provide numerous advantages, especially when developing for mobile devices in a constantly expanding array of different screen sizes and pixel ratios.

Blog Post

Functional Validation in Scala

Validation is something everybody needs eventually when working with domain models. The Scala ecosystems offers a wide rage of tools which can be used for this purpose. This blog post introduces some of the most common approaches by applying them to a domain model.

Blog Post

Docker images for developers

Blog Post

Play Anwendungen mit Docker & AWS Beanstalk in die Cloud bringen

Für skalierbare Webanwendungen bietet sich die Kombination aus zustandslosen, requestbasierten Webframeworks und einem automatisch skalierendem Cloud Deployment an. In diesem Post betrachten wir konkret Play in Kombination mit Amazons Elastic Beanstalk und Docker.

Blog Post

Frontend Dependency-Management in Rails

Im letzten Blogpost über Bower sind viele Gründe für die Verwendung eines Dependency-Management Tools für Frontend-Komponenten genannt worden. Dieser Artikel soll dort anknüpfen, wo der letzte aufgehört hat, und eine Reihe von Möglichkeiten aufzeigen, mit denen Bower in ein fremdes Ökosystem integriert werden kann. Denn in der Regel trifft ein Webframework wie Ruby on Rails oder Play! eigene Vorgaben darüber wie Frontend-Artefakte von einer Webanwendung verwaltet und ausgeliefert werden. Im Folgenden wird Rails als populärer Vertreter eines Webframeworks für einige dieser Integrations-Strategien herhalten.

Blog Post

Frontend Dependency-Management mit Bower

Blog Post

Eureka Provisionierung mit AWS CloudFormation

In einer Microservice-Architektur muss dafür gesorgt werden, dass die einzelnen Services miteinander kommunizieren können. Eine Möglichkeit hierfür ist der Einsatz einer Service Registry. In diesem Post betrachten wir wie man mit Hilfe von AWS CloudFormation Eureka als ausfallsichere Service Registry in der Amazon Cloud provisioniert.

Link

Interview zum Thema Microservices mit Clojure

Article

Logging konsolidieren und Performance gewinnen

Performance, Durchsatz und Integrität

News

microxchg 2015 - Die Microservices Konferenz in Berlin mit innoQ-Beteiligung

Article

Von Markdown zu Published

Im Jahr 2012 begann innoQ, mit der Published-Reihe ein jährlich zu Weihnachten erscheinendes Buch herauszugeben, welches die Artikel von Mitarbeitern des vergangenen Jahres beinhaltet. Wurden die ersten beiden Ausgaben noch von einer Agentur per Hand erstellt, haben wir uns für 2014 das Ziel gesetzt, eine eigene Pipeline zu bauen, mit der das Buch erstellt werden kann. Dieser Artikel beschreibt nun den Aufbau und die Arbeit an der Pipeline und hinter der dritten Ausgabe von Published.

Article

Ruby on Rails wird zehn Jahre alt

Zum Geburtstag: Queueing, Performance und Fremdschlüssel

Podcast

Ruby on Rails

Das Full-Stack-Web-Framework

Article

Grenzenlose Freiheit?

„Die Grenzen meiner Sprache bedeuten die Grenzen meiner Welt“, stellte schon Ludwig Wittgenstein fest. Auch wenn zwei Programmiersprachen Turing-vollständig sind und somit die gleichen Probleme lösen können, beeinflussen ihre Eigenschaften dennoch die Art und Qualität der Problemlösung. Mit der JVM steht uns heute eine Plattform zur Verfügung, bei der wir für jedes Problem die am besten geeignete Sprache wählen können. Auch wenn sich prinzipiell jede JVM-Sprache mit jeder anderen kombinieren lässt, gibt es einige Stolpersteine. In diesem Artikel wollen wir analysieren, wie gut sich Clojure mit Java verträgt.

Article

Attribut-basiertes Testen mit Scala

Wo hilft funktionale Programmierung bei der Automatisierung von Testaufgaben

Article

Ceylon auf der JVM und node.js

Kaum zu glauben, Gavin King und die Entwickler Community rund um Ceylon haben ihr Vorhaben durchgezogen und sind mit einem produktionsreifen Release der neuen Programmiersprache Ceylon an den Start gegangen. In diesem Artikel werden die Sprache und das Ökosystem von Ceylon dargestellt.

Article

Die Renaissance von Erlang

Vergleicht man die Geschichte von Erlang mit der von anderen Sprachen, so ist diese sicherlich keine die man besonders laut erzählen würde. Nicht weil man sich dafür schämt, im Gegenteil. Erlang hat einen vorbildlichen und erfolgreichen Weg hinter sich. Die Sprache ist jedoch aufgrund mangelnder Popularität funktionaler Programmiersprachen, nebst sämtlichen Hypes rund um die Objektorientierung, meist abseits des Rampenlichts gestanden. Wendet man jedoch den Blick nach vorne und schaut sich aktuelle Trends in der IT an, so sieht man den Anstieg der Beliebtheit funktionaler Sprachen.

Podcast

Vom Dasein eines Apache Software Foundation-Mitglieds

Software für die ganze Welt

Article

Domain-Driven Design in Clojure

Obwohl DDD meist im Zusammenhang mit Objektorientierung genannt wird, sind die Prinzipien auch gut mit einer funktionalen Sprache umsetzbar. Eine Einführung in Clojure, dem Lisp für die JVM, bietet beispielsweise 1 2 3.

Podcast

Sicherheit von IT-Systemen

Allgemeine Aspekte der IT-Sicherheit und der Web-Sicherheit im Speziellen

Podcast

Graphdatenbanken

Vor- und Nachteile graphbasierter Datenbanken

Article

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.

Link

Developing Modular JavaScript Components

Podcast

Play!

Das Full Stack Web-Framework auf der JVM

Podcast

Modern Batch

Zeitgemäße Architekturen zur Massendatenverarbeitung

Podcast

Scala

Was die objektorientierte, funktionale JVM-Sprache in der Praxis bringt

Podcast

Clojure

Ein pragmatisches Lisp auf der JVM

Article

Micro-Cloud mit Cloud Foundry

Bereits in 1 haben wir mit Red Hat OpenShift Express einen Plattformdienst für Java-Anwendungen vorgestellt. Nun, ein Jahr später, haben wir mit Cloud Foundry ein anderes Angebot herausgepickt und stellen vor, warum es sich lohnt, auch dieses anzuschauen.

Article

Rubies are forever

Der 24. Februar 2013 markiert nicht nur die Freigabe der Version 2.0 der Programmiersprache Ruby, sondern zugleich auch ihr 20-jähriges Bestehen. Am

Article

Apache Buildr

Die Mavenalternative?

Article

Java-Programme mit Clojure würzen

Wenn jemand vor etwa acht Jahren in einem Java-Projekt vorgeschlagen hat, gewisse Teile in einem Lisp-Dialekt in der JVM zu realisieren, fiel dabei zumeist das circa 98 KB große JScheme. Heute hingegen bricht man in dem Fall durchaus die Lanze für Clojure, dem Lisp auf der JVM. In diesem Beitrag wollen wir anhand von Incanter exemplarisch zeigen, inwieweit sich die Kombination von Clojure und Java lohnt.

Article

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.

Article

Domain Specific Languages

Interne DSLs: Programmiersprachen in Programmiersprachen einbetten

Article

„Infrastructure as Code“ mit Chef

Ein typischer erster Arbeitstag in einem neuen Projekt: Es handelt sich um ein ganz „gewöhnliches“ Java-EE-Projekt. Ich bekomme Zugangsdaten für eine Versionsverwaltung und ein Wiki-System. Ich habe Glück, der Code lässt sich sofort bauen. Nun würde ich meine nagelneuen Artefakte gerne deployen und in Aktion sehen. Das bedeutet zunächst: Wiki-Seiten wälzen. Dort finde ich Verweise auf den verwendeten Application-Server und Fragmente für die Konfiguration. Ich wühle mich also durch die Downloadseiten des Herstellers, um die korrekte Version zu finden, und editiere dann die Konfigurationsdateien. Für die verwendete Datenbank bekomme ich vom Kollegen ein Image für eine Virtualisierungssoftware. Allerdings, so warnt er mich, müsse ich einige Schemaänderungen noch per Hand nachpflegen. Etwas später habe ich die Migrationsskripte gefunden und führe sie aus. Per Hand deploye ich die neuen Artefakte und es entstehen merkwürdige Fehler. Die Fehlersuche mit dem Kollegen offenbart, dass ich noch einige obligatorische Verzeichnisse anlegen muss und die Konfigurationsdateien aus dem Wiki nicht ohne Änderungen zu der Datenbank im Image passen. Schlussendlich bin ich in der Lage, das Projekt zum Laufen zu bringen. Aber ob mein System wohl identisch mit dem des Kollegen ist? Oder der Testumgebung? Oder der Produktion? Und mit wie viel Aufwand für den Aufbau einer weiteren Staging- Umgebung muss man rechnen?

Article

Clojure — in der Praxis?

Von Andy Hunt und Dave Thomas stammt der Rat, jedes Jahr eine neue Programmiersprache zu lernen, um nicht einzurosten. Und die Anhänger dieser Philosophie können sich zur Zeit glücklich schätzen: An neuen oder wiederentdeckten Programmiersprachen herrscht wirklich kein Mangel. Die große Mehrheit der Entwickler jedoch steht dem Thema deutlich skeptischer gegenüber. In diesem Artikel wollen wir am Beispiel von Clojure näher beleuchten, welche Gründe es gibt, sich mit neuen Programmiersprachen auseinanderzusetzen. Viele der Argumente sind Clojure-spezifisch, andere lassen sich auch auf andere Sprachen übertragen, insbesondere wenn diese — wie JRuby, Scala oder Groovy — auch auf der JVM lauffähig sind. Vorab: Natürlich gibt es diverse Nachteile, die ganz allgemein mit der Einführung einer neuen Sprache zusammenhängen, und jede Sprache hat auch ihre eigenen spezifischen Schwächen. Diese blenden wir in den nächsten Absätzen einfach einmal aus. Denn erstens kennen Sie diese Nachteile wahrscheinlich schon und zweitens ist unsere Motivation natürlich völlig klar: Wir sollen Sie motivieren, neue Sprachen ernstzunehmen und nicht zu ignorieren. Nachdem die „hidden agenda“ nun nicht mehr so versteckt ist, auf ans Werk!

Article

NoSQL - Einsatzgebiete für die neue Datenbank-Generation

Sie haben die Wahl!

Link

Fantastische Formulare - Formulare endlich einfach

Link

Die Java Persistence API