Focus

java

Talk
Talk

Let’s Test That Real Quick

Java Vienna June 2022 / 18:30 - 19:30

Article

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.

Article

Processing JSON in Java

An Introduction to 4 JSON Libraries for Java

Article

Libraries for command-line applications

Command-line applications are admittedly not the most common due to the start time of the JVM. Their development for internal applications can however be appropriate, depending on the level of knowledge of the team. And thanks to the native compiling with GraalVM, the start time is accelerated. Much of the work involved in a command-line application involves parsing and use of the provided arguments and options. We look at four possible libraries that can assist us.

Article

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.

Article

A Comparison of Java HTTP Clients

Many Roads Lead to the Web

Blog Post

The Way of the Request

The Play Framework is a web application framework for Scala and Java inspired by Ruby on Rails. Although I like the official documentation, I always found it lacking in how requests runs through the framework. This article takes the reader on a journey tracing a request through the framework.

Article

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.

Article

Maven, das unbekannte Wesen - Teil 1

WeiterfĂŒhrende Themen zum Umgang mit Maven

Article

WiderstandsfÀhigen Java-Code mit Resilience4j schreiben

Eines ist beim Betrieb von Software sicher: Fehler und unerwartete Situationen werden eintreffen. Stabile Software sorgt deswegen vor und kann auch mit solchen Situationen umgehen. Diese mit Resilienz oder WiderstandsfÀhigkeit beschriebene Eigenschaft kann den Unterschied zwischen einer Anwendung, die nicht mehr reagiert oder erreichbar ist, und einer darstellen, die noch ihren Dienst tut. Dieser Artikel beschÀftigt sich deshalb mit StabilitÀtsmustern und zeigt, wie wir diese mit Resilience4j in Java umsetzen können.

Article

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

The definitive renaissance of server-side rendering?

Article

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.

Article

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.

Article

Modernes funktionales Programmieren in Java

Link

“No matter how capable or brave you are, you are dependent on opportunities”: Interview with Hanna Prinz

Link

Java feiert 25. Geburtstag: Interview mit Michael Vitz

Link

Java feiert 25. Geburtstag: Interview mit Eberhard Wolff

Link

Service Mesh und Microservices: „Wartbare Software zu schreiben, ist und bleibt offenbar ein schwieriges Problem“. Interview mit Hanna Prinz

Article

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.

Article

Dynamische Proxys mit dem JDK umsetzen

Der dynamische Stellvertreter

Link

Java 14 Highlights. Interview mit Michael Vitz

Article

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

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.

Link

Die Java Highlights 2019

Article

Cloud native Java-Anwendungen mit Quarkus

Alles Quark?

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.

Article

Die GraalVM: Javas Sprung in die Gegenwart?

Die Java Virtual Machine (JVM) gibt es jetzt seit ĂŒber 24 Jahren. Mit den Jahrzehnten wuchs ihre Verbreitung und das SDK bekam immer neue Funktionen. Das alles hat die JVM aber auch groß und trĂ€ge gemacht. Hoher RAM-Bedarf oder lange Startzeiten passen nicht mehr in die neue FaaS oder Container Welt. Die GraalVM macht da Hoffnung.

Article

Hadoop - Taming the Elephant (With a Whale)

Eine EinfĂŒhrung in Hadoop

Article

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.

Case Study

MEDICPROOF ProofForms 8

Expert reviews in private health insurance
Blog Post

Zeitreise mit LocalDate und DateTimeFormatter

Die Krux mit den Patterns

Article

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.

Article

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.

Article

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

Article

Einsatz von Containern zum Testen

Testcontainers in JUnit-Tests verwenden

Article

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

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?

Gibt es fachliche Ausnahmen und ist es sinnvoll, diese als Exceptions zu modellieren?

Article

Java 10 – Evolution statt Revolution

Gerade erst ist Java 9 erschienen, da steht auch schon das nÀchste Release, Java 10, an. Dieser Artikel betrachtet die Neuerungen von Java 10 und wagt einen kurzen Blick in die Zukunft.

Podcast

Java 10

Die neuen Features im Überblick

Article

Health-Checks in Java-Anwendungen

Die Gesundheit immer im Blick

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

Implementierung einer einfachen Zustandsmaschine (state machine) in Java

JSE

Article

Horden von Zombies

Kennen Sie das Computer-Spiel „Plants vs. Zombies“? 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

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.

Article

Deployment und Monitoring von Microservices

Article

Zwei Jahre nach dem Tod der Java Application Server

Vor zwei Jahren wurde der Tod der Java Application Server ausgerufen. Zeit also ein Fazit zu ziehen und die Thesen aus dem Artikel einem kritischen Review zu unterziehen.

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

