Resource Bundles und Properties in Java

Was ist von folgendem Codestück zu halten?

public void init() {
  JFrame frame = new JFrame();
  frame.setTitle("Toller Fenstertitel");
}

Continue reading

Posted in Java Basics | Tagged , , , , , | Leave a comment

Multi-Release JAR-File

Viele Programmbibliotheken und Frameworks in Java unterstützen mehrere Java Versionen. Das führt dazu, dass neue Sprachfeatures und neue Funktionen der Plattform-API in diesen Projekten nur zögerlich umgesetzt werden, um die Abwärtskompatibilität mit alten Java Versionen nicht zu untergraben. Insbesondere im Hinblick auf die größeren Änderungen an der Plattform-API im Zuge von Java 9 ergibt sich das Problem, dass viele Programmbibliotheken entweder das Modulsystem von Java 9 umgesetzt haben und damit voll zu Java 9 konform sind, oder nicht. Als Resultat werden dann mehrere JAR-Artefakte für die unterschiedlichen Java Versionen veröffentlicht. An dieser Stelle schafft das Multi-Release JAR-File in Java 9 (JEP 238) Abhilfe.
Continue reading

Posted in Java Basics | Tagged , , | Leave a comment

Collections – Factory Methoden

Ein Set, eine Liste oder eine Map im Code zu erstellen, hat in Java bisher recht viel Boilerplate-Code mit sich gebracht. Mit Java 9 wurden nun einige neue Factory-Methoden (JEP 269) eingeführt, mit denen die Erstellung, insbesondere von unveränderlichen Collections, sich auf eine Zeile ohne viel unnötigen Overhead reduzieren lässt.
Continue reading

Posted in Java Basics | Tagged , , | Leave a comment

Completable Futures: Java 9 Update

Wie im vorherigen Artikel zu dem neuen Publish-Subscribe-Framework in Java 9 schon erwähnt, gibt es immer wieder kleinere oder größere Änderungen an den Concurrency APIs im JDK. In Java 9 gab es neben der größeren Neuerung bezüglich der Flow-API auch noch einige kleinere Änderungen im Bezug auf die CompletableFuture-API. Die wichtigsten sollen hier aufgeschlüsselt werden.
Continue reading

Posted in Java Basics | Tagged , , , | Leave a comment

Publish-Subscribe mit der Flow-API in Java 9

Die Concurrency-APIs im JDK sind seit Java 1.5 ein wichtiger Bestandteil und haben immer wieder kleinere oder größere Aktualisierungen bekommen. So auch in Java 9 (JEP 266). In diesem Fall ist ein kleines Publish-Subscribe Framework (im Folgenden auch Flow-API genannt) hinzugekommen.

Dieser Artikel befasst sich damit, wie dieses Publish-Subscribe-Framework funktioniert und wie es zu verwenden ist.
Continue reading

Posted in Java Basics | Tagged , , , , | Leave a comment

SafeVarargs-Annotation in Java

Wer in Java häufig mit Generics arbeitet weiß, dass dabei häufiger sehr spezielle Warnungen auftreten, insbesondere im Bezug auf die Typsicherheit von Variablen und Parametern.
Wer beispielsweise einen Ellipsis-Operator (auch Varargs-Operator genannt) in der Methodensignatur einer generischen Methode verwendet, erhält die Warnung Type safety: Potential heap pollution via varargs parameter args.
Als Lösung wird von Eclipse vorgeschlagen: Add @SafeVarargs.
Was macht diese Annotation und wie ist sie einzusetzen?
Continue reading

Posted in Did you know?, Java and Quality, Java Basics | Tagged , , , | Leave a comment

JAX 2018 – aktuelle Trends

Ende April fand in Mainz die JAX 2018 statt. Auf der Konferenz für moderne Java- und Web-Entwicklung diskutieren Entwickler und Architekten Jahr für Jahr gemeinsam die neusten Trends in der Software-Entwicklung. Die Konferenz ist somit ein guter Gradmesser für die aktuell angesagten Technologien und Trends. Da stellt sich natürlich die Frage, was in diesem Jahr die beliebtesten Themen waren. Unter dem Hashtag #jaxcon finden sich zahlreiche Eindrücke der diesjährigen Konferenz. Nachfolgend eine sicherlich unvollständige und von meinen persönlichen Eindrücken geprägte Liste der drei wichtigsten Themen:

Microservices
Immer noch gehören Microservices zu den beliebtesten Themen der Konferenzteilnehmer. Das Hype-Thema schlechthin der letzten Jahre scheint mittlerweile in vielen Unternehmen angekommen zu sein. Die Grundidee muss man heutzutage niemandem mehr erklären. Allerdings interessieren sich mehr und mehr Teilnehmer für die genauen Details der Umsetzung. Die Vorteile wie unabhängige Entwicklung, flexible Skalierung und langfristig wartbare Bausteine erkauft man sich bei Microservices mit teils deutlich komplexeren Deployment-Umgebungen und einer Vielzahl neuer Technologien. Ob die Vorteile die zahlreichen technischen Implikationen rechtfertigen, war Gegenstand der ein oder anderen Diskussion und wird es sicherlich auch noch eine Weile bleiben.

Cloud
Alle wollen in die Cloud. Server in den eigenen Serverraum in den Keller zu stellen, scheint ein Modell von gestern zu sein. Neben wirtschaftlichen Abwägungen zu den Betriebskosten spielten in Zeiten des Facebook-Skandals und der kurz bevorstehenden DSVGO auch Datenschutzfragen ein spürbar stärkere Rolle. Die Cloud war nach wie vor eines der prägendsten der diesjährigen JAX und wird es nach meiner Einschätzung auch noch ein paar Jahre bleiben.

APIs
APIs sind überall. APIs sind Produkte. APIs werden immer wichtiger. APIs können einen Wettbewerbsvorteil darstellen. APIs sind aber gleichzeitig auch sehr aufwendig zu entwerfen und umzusetzen. So in etwa lassen sich die wichtigsten Aussagen zu diesem aufstrebenden Thema zusammenfassen. Die Fragen nach der technischen Umsetzung zum Beispiel mit REST und JSON oder neueren Ansätzen wie GraphQL oder gRPC werden uns noch eine Weile begleiten. Aber vor allem Fragen nach Themen wie der Versionierung, der Sicherheit, der Schnittstellenbeschreibung, der richtigen Fehlerbehandlung und noch vielen weiteren bisher meist ungeklärten Fragen rücken nach meiner Einschätzung künftig noch weiter in den Fokus.

Posted in Did you know?, Java EE, Politics, Web as a Platform | Tagged , , , | Leave a comment