Focus

java

Talk
Talk

Lieber ein Typparameter zu viel als einer zu wenig

Softwerkskammer Rhein-Neckar November 2019 / 18:30 - 19:30

Talk
Talk

Das eierlegende Truffleschwein

Lightweight Java User Group München November 2019 / 20:00 - 20:30

Talk
Talk

Vorschau auf Webanwendungen mit MVC 1.0 und Eclipse Krazo

Lightweight Java User Group München November 2019 / 19:30 - 20:00

Talk
Talk

Java by Comparison - Die Geschichte(n) des Buches

Softwerkskammer Köln Oktober 2019 / 18:00 - 21:00

Talk
Talk

Spring Boot entzaubert

JCON 2019 / 17:15 - 18:00

Talk
Talk

Neues von Java und dem JDK

JCON 2019 / 09:00 - 09:45

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

Hadoop - Taming the Elephant (With a Whale)

Dieser Artikel richtet sich an Personen, die bisher keine Erfahrung mit Hadoop haben und sich einen Einstieg basierend auf praktischen Übungen wünschen. Neben der Erläuterung der Kernkomponenten, werden mithilfe eines Docker-Image grundlegende Konzepte gezeigt.

Case Study

MEDICPROOF ProofForms 8

ProofForms is software from MEDICPROOF, the medical service for private health insurers, which expert reviewers can use to administer their assignments and create their expert reviews of care.
Case Study

MEDICPROOF ProofForms 8

ProofForms ist die Software von MEDICPROOF, dem medizinischen Dienst der privaten Krankenversicherungen, mit der Gutachter ihre Beauftragungen verwalten und Pflegegutachten erstellen können.
Blog Post

Zeitreise mit LocalDate und DateTimeFormatter

Manchmal hängt das erfolgreiche Ausführen eines Testes tatsächlich davon ab, an welchem Tag er gestartet wird.

Article

Die erste Java-Version mit Long-Term-Support seit Java 8

Java, die Elfte

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

In diesem Artikel geht es um die Möglichkeit, bei Legacy-Anwendungen Regressionstests anhand des Quellcodes zu generieren, um vor einem möglichen Refactoring Tests erzeugt zu haben. Diese sollen sicherstellen, dass die Anwendung nach dem Refactoring noch genauso funktioniert wie vorher. Hier gibt es einige interessante Ansätze und auch einige Tools, die diese implementieren. Der Artikel zeigt zwei mögliche Ansätze.

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

Container setzen sich beim Betrieb von Anwendungen immer mehr durch. Doch auch abseits davon helfen diese bei der Entwicklung und dem Testen von Anwendungen. Dieser Artikel zeigt, wie mithilfe der Java Bibliothek Testcontainers Container innerhalb von JUnit Tests verwendet werden können.

Article

Blockchain hausgemacht

INNOQ Hands-On Event

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.

Article

Java 10 – Evolution statt Revolution

Die Zukunft von Java

Podcast

Java 10

Die neuen Features im Überblick

Article

Health-Checks in Java-Anwendungen

Health-Checks sind für den Betrieb von Anwendungen heute, insbesondere wenn sie als Container in einem Cluster deployt werden, unerlässlich. Dieser Artikel zeigt, wieso Health-Checks so wichtig sind, welche Details beachtet werden sollten und wie Health-Checks in Java mit drei gängigen Bibliotheken umgesetzt werden können.

Article

Command Line Interfaces in Java

Auf Kommando

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

Eine simple Zustandsmaschine (state machine) in Java

Article

Horden von Zombies

Wenn es um die Wurst geht

Article

Features in Java 9

Bereits seit dem 26. Mai 2016 befindet sich Java 9 im „Feature Complete“-Stadium [1]. Somit ist es bereits jetzt möglich, sich einen Build des Early Access Release herunterzuladen [2] und neue Features auszuprobieren.

Article

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.

Article

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, ui4j or jaunt and compares them.

News

Voxxed Days Berlin 2016

Article

Hands-On Integration mit openHAB

Zum Abschluss der Serie wollen wir in die Praxis einsteigen: Unter Verwendung von openHAB zeigen wir, wie sich eine individuelle Smart-Home-Lösung aufbauen lässt, welche einfach erweiterbar ist und den Schutz der persönlichen Daten gewährleistet. Bevor wir anhand eines praktischen Beispiels unser eigenes Smart-Home-System aufbauen, wollen wir uns zuerst einen Überblick über die einzelnen Komponenten des gesamten Systems verschaffen.

Article

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.

