Focus

Java

Articles, podcasts, talks, and more about Java.
Blog Post

Features für einen schnelleren JVM-Start

In diesem Artikel wollen wir uns mit dem Kritikpunkt der langsamen Startzeit der JVM beschäftigen. Dazu schauen wir uns an, was eigentlich beim Start passiert und mit welchen schon vorhandenen oder in Zukunft kommenden Features die Startzeit verbessert werden kann.

Blog Post

Why not scatter @Transactional everywhere?

@Transactional — great when you know when not to use it. Use it consciously instead of sprinkling it everywhere!

Blog Post

Was, da geht noch mehr? Noch mehr Besonderheiten von und mit Java

Blog Post

Menschenlesbare Datenformate mit Jackson verarbeiten

Wir nutzen tagtäglich Datenformate. Zum Austausch von Informationen mit anderen Systemen oder auch zur Definition von Dingen wie unserem Build oder zur Konfiguration unseres Systems. Manche davon sind binär, aber auch viele bis heute direkt von Menschen lesbar. Für die Verarbeitung von JSON in Java hat Jackson eine hohe Verbreitung erreicht. Aber Jackson kann mehr als nur JSON, wie wir in diesem Artikel sehen werden.

Blog Post

Spring Boot Actuator Endpoints

The Actuator module has been promising to help make the application ‘production-ready’ since the start of Spring Boot. But what exactly does that mean? What does the module already offer and how can we expand it? This article provides detailed answers to all these questions.

Blog Post

Always up to date

The Class-File API for programmatic handling of bytecode

Blog Post

Building Standardized AI Tools with the Model Context Protocol (MCP)

In this article, we’ll explore the integration of Large Language Models and systems built on top of them. The key concept in this space recently is the Model Context Protocol (MCP).

Blog Post

LLMs mit Spring AI integrieren

Die gesamte Welt spricht aktuell über Generative KI und Large Language Models (LLMs). Und auch wenn ich persönlich das Thema aktuell als zu sehr gehypt empfinde, sollten wir solche Trends nicht komplett verschlafen. Daher zeigt dieser Artikel, wie sich LLMs mit Spring AI integrieren lassen.

Blog Post

Use webjars-locator-lite with internal WebJars

Blog Post

Java and its annotations

Java code without annotations is hardly conceivable nowadays, even though it is constantly criticized. It’s hard to believe that there was a time before them. Three use cases demonstrate how these problems were solved before the introduction of annotations and how things could work without them today.

Blog Post

Spring Boot und explodierte JARs

Auf den ersten Blick scheint das Starten von Spring-Boot-Anwendungen nicht sehr schwer zu sein. Ein Aufruf von java -jar my.jar reicht dafür. Doch wie genau funktioniert das eigentlich? Und wie lässt sich die Softwareverteilung effizienter gestalten? Dieser Artikel beantwortet diese beiden Fragen und nimmt Sie dabei mit auf eine Reise durch die Geschichte von Spring Boot.

Blog Post

Ist das Spring RestTemplate wirklich Deprecated?

Das Mysterium um Springs RestTemplate in 3 Akten

Blog Post

Type-safe SQL queries in Java and Rust

In recent years, our industry has been in favour of strong typing and build-time verification to make certain classes of bugs impossible. How much influence has this trend had on how we can write SQL queries in Java? Let’s look at how typesafe SQL queries can be in Java, how this compares to what you can do in Rust, and consider the benefits and drawbacks of these different approaches.

Blog Post

Type-safe HTML templates in Java and Rust

The current fashion in our industry is to use static and strong typing wherever possible. How fashion-conscious is the Java community when it comes to HTML templating, though? Let’s have a look at what approaches at type-safe or build-time verified HTML templating are available in the Java ecosystem, how they compare to what’s available in Rust, and whether the benefits outweigh the costs.

Blog Post

Type-safe HTTP routing in Java and Rust

The Type-Safe Web Stack, Part 1

Blog Post

Was ist eigentlich htmx?

