JAVAPRO – DAS KOSTENLOSE MAGAZIN FÜR JAVA PROFIS

JETZT NEU – AUSGABE 3-2019:

Horror Serialisierung

06 NEUES IN JAVA 13
09 MASTERING THE API HELL
22 COLLECTIONS EFFEKTIVER DURCHSUCHEN MIT JAVA-8-STREAMS
37 WEB- UND DESKTOP-ANWENDUNG AUS EINER CODE-BASE
50 JAVA – ABER SICHER!
60 HORROR SERIALISIERUNG
72 NACHHALTIGE REPORT-ENTWICKLUNG MIT TDD
78 WAS DEVOPS WISSEN MÜSSEN
89 RESILIENZ DURCH ORGANIC-AGILITY

Einfach kostenlos anfordern. Lieferung erfolgt frei Haus. Nur innerhalb D. möglich.
Kein kostenpflichtiges Abo, denn die JAVAPRO kann man nicht kaufen!

Jetzt kostenlos anfordern

 

Java – aber sicher!

Java boomt. 24 Jahre nach der Einführung ist Java populär wie nie – und die Zeichen stehen auch 2019 klar auf Wachstum. Denn Java gehört nicht nur im Web- und Mobile-Development nach wie vor zu den Favoriten vieler Entwickler, sondern hat auch in Wachstumssegmenten wie Big-Data und Internet-of-Things fest den Fuß in der Tür. Angesichts

Spring-Boot im Legacy-Kontext

Für die Weiterentwicklung von Legacy-Anwendungen sind oftmals zusätzliche Werkzeuge und Frameworks erforderlich. Der Artikel zeigt auf, wie sich in diesem Zusammenhang Spring-Boot sinnvoll einsetzen lässt.   Spring  ist ein nützliches Open-Source-Framework für die Java-Plattform. Das Kernziel des Projekts besteht darin, die Java-/Java-EE-Entwicklung durch die Entkopplung von Applikationskomponenten zu vereinfachen. Die zentralen Mechanismen sind dabei

Horror Serialisierung

Serialisierung ist das die größte Schwachstelle in Java. Praktisch alle wichtigen Java-APIs und Frameworks verwenden Serialisierung. Wirksamer Schutz ist kaum möglich und vorhandene Alternativen lösen die fundamentalen Probleme nicht. Mit MicroStream gibt es jetzt eine neue Serialisierung für Java, die nicht nur mehr Sicherheit verspricht, sondern zudem fantastische Möglichkeiten bietet. In objektorientierte Programmiersprachen wie Java

Collections effektiver durchsuchen mit Java-8-Streams

Wenn man bis Java 7 die Elemente einer Collection bearbeiten wollte, musste man sich mühsam mithilfe einer Schleife oder eines Iterators durch die Elemente klicken. In Java 8 sind Streams als neues Sprachelement eingeführt worden. Sie ermöglichen die Bearbeitung von Collections mit weniger und kompakterem Code, ohne dass die Lesbarkeit darunter leidet.   Collections durchlaufen

Web- und Desktop-Anwendung mit einer Code-Base

Viele sehen die Zukunft von Java im Web, gleichzeitig sollen aber bestehende Desktop-Anwendungen weiterhin stand-alone funktionieren. Die Lösung: Einen Application-Server transparent in eine Electron-Anwendung einbetten und damit das bestehende Nutzererlebnis erhalten. Beispielhaft wird in diesem Artikel eine Swing-Altanwendung in eine Web-Anwendung transformiert und deren Qualität durch hochwertigen UI-Test gesichert. Anfang 2014 kamen die Entwickler von

JavaScript Security – Best Practice

JavaScript ist mittlerweile überall. Neben dem Großteil der Web- und Mobile-Apps werden inzwischen auch Server-Applikationen und selbst Anwendungen in der Automotive-Industrie damit programmiert. Auch Java-Entwickler kommen somit immer öfter mit JavaScript in Kontakt. Mit der Zahl kritischer Anwendungsgebiete steigt aber auch das Schadenpotenzial. Schwachstellen wie XSS, CSRF und SQL-Injections sind hinlänglich bekannt. Doch in vielen

Netzwerksegmentierung funktioniert auch in der Cloud

Die Netzwerksegmentierung ist eine bewährte Sicherheitsstrategie, mit der man Richtlinien für verschiedene Dienste festlegen kann, die zwischen den Zonen erlaubt sind. Durch die Klassifizierung der vertraulichen Daten und Ressourcen innerhalb der Zonen wird sichergestellt, dass nur bestimmte Nutzer, die zu anderen Zonen gehören, auf diese Daten zugreifen können. Das hilft dabei, Angriffe einzudämmen, da Bewegungen

