MicroStream
In der Evolution der Java-basierten objektorientierten Persistenz stellt MicroStream möglicherweise die letzte konzeptionelle Verfeinerung dar. Es übernimmt Ihren Runtime Object Graph so wie er ist und ermöglicht es, ihn mit objektorientierter Programmiersemantik in einer beliebigen Anzahl von zugrundeliegenden Datenspeichern zu persistieren.
MicroStream ermöglicht es Ihnen außerdem, in der gedanklichen Welt der Objekte und Eigenschaften zu bleiben, während das Framework sich darum kümmert, zu speichern und wiederherzustellen. Als Entwickler müssen Sie zwar immer noch mit "Meta-Angelegenheiten" wie Abrufstrategien und persistenten Grenzen auseinandersetzen, aber diese werden einfach und weitgehend ohne Einmischung in den Anwendungscode definiert, der genauso funktioniert wie ohne Persistenzgedanken.
MicroStream enthält das Konzept einer Root, die die Wurzel eines Persistenzbaums definiert. Wie Listing 1 zeigt, kann eine Anwendung mehr als eine Root aufweisen.
Listing 1
// Saving
EmbeddedStorageManager manager = EmbeddedStorage.start();
manager.setRoot(myObject);
manager.storeRoot();
//Restoring
EmbeddedStorageManager storageEngine = EmbeddedStorage.start();
myObject = (MyClass) storageEngine.root();
MicroStream ist ein interessanter neuer Ansatz für die Objektpersistenz in Java und auf jeden Fall einen Blick wert.
TeaVM
Java nach WebAssembly (Wasm) zu kompilieren, war lange Zeit eine Art unentdeckter Graubereich - bis TeaVM kam. Das unterstützt die Transpilierung von Java-Bytecode sowohl in JavaScript (ähnlich wie Google Web Toolkit) als auch in Wasm. Damit lassen sich Webanwendungen erstellen, die Java-Code und -Bibliotheken innerhalb des Browsers verwenden.
Bei TeaVM wird der Code zunächst in eine Low-Level-Zwischendarstellung kompiliert, die dann weiter optimiert und in WebAssembly-Anweisungen übersetzt wird. Der resultierende Code ist hocheffizient und kann in jedem modernen Browser ausgeführt werden, der WebAssembly unterstützt. Einer der Hauptvorteile von TeaVM ist seine Unterstützung für beliebte Java-Frameworks wie Spring und Hibernate. Entwickler können diese Frameworks nutzen, um komplexe, vollständige Webanwendungen zu erstellen - und den Code dann für den webbasierten Einsatz in Wasm kompilieren.
Obwohl TeaVM noch in den Kinderschuhen steckt bietet es derzeit den besten Pfad von Java zu Wasm.
Apache Flink
Flink wurde 2011 ins Leben gerufen und hat sich zu einem führenden Framework in Sachen Event Processing entwickelt. Es wird von vielen namhaften Unternehmen wie Airbnb und Netflix eingesetzt und bietet eine Menge Leistung in einem Paket, das relativ einfach zu managen ist. Dabei vereint Apache Flink Fehlertoleranz und State Management in einer verteilten, containerfreundlichen Form mit dynamischer Skalierungsmöglichkeit.
Typischerweise wird Flink in Docker mit Kubernetes ausgeführt. Mit Hilfe eines Frameworks wie Apache Beam läuft es aber auch auf Serverless-Infrastrukturen wie AWS Lambda, Azure Functions oder Google Cloud Functions. Das hat den Vorteil, dass nur die während der Verarbeitung genutzten Rechenressourcen bezahlt werden müssen und ermöglicht eine einfachere und effizientere Skalierung.
Flink verfügt über eine Vielzahl von Funktionen, einige davon sind ganz einfach zu verstehen. In Listing 2 zum Beispiel überwacht Flink einen Socket an Port 9999, zählt die Wörter im dort empfangenen Text und gibt die Daten auf der Konsole aus.
Listing 2
DataStream<String> text = env.socketTextStream("localhost", 9999);
DataStream<Tuple2<String,Integer>> wordCounts = text
.flatMap(new FlatMapFunction<String, Tuple2<String,Integer>>() {
public void flatMap(String value, Collector<Tuple2<String,Integer>> out) {
for (String word : value.split(" ")) {
out.collect(new Tuple2<String,Integer>(word, 1));
}
}
})
.keyBy(0)
.sum(1);
wordCounts.print();
Wie Sie sehen, arbeitet Flink in einem funktionalen Stil, während die Plattform selbst die Erweiterung der Funktionalität auf eine Cloud-Infrastruktur auf skalierbare, fehlertolerante Weise sicherstellt. Alles in allem ein beeindruckendes Projekt, um Echtzeitereignisse zu verarbeiten. (fm)
Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation Infoworld.