News

Voxxed Days Berlin 2016

Article

Hands-On Integration mit openHAB

Article

Sicherheit und Datenschutz

Teil 6, Artikelserie “Smart Home”

Article

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.

Article

Standards, Open Source und Forschung

Der Internet-of-Things- und im Speziellen der Smart-Home-Markt sind so breit, dass einzelnen Anbietern schlicht das Durchhaltevermögen fĂŒr die große Lösung fehlt. Ein Ausweg sind Allianzen ein anderer echte Standards. Im folgenden Artikel wollen wir uns einen Überblick verschaffen und eine Einordnung vornehmen.

Article

GerÀteabstraktion und ihre Schwierigkeiten

Teil 3, Artikelserie “Smart Home”

Article

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.

Article

Heimautomatisierung und das Internet der Dinge

Das vergangene Jahr ist das Jahr des Smart Homes. Nie zuvor wurde so viel ĂŒber das intelligente Zuhause gesprochen. Nicht nur Apple hat mit HomeKit in iOS8 den Markteintritt gewagt, auch Google hat mit dem Zukauf von Nest und Dropcam fĂŒr einigen Wirbel gesorgt. Doch was genau verstehen wir unter einem Smart Home und was hat das Internet der Dinge damit zu tun?

Link

Umfrage zum zwanzigsten Geburtstag von Java: „Oder bist du ĂŒberhaupt nur eine Programmiersprache?“

News

Informatica Feminale 2015 in Bremen und Furtwangen

Article

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.

News

Microservices, Internet of Things und RxJava beim Java Forum Stuttgart

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.

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

Wissen, was lÀuft

Mit Laufzeitmetriken den Überblick behalten

Article

Durchbruch

Der Markt fĂŒr Heimautomatisierung erlebt derzeit große VerĂ€nderungen, denn die Zahl der GerĂ€te der neuen Gattung “IoT-Gadgets” wĂ€chst von Tag zu Tag. Im Jahr 2022 wird jeder Durchschnittshaushalt mit ungefĂ€hr 50 solcher Gadgets ausgestattet sein, die sinnvolle kleine Teilaufgaben erledigen. Fraglich ist, wie nĂŒtzlich deren Einsatz ist, wenn keine ĂŒbergreifenden Anwendungsszenarien möglich sind. Die gute Nachricht ist: Es gibt Lösungen, um diese neuen GerĂ€te nahtlos in ein umfassendes Smart Home zu integrieren.

Article

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.

Article

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

Der goldene KĂ€fig

Article

Hystrix – damit Ihnen rechtzeitig die Sicherung durchbrennt

Sicherungen wurden ursprĂŒnglich eingefĂŒhrt, um die Eskalation einer Situation zu verhindern. Wenn Ihnen ab und zu die Sicherung durchbrennt, ist das deshalb durchaus zu begrĂŒĂŸen, jedenfalls wenn es sich dabei um einen Circuit-Breaker im Sinne von Hystrix handelt. In diesem Artikel möchten wir Ihnen Hystrix vorstellen, eine Bibliothek, die ihnen dabei hilft, die StabilitĂ€t ihrer verteilten Anwendung zu verbessern und kaskadierende Fehlerszenarien zu verhindern.

Article

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.

Article

Hystrix – Wider den Totalausfall

Quelloffene Leistungsschutzschalter fĂŒr alle

Podcast

Wenn Systeme aus dem Ruder laufen

Mit Hystrix fĂŒr stabile, verteilte Anwendungen sorgen

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.

Podcast

Modern Batch

ZeitgemĂ€ĂŸe Architekturen zur Massendatenverarbeitung

Podcast

openHAB: Home-Automation mit Java

OSGi fĂŒr das Internet der Dinge

Article

Java – Funktional ohne Zauberei

In dieser Ausgabe stelle ich die verschiedenen Möglichkeiten vor, mit der quelloffenen Bibliothek Totally Lazy in Java funktional zu programmieren. Mit Hilfe bekannter Higher-Oder-Functions erlaubt sie, Collections elegant sequenziell oder auch nebenlÀufig zu verarbeiten. Dabei stellt Totally Lazy sicher, dass die Verarbeitung der Sequenzen lazy erfolgt. Wie Totally Lazy hilft, Teile unseres Quellcodes wartungsfreundlicher zu gestalten, ist Gegenstand dieses Artikels.

Article

Eine Lanze fĂŒr XML brechen

Java spricht

Article

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.

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.

Link

Clojure: Funktional, parallel, genial

Link

RESTful Web Services mit Java

Link

Die Java Persistence API