Nicht nur, aber vor allem im JVM-Umfeld stößt man in letzter Zeit immer wieder auf die Bibliothek htmx. Das Versprechen von htmx ist dabei nichts Geringeres, als das fehlende Puzzlestück von HTML zu sein. Deswegen wollen wir uns hier diese Bibliothek im Detail anschauen. Schließlich sollten wir in der Lage sein zu beurteilen, ob es uns in unseren Projekten hilft oder ob wir doch nach etwas anderem suchen sollten.

Blog Post

Automating Dependency Updates with Renovate

Regardless of whether we are working on an application or a library, we always have to deal with dependencies. We are dependent on the version of our programming language, on external or internal libraries, and on tools. In addition to the actual administrative tasks, it is also necessary to update these regularly. Even beyond performing the update itself, this means we need to learn when a new version exists. That’s why this article examines a bot-based solution that can help us with this exact issue.

Blog Post

Extending the OpenTelemetry Java Agent for Spring Auto-Instrumentation

Blog Post

Zukünftige Features des JDK

Ich weiß nicht, wie es Ihnen geht, aber seitdem mit JDK 9 der Release-Zyklus des JDK auf sechs Monate verkürzt wurde und wir mittlerweile, dank Preview und Incubator, auch Features bereits vor der vollständigen Fertigstellung ausprobieren können, wirkt das JDK lebendiger als eh und je. In diesem Artikel wollen wir deswegen einen Blick in die Zukunft werfen und uns aktuelle Preview-Features anschauen, die es vermutlich in naher Zukunft final ins JDK schaffen werden.

Blog Post

Rate Limiting with Spring Boot, Bucket4j, and Redis

Let’s implement rate-limiting protection for multiple Spring Boot server instances using bucket4j and redis to have the solution on application level.

Blog Post

Rate Limiting with Spring Boot

Blog Post

Lokale LLMs mit Ollama und Spring AI nutzen

Egal, ob wir wollen oder nicht, um AI und speziell Large Language Models (LLM) kommen wir aktuell nicht herum. Mich schrecken solche Hypes zwar aus Reflex eher ab. Allerdings sieht es so aus, als würde von diesem Hype mehr bleiben als vom letzten, der Blockchain. Deshalb wollen wir uns in diesem Post einmal anschauen, wie man ein LLM lokal aufsetzen kann und dieses mittels Spring AI in eine Spring Boot-Anwendung einbinden kann.

Blog Post

Rooting Out Issues: JPA and Lombok Combination Problems Demystified

Ever encountered perplexing issues with JPA and Lombok’s @Data annotation when handling entities in Java? This blog post explores unexpected behaviors, especially with auto-generated IDs, in conjunction with equals and hashCode methods. Learn about identity and uncover how you can resolve these challenges forever.

Blog Post

Automated code maintenance with OpenRewrite

Part 1

Blog Post

JDK 21, the next long-term support release

The newest JDK release, version 21, appeared on September 19th. A number of developers view it as a long-term support release that will be supported for at least the next five years. As many applications will presumably be updated to version 21 from JDK 17, the last long-term support release, we would like to take this opportunity to examine the relevant changes from 17 to 21.

Blog Post

Containers for tests and local development with Spring Boot 3.1

Spring Boot 3.1.0, the most recent minor release of Spring Boot 3, appeared in May. In this article, we will be taking a look at how the new support for Testcontainers and Docker Compose can help us with tests and local development.

Blog Post

Testing in Spring Boot applications

Slice it up, please

Podcast

Java 21

Alles zum neuen LTS-Release

Blog Post

Property-based Testing with “fast-check”

It isn’t exactly news that developers have to write not only code but also tests. Nevertheless, many find this to be burdensome and monotonous work. Plus, it is far from guaranteed that unit tests actually cover all the border and non-border cases. A modern approach is property-based testing, which consists of specifying an abstract condition that is then automatically checked by the test framework.

Blog Post

How to Encrypt a File on the JVM

Blog Post

Tracing in verteilten Anwendungen

Nicht nur, aber auch durch die DevOps-Bewegung machen sich Teams heute neben der Fachlichkeit vermehrt Gedanken um den Betrieb ihrer Anwendungen. Ein großes Thema ist hierbei Observability, also einen Einblick in den aktuellen Zustand des Systems zu haben. In dieser Kolumne betrachten wir mit Tracing einen der drei Bereiche von Observability und lernen anhand eines konkreten Beispiels, wie wir diesen umsetzen können.

