You're seeing on javaspektrum from to in
  • Jepsen - verteilte Systeme testen

    Article Michael Vitz

    An verteilten Systemen kommt heute kein Entwickler mehr vorbei. Selbst wenn man keines baut, setzt man häufig Komponenten ein, die ein verteiltes System sind. Hierzu gehören vor allem viele Vertreter von neueren Datenbanken. Dieser Artikel zeigt, wie man diese mit Jepsen testen kann.

    Read more
  • Command Line Interfaces in Java

    Article Michael Vitz

    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.

    Read more
  • Logging und Metriken in verteilten Systemen

    Article Michael Vitz

    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.

    Read more
  • Tooling für JavaScript-Frontends

    Article Michael Vitz

    Nahezu jede Webanwendung besitzt einen Anteil an JavaScript im Frontend. Im Vergleich zu früher haben sich jedoch viele Dinge geändert. So sind heute zahlreiche Tools üblich, die den Entwickler unterstützen. Dieser Artikel gibt einen Überblick über aktuell genutzte Entwicklungswerkzeuge für die Entwicklung von JavaScript-Frontends.

    Read more
  • Docker Compose – Komplette Systeme mit Docker managen

    Article Michael Vitz

    Der Einstieg in Docker ist einfach. Schnell hat man gelernt, mit Dockerfiles Images zu erzeugen und die ersten Container laufen bereits. Dann wird es wirklich spannend. Wie manage ich mehrere Container, die zusammen eine ganze Umgebung bilden? Dieser Artikel liefert Ihnen die Antwort auf diese Frage.

    Read more
  • Lokale Datenanalyse mit Data Frames

    Article Michael Vitz, Michael Krämer

    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.

    Read more
  • Microservice-Infrastruktur

    Article Michael Vitz

    Die Cloud und darauf aufbauend Microservices haben in den letzten Jahren die Softwareentwicklung stark beeinflusst. Vor allem im Bereich der Infrastruktur tut sich hier auch heute noch einiges. Dabei wird man den Eindruck nicht los, dass jede Woche ein neues Produkt veröffentlicht wird. In diesem Artikel versuche ich, Ihnen durch diesen Dschungel zu helfen.

    Read more
  • Features in Java 9

    Article Michael Vitz

    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.

    Read more
  • Consumer-Driven Contracts – Testen von Schnittstellen innerhalb einer Microservices-Architektur

    Article Michael Vitz

    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.

    Read more
  • AWS Lambda

    Article Michael Vitz

    Seit Kurzem gibt es von verschiedenen Cloud-Anbietern Services für die Entwicklung serverloser Event-getriebener Anwendungen in der Cloud: Google (Cloud Functions), IBM (OpenWhisk), Microsoft (Azure Functions) und allen voran AWS Lambda von Amazon. Dieser Artikel beschreibt am Beispiel von AWS Lambda das Programmiermodell und hilft bei der Beantwortung der Frage, ob sich der Einsatz für Ihre Anwendung lohnt.

    Read more
  • Java-Web-Frameworks von innen?

    Article Michael Vitz, Phillip Ghadir

    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.

    Read more
  • Ein Domänenmodell für das SmartHome

    Article Phillip Ghadir, Thomas Eichstädt-Engelen

    Es gibt in der Domäne SmartHome viele unterschiedliche Sichtweisen, proprietäre Produktfamilien, einige offene Standards und verschiedene Konsortien, die versuchen, langfristig tragfähige, standardisierte Kommunikationsstandards zu definieren. Wir skizzieren für das Umfeld des sogenannten Ambient Assisted Living eine mögliche API für die relevanten Anwenderrollen.

    Read more
  • Amazon EC2 Container Service

    Article Martin Eigenbrodt, Phillip Ghadir

    Dank des Amazon EC2 Container Service finden Docker-Container nun auch bei den Amazon Web Services (AWS) Unterschlupf. In diesem Artikel stellen wir nach einem kurzen Überblick über die wichtigsten bisher verfügbaren Dienste den neuen Service vor, mit dem Docker-Container in der Cloud gehostet werden können.

    Read more
  • Bessere Web-Apps mit HTML5-APIs

    Article Phillip Ghadir, Simon Kölsch

    Der Begriff HTML5 fasst eine bunte Sammlung aus verfügbaren und geplanten APIs zusammen, auf die im Browser von JavaScript aus zugegriffen werden kann. Einige dieser APIs ermöglichen heute, Anwendungen für den Browser zu realisieren, die vor wenigen Jahren noch Plugins erfordert hätten. Die prominentesten Vertreter sind sicherlich Video oder WebRTC. Zum Beispiel ist heute die Public-Key-Verschlüsselung bereits im Web-Client integrierbar oder das Reagieren auf Sensordaten der Betriebs-Hardware des Browsers möglich. Es folgt eine persönliche Auswahl an etablierten APIs und ein Ausblick auf einige noch recht frische.

    Read more
  • Batch-Computing in Java

    Article Phillip Ghadir, Frank Hinkel

    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.

    Read more
  • Apache Cassandra

    Article Marc Jansing, Phillip Ghadir

    In dieser Kolumne stellen wir Cassandra vor und zeigen, warum die Datenbank quasi beliebig skaliert und höchst performant ist. Cassandra wirkt für Kenner von relationalen Datenbanken auf den ersten Blick recht vertraut, weil hier auch von Tabellen und Spalten die Rede ist und die Abfragen einfachen SQL-Abfragen ähnlich sehen. Dennoch unterscheidet sich Cassandra konzeptionell von relationalen Datenbank-Management-Systemen (RDBMS).

    Read more
  • Logging konsolidieren und Performance gewinnen

    Article Stefan Bodewig, Phillip Ghadir

    Apache Log4j 2.0 ist eine Neuimplementierung von Log4j zeichnet sich vor allem durch einen höheren Durchsatz – dank asynchronem I/O – aus. Die Neuerungen des Frameworks machen Lust darauf, Log4j2 einzusetzen. Da drängt sich die Frage auf, wie die Vorzüge von Log4j2 in einem System genutzt werden können, wenn Teile noch Log4J 1, commons-logging oder Ähnliches verwenden.

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

    Article Phillip Ghadir

    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.

    Read more
  • Attribut-basiertes Testen mit Scala

    Article Tobias Neef

    Das Testen eines Software-Systems ist eine alltägliche Aufgabe mit dem Ziel, dessen Konformität bezüglich einer Spezifikation nachzuweisen. Die grüne Ampel der Testumgebung ist in vielen Projekten das Fieberthermometer, welches die Normaltemperatur des Systems verkündet oder zu Warnungen bei Überschreitung führt. Doch können wir diesem Messgerät trauen? Das Attribut-basiertes Testen ist ein Werkzeug aus der Welt der funktionalen Entwicklung, welches uns helfen kann die Zuversicht in unsere Systeme zu erhöhen.

    Read more
  • Micro-Services in Java realisieren – Teil 1: Leichtgewichtige Web-Apps mit DropWizard

    Article Phillip Ghadir

    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.

    Read more
  • Hystrix – Wider den Totalausfall

    Article Phillip Ghadir

    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.

    Read more
  • Domain-Driven Design in Clojure

    Article Phillip Ghadir, Philipp Schirmacher

    In diesem Artikel setzen wir die Prinzipien des Domain-Driven Designs mit Clojure um. Wir stellen die Domäne Rating als Beispiel vor und demonstrieren strategisches sowie taktisches DDD. Wir zeigen, wie sich das Domänenmodell in Clojure implementieren lässt.

    Read more
  • Endlich viel erben?

    Article Phillip Ghadir, Oliver Tigges

    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.

    Read more
  • ROCA: Keine Angst vor HTML und JavaScript

    Article Phillip Ghadir

    ROCA ist ein Architekturstil zur Entwicklung anständiger und zukunftsfähiger Web-Frontends. Er umfasst eine Reihe von Empfehlungen sowohl für die Client- als auch für die Serverseite. Der ROCA-Stil erfordert von vielen Java-Entwicklern ein gewisses Umdenken. Grund genug, sich den Stil genauer anzuschauen.

    Read more
  • Hypermedia as the Engine of Application State – Spring Hateoas

    Article Phillip Ghadir

    Das kürzlich veröffentlichte Spring Hateoas vereinfacht das Verlinken von Ressource-Repräsentationen und bietet Mechanismen zur Link-Erzeugung und zum Reverse-Routing. Dieser Artikel stellt vor, wie diese Konzepte mit Spring MVC zusammen arbeiten und die Entwicklung von Webanwendungen erleichtern.

    Read more
  • Log-Daten effektiv verarbeiten mit Apache Kafka

    Article Phillip Ghadir, Arne Landwehr

    Mit Apache Kafka stellen wir ein ungewöhnliches Messaging-System vor. Es besticht durch persistente Speicherung der Nachrichten, hohen Transaktionsdurchsatz und gute Skalierbarkeit. Kafkas Architektur ermöglicht dadurch nicht nur den Einsatz in Online-Szenarien mit zeitnaher Verarbeitung, sondern auch in Offline-Szenarien mit stark zeitverzögerter Verarbeitung von Nachrichten. Dieser Beitrag demonstriert, wie Kafka auch mit großem Log-Aufkommen zurecht kommen kann.

    Read more
  • Micro-Cloud mit Cloud Foundry

    Article Phillip Ghadir, Oliver Wolf

    In dieser Ausgabe stellen wir mit Cloud Foundry einen Plattformdienst vor, mit dem Java-Anwendungen in der Cloud betrieben werden können. Die Plattform stellt Java-Anwendungen eine virtuelle Umgebung mit Ressourcen zur Verfügung. Wir haben Cloud Foundry für diese Kolumne gewählt, weil es die Cloud-Plattform auf den eigenen Rechner holt. Dadurch wird die Cloud- Entwicklung netzunabhängig.

    Read more
  • Java – Funktional ohne Zauberei

    Article Phillip Ghadir

    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.

    Read more
  • Eine Lanze für XML brechen

    Article Phillip Ghadir

    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.

    Read more
  • Java-Programme mit Clojure würzen

    Article Phillip Ghadir

    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.

    Read more
  • Neo4j – Eine graph-basierte transaktionale Datenbank

    Article Phillip Ghadir

    Neo4j ist eine quelloffene NoSQL-Datenbank, die Daten in Graphen organisiert. Sie ermöglicht die effiziente Verarbeitung unterschiedlichster Anwendungsfälle, die zum Beispiel in relationalen oder NoSQL-Datenbanken mit anderen Datenmodellen eher aufwendig sind.

    Read more
  • Webanwendungen mit dem Play!-Framework

    Article Phillip Ghadir, Philipp Haußleiter

    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.

    Read more
  • OpenShift Express

    Article Phillip Ghadir

    Oracle hat bereits zu Zeiten des Grid-Computing-Hypes verkündet, dass die bestehenden Java EE/J2EE-Standards völlig ausreichen, um Systeme für das Grid zu entwickeln. Diese Idee gewinnt im Cloud Computing bei verschiedenen „Platform as a Service (PaaS)“-Anbietern an Bedeutung, zumal der vom JCP akzeptierte JSR 342 verschiedene Features für Java EE 7 vorschlägt, die effizientere PaaS ermöglichen. Einen der Anbieter habe ich herausgepickt und mit ihm erste Geh-Versuche gemacht.

    Read more
  • NoSQL - Einsatzgebiete für die neue Datenbank-Generation

    Article Dirk Lingstädt

    NoSQL ist derzeit in aller Munde, obwohl manche Konzepte und Technologien schon seit Jahrzehnten bestehen. Der Begriff umspannt inzwischen derart viele Datenbank-Kategorien und -Produkte, dass es oft zu Verwirrungen und falschen Annahmen über den geeigneten Einsatz kommt. Dieser Artikel betrachtet anhand konkreter Beispielszenarien die Kriterien, die bei der Entscheidung für ein klassisches relationales Datenbanksystem oder eine der NoSQL-Varianten eine Rolle spielen.

    Read more