Getting Hip with JHipster

JHipster ist ein Framework, um Spring-Boot-basierte Web-Anwendungen und Microservices mit Angular, React oder Vue-Frontends zu generieren, zu entwickeln und zu betreiben. Mit JHipster lässt sich eine Anwendung bootstrappen und das Datenmodell erzeugen, sodass man sich auf das Implementieren der Businesslogik konzentrieren kann. JHipster kombiniert unterschiedliche Technologien und Frameworks, konfiguriert diese nach aktuellen Best-Practices und stellt

Technische Schulden in der DevScoreOps-Welt

Wenn von technischen Schulden die Rede ist, denken viele vor allem an die traditionelle Applikationsentwicklung. Schuldzuweisungen aber helfen nicht weiter, denn auch die DevSecOps-Welt ist davon nicht verschont. Wichtig ist, technische Schulden genau zu dokumentieren und Prioritäten für deren Behebung festzulegen. Wie bei fast allen Verfahren und Prozessen in der IT gibt es auch beim

Wir entscheiden zusammen, nicht allein

Die agile Software-Entwicklung forciert selbst-organisierte, autonome Teams. Diese Organisationsform steht im Widerspruch zu den klassischen Methoden für Technologieentscheidungen: Entscheidet ein CTO oder ein außenstehender Architekt über die eingesetzten Programmiersprachen, Frameworks und Werkzeuge, werden die Autonomie und Selbstorganisation der Entwicklungsteams erheblich eingeschränkt. Wie lassen sich Technologieentscheidungen ohne diese Einschränkungen organisieren? Welche typischen Probleme treten dabei auf?

Deep-Dive into Annotations – Teil 3

Java-Annotationen sind ein mächtiges Sprachmerkmal, deren Interna allgemein nicht sonderlich bekannt sind. In Teil 3 unserer dreiteiligen Serie geht es um die Auswertung eigener Annotationen zur Laufzeit. In Teil 1 unserer Serie wurden diverse Verwendungszwecke für Annotationen aufgezeigt und die fünf Java-SE-Standardannotationen detailliert diskutiert. Teil 2 führte aus, wie eigene Annotationstypen programmiert werden können. Dabei wurden insbesondere die

Nachhaltige Report-Entwicklung mit TDD

Graphische Auswertungen sind ein zentraler Wertschöpfungsfaktor in den verschiedenen Softwareprodukten, mit denen wir uns im Entwickleralltag beschäftigen. Trotzdem verzichten viele Projektteams an dieser Schlüsselstelle auf automatisierte Tests. Wie kann ein Vorgehen aussehen, das dem hohen fachlichen Wert gerecht wird und dennoch in einem vertretbaren Zeitrahmen umsetzbar ist? Stellen wir uns eine dieser zahlreichen Web-Applikationen vor:

MicroStream: In-Memory Datenbanken mit Pure Java

#JAVAPRO #JCON2019 #InMemoryDatabase #NoSQL Mit MicroStream gibt es jetzt einen neuen Ansatz für die Persistierung von Daten in Java. MicroStream speichert Java-Objektgraphen genauso, wie diese im RAM existieren. Objekte müssen nicht durch Annotation oder XML-Konfigurationen aufwändig auf eine künstliche Struktur gemappt werden. Das In-Memory-Konzept von MicroStream ermöglicht Datenzugriffe im Bereich von Nanosekunden – bis zu

Was DevOps heute wissen müssen

Der erste Teil unserer zweiteiligen Serie hat die 6 DASA-DevOps-Prinzipien dargestellt. Der zweite Teil geht nun auf das DASA-DevOps-Kompetenz-Framework ein, welches 12 Bereiche definiert, in denen die Mitarbeiter Qualifikationen haben müssen. Die Bereiche reichen von Soft-Skills wie Mut und Leadership über eher technische Aspekte wie Infrastruktur-Engineering und Continuous-Delivery zu eher klassischen Themen wie Business-Analyse und

Resilienz durch Organic-Agility

Resilienz ist für die Anpassung an komplexe und volatile Situationen in jedwedem Bereich essentiell – von der Softwareentwicklung bis hin zum Management von Organisationen. Organic-Agility ist ein evolutionärer Ansatz der zeigt, warum eine kohärente Organisationskultur und agiler Leadership den Organisationen dabei helfen, Resilienz zu erzielen und sich auf die Anforderungen der heutigen Realität einzustellen.  

10 Grundsätze für sichere Softwareentwicklung