Blog Post

Automated code maintenance with OpenRewrite (Part 2)

In part 1 of this series, I showed how OpenRewrite can be used to automate code maintenance tasks for software development projects in your organisation. In this post, I will demonstrate how to write your own OpenRewrite refactoring recipe. This will not only help you to perform refactoring tasks for which no recipe is publicly available, but will also deepen your knowledge and understanding of how OpenRewrite works under the hood.

Blog Post

Automated code maintenance with OpenRewrite (Part 1)

Blog Post

Diverse Themen und Bibliotheken für Tests in und mit Java

In diesem Artikel betrachten wir bunt gemischt diverse Themen und Bibliotheken rund um Tests für und mit Java. Dabei folgen wir keinem roten Faden, sondern lassen uns durch das übergreifende Thema treiben.

Blog Post

Logging in Java

Logback, Log4j, SLF4J, and many more. Anyone working with automatic logging in Java will immediately come across an entire range of libraries that, at first glance, seem to do the same thing: issue log messages. So, in this article, we want to look at why there are so many libraries in Java and how they actually differ from each other upon closer inspection.

Blog Post

Marktanalyse

Supermarkt-Apps und -APIs seziert

Blog Post

Querying DNS and LDAP Using JNDI

The Log4Shell vulnerability has also placed JNDI in the spotlight. Although JNDI has been around since 1997, many developers have never heard of it or don’t know exactly what it’s for. To change this, in this article we’ll look at what JNDI is and how we can use it.

Blog Post

Processing JSON in Java

In contrast to many other programming languages, JDK for Java does not provide an out-of-the-box solution for the reading and writing of data in JavaScript Object Notation (JSON). So we have to find a suitable library for performing this task. In this article we therefore look at a selection of appropriate libraries.

Blog Post

Libraries for command-line applications

Processing arguments and options in Java

Blog Post

Iterierst du noch, oder streamst du schon?

Worin unterscheiden sich Streams und Iteratoren in Java? Man sollte denken, dass beide Ansätze dafür gedacht sind, Dinge wiederholt auszuführen, und dass Streams nur eine komfortablere Art und Weise sind, den Algorithmus auszudrücken. Die beiden APIs unterscheiden sich aber in mancher Hinsicht. Ziel dieses Artikels ist es, die beiden Ansätze zu vergleichen – zum einen mit Blick auf die Ergonomie eines Beispiels, zum anderen auf funktionale Unterschiede bei der Parallelisierung und Mutabilität.

Blog Post

A Comparison of Java HTTP Clients

In addition to databases, communication via HTTP to other services is nowadays found in almost every project. A large number of libraries have been built within Java that can be used for this purpose. In this article we will take a closer look at four of these candidates and see in which aspects they differ from one another.

Blog Post

The Way of the Request

Tracing a request through Play 2.7/2.8

Blog Post

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.

Blog Post

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.

Blog Post

Widerstandsfähigen Java-Code mit Resilience4j schreiben

Stabilitätsmuster in Java

Blog Post

Using feature flags with FF4j, Togglz, and Unleash in Java

Feature flags are now a fixed feature of many projects. In this column we will consider which problems can be resolved with their use. In addition to the theory, we also look at the three Java libraries FF4j, Togglz, and Unleash, with which feature flags can be used in Java.

Blog Post

Progressive Enhancement with Hotwire

A REST-based backend with a JavaScript monolith on top – that’s todays de-facto standard for web applications. With Hotwire you can build much more lightweight web applications, that both inherit the advantages of SPAs and avoid their disadvantages. In this blog post we’ll give an overview of Hotwire.

Blog Post

Pragmatic RESTful HAL APIs

Kitchen Tricks and Tips

Blog Post

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.

Blog Post

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.

Blog Post

Cookie-based Spring Security Session

Blog Post

Modernes funktionales Programmieren in Java