Article

Steuerung und Automatisierung

Teil 5, Artikelserie “Smart Home”

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

Im vorigen Teil unser Serie haben wir gesehen, wie vielfältig der Smart-Home-Markt ist und dass es nicht die “eine” beste Lösung gibt. Vielmehr haben alle Systeme ihre Stärken und Schwächen. Es gilt also, die jeweiligen Stärken in ein Gesamtsystem zu kombinieren. Hierbei stellt man schnell fest, dass inzwischen fast jeder Hersteller, bzw. jede Allianz, zu einer eigenen Lösung gefunden hat, wie Geräte per Software ansprechbar sind. Dabei sind auf den ersten Blick die Möglichkeiten nicht allzu vielfältig: Sensoren liefern einerseits Messdaten - also einfache (Fließkomma-)Zahlen - und Aktoren empfangen diskrete Kommandos wie “an”,“aus” oder auch Prozentwerte. Wäre es für Smart-Home-Anwendungen nicht schön, wenn dies für jedes Gerät auf ein und die gleiche Weise geschehen könnte? Wir suchen also eine Abstraktionsschicht, die uns unabhängig von der konkreten Hardware macht.

Article

Marktüberblick über Systeme und Protokolle

Teil 2, Artikelserie “Smart Home”

Article

Heimautomatisierung und das Internet der Dinge

Normalbürger sprechen vom intelligenten Zuhause, Techniker dagegen eher von Heimautomatisierung - gemeint ist das Gleiche: Die Integration von verschiedenen Dingen im Haus wie Licht, Heizung und Rolläden, aber auch von Multimediageräten wie Radio, Fernsehen und Stereoanlage oder der sogenannten weißen Ware, also Waschmaschinen, Kühlschränken, Geschirrspülern und ähnlichem. Integration bedeutet hierbei Zweierlei: Zum Ersten die zentrale Erreichbarkeit z.B. über ein Touchpanel, um Geräte zu schalten bzw. deren Status zu visualisieren. Zum Zweiten aber auch die Möglichkeit, dass Geräte automatisch aufeinander reagieren, also z.B. ein Licht eingeschaltet wird, sobald Bewegung erkannt wird. Geräteklassen werden klassisch in Sensorik und Aktorik aufgeteilt. Während Sensoren Daten aus der Umgebung aufnehmen und weitergeben können, sorgen Aktoren für Aktionen wie Schaltvorgänge. Bisher waren insbesondere die Gewerke Licht und Rollläden immer sehr eng mit der Haus-Elektrik verbunden - bei der Aktorik hat man prinzipiell die Wahl, diese nach am Gerät (also z.B. in einer schaltbaren Steckdose) zu installieren oder sie zentral im Schaltschrank unterzubringen. Letzteres ist die etwas kostengünstigere Variante, allerdings eigentlich nur im Neubau oder zumindest einer Kernsanierung eine valide Option. In beiden Fällen kommt man um fundierte Elektro-Kenntnisse und damit einen Elektriker nicht herum - und so waren Smart Homes bislang nur ein teurer Nischenmarkt.

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

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 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.

Article

Durchbruch

Offene Plattformen verhelfen Smart Home zum Erfolg

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

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.

Article

Hystrix – damit Ihnen rechtzeitig die Sicherung durchbrennt

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

Michael T. Nygard hat in seinem Buch „Release It!” sehr anschaulich die Folgen von sich fortpflanzenden Fehlern beschrieben. Seine klare Empfehlung lautete, Isolationsmuster wie zum Beispiel Leistungsschutzschalter – engl. Circuit Breaker – in die Software zu integrieren, um Totalausfälle zu vermeiden. Mit Hystrix hat Netflix ein Framework bereitgestellt, das den Einbau von solchen Schaltern vereinfacht. Dieser Beitrag stellt das Framework vor.

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

In der Ausgabe 05/2002 wurde erstmals JAXB im Java-SPEKTRUM [1] vorgestellt. In 2004 war XML eines der Hauptthemen. Heute – zehn Jahre später – begegnen uns immer noch Projekte, in denen die Objekt- Serialisierung hakt. Ob aufgrund der Größe der serialisierten Daten, des Hauptspeicherverbrauchs während des Bindens oder aufgrund der Rechenzeit für Transformationen – es gibt genügend Gründe, sich das Thema noch mal anzuschauen. Hier insbesondere aufgrund der verfügbaren Werkzeugkette außerhalb der Java-Welt.

Article

Java-Programme mit Clojure würzen

Doppelplusgut

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