Die Entwicklung moderner Software ist heutzutage so komplex, dass Fehler trotz intensiver Prüfung nicht oder nur schwer erkennbar sind. Dies hat eindrucksvoll die Heartbleed-Schwachstelle der älteren Version der Open-Source-Bibliothek OpenSSL gezeigt. Ein Großteil der Online-Dienste und Websites zeigte sich dadurch für Angriffe anfällig. Dieser Artikel nennt zehn Grundsätze für eine sichere Softwareentwicklung.   Grundsatz 1:

Verantwortung in einem Team

Aus diffusem Verständnis von Verantwortlichkeit entstehen in Projekten oft Streitereien und unnötiges Hin und Her. Wenn es um Verantwortung geht, ist es hilfreich, sich über bestimmte Zusammenhänge bewusst zu sein. Dieser Artikel zeigt auf, welche klassischen Fehler in der Praxis immer wieder gemacht werden und wie man Verantwortung richtig (ver-)teilt.   Stellen Sie sich folgendes

Risiko Open Source

Entwickler übersehen häufig die mit Open-Source verbundenen Sicherheits- und Lizenzrisiken. Das Black-Duck-Audit-Services-Team von Synopsys führt jedes Jahr Open-Source-Audits für seine Kunden durch und prüft dabei tausende Codebasen. Diese Prüfungen werden in erster Linie von M&A-Prozessen bestimmt und sind die primäre Quelle anonymisierter Daten für die jährliche Open-Source-Sicherheits- und Risikoanalyse (OSSRA). Die diesjährige OSSRA 2019 Studie

Architekturentscheidungen in agilen Projekten

Was mache ich als Architekt in einem agilen Team, wenn wir im Sprint 1 vor der Entscheidung stehen, welches Architekturmuster oder welche Technologien wir einsetzen und wir innerhalb des Sprints entscheiden wollen? Einfach machen und dann refactoren? Und wenn es verschiedene Ansichten gibt, wie wir es machen können?   Das fiktive Projekt Als Fallstudie wird

Von der Pflicht zur Kür – vollumfängliche, automatisierte Softwaretests

Unit-Tests sind heutzutage Standard im Bereich der Testautomatisierung. Doch die moderne agile Softwareentwicklung will mehr und strebt nach größtmöglicher Qualität und Effizienz. Warum Unternehmen die Disziplinen Integrations- und UI-Tests nicht länger vernachlässigen sollten.   Unit-Tests bilden die Basis der Testabdeckung und sind in der Softwareentwicklung Standard. Bei diesem Testverfahren werden einzelne Softwarekomponenten isoliert betrachtet und

Task-Parallelität mit CompletableFutures

Obwohl viele Java-Entwickler die CompletableFuture-Klasse kennen, wird sie in Projekten immer noch selten eingesetzt. Das mag daran liegen, dass die Klasse auf den ersten Blick komplex wirkt oder dass die Einsatzmöglichkeiten nicht immer offensichtlich sind. Dabei lässt sich mit Hilfe von CompletableFutures recht einfach Task-Parallelität realisieren. Im Folgenden werden einige Best-Practices vorgestellt und gezeigt, wie

Die DASA-DevOps-Prinzipien

Im 1. Teil unserer Artikelserie werden die DASA-DevOps-Prinzipien im Überblick dargestellt. Betrachtet man alle Prinzipien und Zusammenhänge, hat man eine solide Basis für die Entwicklung in Organisation und Personal geschaffen. DevOps als Kunstwort beschreibt eine Philosophie, die die beiden Namensgeber Entwicklung und Betrieb zusammenbringt. Das Ziel ist es, kontinuierliche Softwarebereitstellung sicherzustellen, um schneller auf Marktveränderungen

DevOps-Sportfreunde

Der folgende Artikel knüpft an den Beitrag „Skills, Tools und das richtige Mindset für DevOps“ – JAVAPRO 03-2018 an und schlägt die Brücke zwischen den Konzepten und Prinzipien hin zur gelebten Praxis. Wenn man das Thema DevOps mit einer Sportart vergleicht, dann kommt nach der allgemeinen Beschreibung der Spielregeln aus dem vorhergehenden Artikel nun die

Monolithen mit DDD aufschneiden

Fast jedes Softwaresystem wird mit guten Vorsätzen, aber unter schwierigen Bedingungen entwickelt: Knappe Zeitvorgaben zwingen uns, schnelle Lösungen – Hacks – zu programmieren. Unterschiedliche Qualifikationen im Entwicklungsteam führen zu Code in ebenso unterschiedlicher Güte. Alter Code, den keiner mehr kennt, muss angepasst werden und vieles mehr. All das führt zu schlechtem, verknäultem Code, dem sogenannten