Erfahrene Java-Entwickler*innen können viele der Entwurfsmuster des „Gang of Four“-Buches aus dem Stand zitieren, identifizieren und anwenden. Trotzdem stehen diese praktisch seit der Erscheinung des Buches unter Kritik: da sie teils vage definiert sind, strotzen „moderne“ Codebasen nur so von Singletons, Factories und Buildern. Auf der anderen Seite stehen die Anhänger*innen der funktionalen Programmierung, die sich gerne über die objektorientierten Patterns lustig machen. Die Wahrheit liegt wie so oft in der Mitte: seit Version 8 lassen sich auch in Java die cleveren Gedanken aus der funktionalen Welt effektiv und komfortabel benutzen, ohne die Objektorientierung aufzugeben.

Blog Post

JSX-Komponenten mit Java nutzen

Die Bedeutung von Oberflächen beziehungsweise der Benutzbarkeit von Software im Allgemeinen hat in den letzten Jahren, zurecht, wieder vermehrt an Bedeutung gewonnen. Bei der Entwicklung von Weboberflächen in Microservice-Architekturen besteht hierbei die Herausforderung, teamübergreifend eine durchgehend passende Nutzererfahrung, insbesondere durch ein konsistentes Look & Feel, zu erzeugen. Diese Kolumne stellt einen möglichen Weg vor, um genau dies zu erreichen.

Blog Post

Dynamische Proxys mit dem JDK umsetzen

Der dynamische Stellvertreter

Blog Post

Das eierlegende Truffleschwein

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 Startup-Overhead weg, da weite Teile der Initialisierung bereits vom Compiler erledigt werden. Doch das ist bei weitem nicht das einzige Feature, welches Oracle der GraalVM gegeben hat. Hinzu kommt, dass die GraalVM zu nicht weniger das Potential hat als eine neue Ära der polyglotten Programmierung auf der JVM einzuläuten. Die Rede ist von der Truffle API, einem generischen Framework zur Implementierung von Interpretern.

Blog Post

Was ist die Magie von Spring Boot?

Spring Boot wurde entwickelt, um uns bei der Entwicklung von Spring-Anwendungen Arbeit und Entscheidungen abzunehmen. In der Praxis funktioniert dies so gut, dass häufig das Wort Magie verwendet wird. Die Verwendung dieses Wortes deutet jedoch auch darauf hin, dass wir nicht mehr wirklich verstehen, was dort vor sich geht. Genau dies möchte ich mit diesem Artikel angehen und dazu einen Einblick geben, wie Spring Boot funktioniert.

Blog Post

Warum Quarkus.io _nicht_ geiler ist als Spring

Blog Post

An Introduction to TypeScript

An ongoing architecture trend towards smaller services and faster, agile feature development gives developers some freedom to try out new languages and frameworks. TypeScript and Node seem to have a bad reputation amongst some backend developers although the language can be a perfect fit for many challenges in modern software development.

Blog Post

What Could Possibly Go Wrong

What could possibly go wrong if you put Clojure 1.10 and Scala 2.13 on the same classpath? We’re about to find out.

Blog Post

JUnit5 für das Testen von Spring Boot-Anwendungen

Das perfekte Doppel

Blog Post

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.

Blog Post

Integrating Logback with JLine

Logback is a popular logging library for Java. JLine can be used to create nice shell-like applications. Combining both is not as hard as it looks.

Blog Post

Die GraalVM: Javas Sprung in die Gegenwart?

Eine polyglotte Alternative für die Java Virtual Machine

Blog Post

Hadoop - Taming the Elephant (With a Whale)

In diesem Artikel wird der Inhalt des Vortrags “Hadoop - Taming the Elephant (With a Whale)” zusammengefasst. Er bietet einen Einstieg in die Welt von Hadoop und praktische Beispiele.

Blog Post

Parametrizität in Java

So gut wie alle modernen Programmiersprachen erlauben es, Routinen über Werte und über Typen zu parametrisieren. In Java wird letzteres “Generics” genannt, in C++ hingegen “Templates”. Obwohl die Konzepte die gleichen sind, unterscheidet sich die Implementation doch stark. In diesem Artikel möchte ich diese Art der Parametrisierung in Java unter die Lupe nehmen und erklären, warum “Type Erasure” doch eine ganz gute Idee ist.

Blog Post

Zeitreise mit LocalDate und DateTimeFormatter

Die Krux mit den Patterns

Blog Post

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.

Blog Post

Java-Bibliotheken für den Einsatz in Tests

In den meisten Projekten entfällt ein nicht gerade kleiner Anteil des Codes auf Tests. Für diesen Testcode sollten dieselben Regeln wie für Produktivcode gelten. Neben dem Achten auf Verständlichkeit und Wartbarkeit gehört auch das Erschaffen von Abstraktionen und das Vermeiden des Not-invented-here-Syndroms durch den Einsatz von passenden Bibliotheken dazu. Dieser Artikel stellt sechs Bibliotheken vor, die sich im Einsatz als praktisch und hilfreich erwiesen haben.

Blog Post

Generierung von Regressionstests für Legacy-Code

Testfälle auf Knopfdruck?

Podcast

Spring Boot 2

Softwareentwicklung im Spring Ökosystem

Podcast

Java by Comparison

Vorher/Nachher-Vergleiche zu Clean Code in Java

Blog Post

Einsatz von Containern zum Testen

Testcontainers in JUnit-Tests verwenden

Blog Post

Blockchain hausgemacht

120 Mitarbeiterinnen und Mitarbeiter bauen eine Blockchain in 12 Sprachen. Bei INNOQ veranstalten wir jedes Jahr einen so genannten Hands-On-Event. Dieser ist Teil unserer regulären Mitarbeiter-Events und findet typischerweise im Frühjahr statt. Wir treffen uns alle für zwei Tage an einem Ort und versuchen mit der Programmiersprache unserer Wahl in Gruppen eine definierte Aufgabe zu lösen. Optimal also, um neue Sprachen und neue Kolleginnen und Kollegen in Gruppenarbeit kennenzulernen. Die Aufgabenstellung lautete in diesem Jahr: Baue eine Blockchain!

Blog Post

Native Clojure with GraalVM

The newly-released GraalVM changes the status quo in the realm of JVM-based programming languages. In this instalment we’ll explore its impact on Clojure. We’ll start small, but by the end we’ll compile an entire Ring web application into a self-contained native binary.

Blog Post

Spring-less testing

Blog Post

Oracles GraalVM für „Native Java“?

Vor Kurzem wurde von Oracle die GraalVM in der Version 1.0.0-rc1 released. Und für mich als großer Scala- und Docker-Fan ging die Sonne auf.

Blog Post

Domain Exceptions?

In jedem Softwaresystem kommt es zu Ausnahmesituationen. In der Regel handelt es sich um technische Ausnahmen, die in Java als Exceptions auftreten und behandelt werden. Gibt es aber auch fachliche Ausnahmen, also quasi “Domain Exceptions”? Und ist es sinnvoll, diese in Java als Exceptions zu modellieren? Einige Beispiele aus einem Kundenprojekt zeigen, dass dies häufig nicht der Fall ist.

Blog Post

Java 10 – Evolution statt Revolution

Die Zukunft von Java

Podcast

Java 10

Die neuen Features im Überblick

Blog Post

Domain- und Test-driven Development mit Spring Boot 2 Softwarearchitektur

Am Anfang eines Projektes wird heutzutage in der Regel Wert auf Tests gelegt. Projekte werden sogar testgetrieben aufgesetzt (Test-driven-development, TDD). TDD-Projekte der reinen Lehre schreiben vor, dass vor jeder Zeile Anwendungscode der entsprechende Testcode geschrieben werden muss. Schleicht sich Stress ein oder lässt die Begeisterung nach, kann es passieren, dass das Thema Tests – obwohl wichtig – vernachlässigt werden. Das gilt umso mehr, je schwieriger Komponenten eines Systems zu testen sind, unabhängig, ob sie einzeln oder integriert betrachtet werden. Lesen Sie hier, wie Ihnen ein Domain-orientierter Ansatz zusammen mit Spring Boot 2 dabei hilft, Qualität sicherzustellen.

Blog Post

Health-Checks in Java-Anwendungen

Die Gesundheit immer im Blick

Blog Post

Wer braucht denn noch die JVM?

In der neuen cloudbasierten Containerwelt erscheint die JVM plötzlich als groß und schwerfällig. Die Beliebtheit von Go gibt einen Hinweis darauf, dass es Zeit ist, sich nicht nur mit der nächsten Sprache für die JVM zu beschäftigen, sondern auch mit anderen Konzepten insgesamt.

Podcast

Kotlin

Eine Alternative zu Java?

Blog Post

Command Line Interfaces in Java

Auf Kommando

Blog Post

Implementierung einer einfachen Zustandsmaschine (state machine) in Java

Eine simple Zustandsmaschine (state machine) in Java

Blog Post

Spring Boot für Microservices

Die Implementierung von Microservices stellt im Vergleich zu monolithischen Anwendungen Entwickler vor einige Herausforderungen. Spezialisierte Technologien wie Spring Boot unterstützen die Umsetzung von Microservices und machen so den Projekten das Leben leichter.

Blog Post

Horden von Zombies

Wenn es um die Wurst geht

Blog Post

Features in Java 9

Passend zum Schwerpunktthema “Java – die Neunte” dreht sich auch diese Kolumne um Neuigkeiten, die uns mit Java 9 zur Verfügung gestellt werden. Da sich den großen neuen Themen wie Jigsaw, JShell und HTTP/2 in diesem Heft eigene Artikel widmen, stelle ich Ihnen ein paar der vielen weiteren, jedoch deutlich kleineren Neuerungen vor. Freuen Sie sich also auf ein buntes Sammelsurium.

Blog Post

Deployment und Monitoring von Microservices

Beim Deployment von Microservices verschwimmen die Grenzen zwischen Mikro- und Makroarchitektur. Während das Team die Mikroarchitektur für jeden Service individuell entscheiden kann, muss man sich bei Makroarchitektur-Themen mit anderen Teams zusammensetzen, um die beste Lösung für Themen zu finden, die mehrere Services betreffen. In diesem Artikel wollen wir uns ansehen, welche Entscheidungen ein Team für sich treffen kann und welche mit anderen Teams abgestimmt werden müssen. Zu diesem Zweck möchte ich beispielhaft den Lernprozess beschreiben, den ich in Teams erleben durfte, die “einfach mal” mit Microservices angefangen haben.

Blog Post

Zwei Jahre nach dem Tod der Java Application Server

Leben Todgesagte länger?

Blog Post

Web Scraping mit PhantomJS-CEF

In Anlehnung an den Blogbeitrag von Martin Weck zu Beginn des Jahres, stellt Gastautor Andreas Knuth in diesem Artikel mit PhantomJS-CEF ein weiteres Tool vor, mit dem sich effizientes Web Scraping betreiben lässt.

Blog Post

Web Scraping

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

Blog Post

Hands-On Integration mit openHAB

Teil 7, Artikelserie „Smart Home“

Blog Post

Sicherheit und Datenschutz

Schon vor mehr als einem Jahr fragte sogar die Bild-Zeitung “Wie sicher ist das smarte Eigenheim”? Gestellt wurde diese Frage im Kontext der Übernahme von Nest - dem amerikanischen Hersteller smarter Raumthermostate - durch Google. Gemeint war hier allerdings weniger die Sicherheit im Sinne des Zugriffsschutzes, sondern vielmehr die der Privatssphäre. Seitdem hat sich die Situation eher verschlimmert denn verbessert. Der vorliegende Artikel erklärt warum und zeigt Lösungsmöglichkeiten auf.

Blog Post

Steuerung und Automatisierung

“Ein Smart Home ist ein per Smartphone oder Tablet bedienbares Heim” - dies ist eine gängige Definition, die allerdings viel zu kurz greift. Auch wenn die Steuerung das augenfälligste Merkmal ist, so ist die Automatisierung doch ein viel wesentlicherer Bestandteil.

Blog Post

Standards, Open Source und Forschung

Teil 4, Artikelserie „Smart Home“

Blog Post

Geräteabstraktion und ihre Schwierigkeiten

Für den Softwareentwickler ist ein Schalter nichts weiter als ein boolscher Wert. Doch bei der Programmierung von Smart-Home-Hardware ist fast jedes System bzw. Gerät unterschiedlich anzusteuern. Woran das liegt und was man dagegen tun kann wollen wir im folgenden Artikel näher untersuchen.

Blog Post

Marktüberblick über Systeme und Protokolle

“Bevor ich mich falsch entscheide, lasse ich es lieber gleich …” - ein häufig gehörtes Argument gegen das Smart Home. Richtig ist, dass der Markt schon jetzt unübersichtlich ist und sich das in Zukunft nicht verbessern wird. Wer allerdings die richtigen Fragen kennt, kann die Vielfalt einschränken und damit schließlich zu seiner Entscheidung kommen. In diesem Artikel stellen wir die wichtigsten Systeme vor und geben Entscheidungshilfen.

Blog Post

Heimautomatisierung und das Internet der Dinge

Teil 1, Artikelserie „Smart Home“

Blog Post

Play 2.4 with Guice and MyBatis

The Play Framework is getting more popular and Version 2.4 finally includes Dependency Injection as the default mechanism to access central resources instead of singletons. This blog post explores what is necessary to combine MyBatis with Play using its default DI Framework: Guice. Batteries (code sample) included!

Blog Post

Batch-Computing in Java

Auch heute noch gibt es Bedarf für die wohl älteste Form der elektronischen Datenverarbeitung. Dass Batch immer noch relevant ist, zeigt der junge JSR 352 für Batch-Verarbeitung in Java EE 7. In diesem Beitrag diskutieren wir verschiedene Fragestellungen, die im Zusammenhang mit der Modernisierung bestehender und Umsetzung neuer Batch-Prozesse auftreten, und gehen auf Strategien und Technologieauswahl ein, die bei der Implementierung von Batch in der JVM auftreten können.

Blog Post

Per request debugging with Log4j 2 filters

Blog Post

Rails gegen Grails

Das Angebot an Webframeworks ist üppig, allerdings durch natürliche Selektion und veränderte Ansprüche kleiner als noch vor ein paar Jahren. Die Optionen verringern sich, wenn eine dynamisch typisierte JVM-Sprache zum Einsatz kommen soll.

Blog Post

Docker images for developers

Docker seems to be all the rage lately. There are docker talks at every conference, hosting Docker containers has become a hosting option with most if not all PaaS providers, and there is hardly a technology left that is not supposed to run better and more flexibly if you wrap it in a Docker container. Well, except maybe for enterprise-level DBMSs, but you can’t have them all. This post provides an example how Docker can be used at the start of the software lifecycle, during development.

Blog Post

Play Anwendungen mit Docker & AWS Beanstalk in die Cloud bringen

Blog Post

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.

Blog Post

Wissen, was läuft

Mit gutem Logging kann man eine Menge über laufende Anwendungen oder gar Anwendungsverbunde erfahren. Eine entscheidende Einschränkung geht mit Logging einher: Logs sind nur ein Strom von eingetretenen Ereignissen. Um herauszufinden, wie gut eine Anwendung läuft, ist jedoch deren Zustand interessanter.

Blog Post

Durchbruch

Offene Plattformen verhelfen Smart Home zum Erfolg

Blog Post

Welten verbinden

Auch wenn inzwischen viele Voraussetzungen dafür geschaffen sind, dass sich der Smart Home Markt zum Massenmarkt entwickeln kann, sind noch längst nicht alle Probleme gelöst. Im Gegenteil, aufgrund der großen Fragmentierung haben die Nutzer häufig mehr Fragen als Antworten. Dieser Artikel soll dazu dienen, einige dieser Fragen zu klären und dabei eine Lösung an einem durchgängigen Beispiel vorzustellen.

Blog Post

Micro-Services in Java realisieren – Teil 2: Web-Apps in Docker-Umgebungen

In dem ersten Teil dieser zweiteiligen Reihe haben wir uns mit der Realisierung von Web-Apps mit dem leichtgewichtigen Framework DropWizard beschäftigt. In diesem Teil beschäftigen wir uns mit der offenen Plattform Docker. Damit lassen sich Umgebungen definieren und voneinander isolieren. Wie sich Docker von virtuellen Maschinen unterscheidet und was das für unsere Anwendungen bringt, stellt dieser Artikel vor.

Blog Post

Ceylon auf der JVM und node.js

Schwarzer Tee mit syntaktischem Zucker

Blog Post

Hystrix – to make your fuse blow just in time

Circuit breakers were originally introduced to prevent the escalation of an outage. If your fuse blows occasionally, that does not have to be a bad thing - at least if it is a circuit breaker in the sense of Hystrix. In this article we will introduce you to Hystrix, a library which will help you to increase the stability of your distrubted applications and which will help to prevent cascading error scenarios.

Blog Post

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.

Blog Post

Hystrix – Wider den Totalausfall

Quelloffene Leistungsschutzschalter für alle

Podcast

Wenn Systeme aus dem Ruder laufen

Mit Hystrix für stabile, verteilte Anwendungen sorgen

Blog Post

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.

Blog Post

openHAB auf dem Raspberry Pi

Heimautomatisierung für Geeks

Podcast

Play!

Das Full Stack Web-Framework auf der JVM

Blog Post

Reactive Extensions in Java

Reactive Programming ist ein datenflusszentriertes Programmierparadigma. In objektorientierten Programmiersprachen ermöglicht das Observer-Muster den Datenfluss entgegen der gewünschten Aufrufabhängigkeiten: Von einem Subjekt abhängige Beobachter werden automatisch über Änderungen dieses Subjektes informiert und können den aktuellen Zustand erfragen. Mit Reactive Extensions wird das Paradigma so ergänzt, dass sich leicht die parallele Verarbeitung von Daten implementieren lässt.

Podcast

Modern Batch

Zeitgemäße Architekturen zur Massendatenverarbeitung

Podcast

openHAB: Home-Automation mit Java

OSGi für das Internet der Dinge

Blog Post

Geschäftsprozesse vom Fließband

Während in Java-Projekten ein automatisierter Build heutzutage Standard ist, wird dies in Projekten, die auf BPEL oder BPMN aufsetzen, oftmals versäumt. Die Modellierungsumgebungen, wie in unserem Fall ActiveVOS, bieten nur rudimentäre Unterstützung für Build-Werkzeuge. Zudem gilt es viele Abhängigkeiten zu WSDL- und Schemadateien zu verwalten, die nicht in Maven, sondern in anderen Repositories versioniert sind. Wir stellen die Projektstruktur vor, die sich im Laufe unseres Projekts entwickelt hat und die es uns erlaubt, automatisiert alle Projektartefakte inklusive unserer ausführbaren Geschäftsprozesse zu paketieren und zu verteilen.

Blog Post

Java – Funktional ohne Zauberei

Totally Lazy

Blog Post

Apache Buildr

Die Automatisierung der Buildprozesse ist eine feine und wichtige Sache. In der Regel freut man sich, wenn ein Projekt Apache Maven verwendet und man dank der Konvention das Projekt sofort bauen kann. Doch mit der Zeit stellt sich in der Regel Ernüchterung ein. Der Build schlägt plötzlich fehl, weil ein Artefakt nicht mehr in den bekannten Repositories gefunden werden kann, die Ergebnisse sind nicht exakt reproduzierbar oder für eine kleine Erweiterung des Prozesses müssen erst aufwendig Plug-ins entwickelt und verteilt werden. Muss das so sein? Apache Buildr hat sich zu einer mächtigen Alternative entwickelt, in dem es den deklarativen Ansatz von Maven mit dem imperativen einer Skriptsprache kombiniert.

Blog Post

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.

Blog Post

BPMN und Camel

Gemeinsam sind wir stark

Blog Post

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.

Blog Post

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.

Blog Post

Clojure — in der Praxis?

Programmiersprachen und ihre Rolle für die Anwendungsentwicklung

Case Study

Beyond by Breuninger: Deutschlands ältestes Loyalty-Programm wird digital

Case Study

HILFE FÜR JUNGS (“Help for Boys”): Reliable software for mobile consultations

News

INNOQ Technology Night am 22.06. in Hamburg

News

Voxxed Days Berlin 2016

News

Berlin Expert Days 2015

News

Informatica Feminale 2015 in Bremen und Furtwangen

News

Microservices, Internet of Things und RxJava beim Java Forum Stuttgart