UNSERE

Schulungen

Virtual Threads stellen in Java eine Innovation dar, die mit dem Project Loom ins Leben gerufen wurde. Sie dienen dazu, die gleichzeitige Bearbeitung vielfältiger Tasks effektiver zu gestalten. Diese Threads sind als eine Art leichtgewichtige Alternative zu den herkömmlichen Betriebssystem-Threads konzipiert und haben das Ziel, die Performanz von Applikationen, die eine hohe Anzahl paralleler Prozesse bewältigen, speziell bei I/O-wartenden Operationen, zu optimieren.

Die Vorteile von Virtual Threads sind vielfältig:

Erweiterte Skalierbarkeit: Im Gegensatz zu Plattform-Threads ermöglichen Virtual Threads das Management von Millionen gleichzeitiger Threads durch eine einzige Java-Instanz, was die Grenzen traditioneller Threads sprengt.

Gesteigerte Effizienz: Da Virtual Threads unter der Kontrolle der JVM stehen, können sie mit einer höheren Effizienz hinsichtlich der CPU-Nutzung geplant und verwaltet werden, was insbesondere dann zur Geltung kommt, wenn ein Thread auf eine I/O-Aktion wartet.

Vereinfachung von Parallelität: Mit Virtual Threads können Entwickler auf vertraute Synchronisationswerkzeuge zurückgreifen, um den Zugriff auf geteilte Ressourcen zu synchronisieren, anstatt sich auf komplexere asynchrone Strukturen verlassen zu müssen.

Weniger überflüssiger Code: Die Möglichkeit, synchrone Programmiermuster anzuwenden, verringert den Bedarf an zusätzlichem Code, der oft mit asynchroner Programmierung einhergeht.

Optimierte Performance bei I/O-intensiven Applikationen: Anwendungen, die stark von Ein- und Ausgabeoperationen abhängen, profitieren in besonderem Maße von den Eigenschaften der Virtual Threads, da diese die Blockadezeiten minimieren.

Vereinfachte Fehlerbehandlung: Die Handhabung von Fehlern in einem synchronen Programmierstil ist in der Regel intuitiver und leichter umzusetzen als in einem asynchronen Kontext.

Structured Concurrency ist ein Programmierparadigma in Java, das darauf abzielt, die Arbeit mit nebenläufigen Prozessen – also die Ausführung von mehreren Berechnungen parallel – zu vereinfachen und sicherer zu machen. Es handelt sich um ein Konzept, das die Lebensdauer von nebenläufigen Prozessen an die Programmstruktur, in der sie gestartet werden, bindet. Dies bedeutet, dass wenn eine Methode oder ein Block von Code nebenläufige Prozesse initiiert, diese Prozesse nicht über das Ende der Ausführung dieser Methode oder des Blocks hinaus weiterlaufen dürfen.

Structured Concurrency bringt mehrere Vorteile mit sich:

Einfachere Fehlerbehandlung: Fehler, die in nebenläufigen Prozessen auftreten, können an dem Punkt behandelt werden, an dem die Prozesse gestartet wurden, was die Fehlerbehandlung vereinfacht und zentralisiert.

Verbesserte Lesbarkeit: Da die nebenläufigen Prozesse eine klar definierte Struktur haben, wird der Code, der nebenläufige Operationen enthält, einfacher zu lesen und zu verstehen.

Lebenszyklusmanagement: Structured Concurrency hilft bei der Verwaltung des Lebenszyklus von Threads, indem es sicherstellt, dass alle gestarteten Threads beendet werden, bevor der übergeordnete Block abgeschlossen ist. Dies vermeidet „verwaiste“ Threads, die nach Beendigung des Hauptprogramms weiterlaufen und Ressourcen verbrauchen.

Sichere Beendigung: Wenn ein Block von Code, der nebenläufige Prozesse initiiert, abgeschlossen wird, werden alle seine Prozesse ordnungsgemäß beendet. Dies verhindert Probleme, die durch unerwartetes Abbrechen von Operationen entstehen könnten.

Verbesserte Ressourcennutzung: Durch die strukturierte Beendigung von nebenläufigen Prozessen kann eine effizientere Ressourcennutzung erzielt werden, da Ressourcen nicht unnötig von nicht mehr benötigten Prozessen belegt werden.

In Java kann Structured Concurrency durch verschiedene Mechanismen wie die ExecutorService-API oder Frameworks und Bibliotheken, die dieses Paradigma unterstützen, umgesetzt werden. Es ist auch ein wichtiger Teil des Designs hinter Project Loom, das die Einführung von leichtgewichtigen Threads – den Virtual Threads – plant, welche die Anwendung von Structured Concurrency in Java weiter erleichtern sollen.

Das Vector API in Java ist eine experimentelle API, die als Teil des Project Panama eingeführt wurde, um einen neuen Weg für die effiziente Ausführung von vektorbasierten Berechnungen zu ermöglichen. Diese API stellt einen großen Fortschritt in der Java-Plattform dar, da sie es ermöglicht, Vorteile der Vektorverarbeitungsfähigkeiten moderner CPUs direkt in Java zu nutzen.

Hier sind die wichtigsten Punkte des Vector API:

Performance-Steigerung: Durch die Nutzung von SIMD (Single Instruction, Multiple Data) Instruktionen können mit dem Vector API mehrere Datenoperationen gleichzeitig ausgeführt werden, was zu einer deutlichen Beschleunigung von Berechnungen führen kann.

Hardware-Ausnutzung: Das API ist darauf ausgelegt, die spezifischen Vektorhardware-Befehlssätze, die in modernen Prozessoren vorhanden sind, wie AVX in x86 oder NEON in ARM, effektiv zu nutzen.

Klarheit und Sicherheit: Obwohl es sich um eine Low-Level-Operation handelt, ist die API so gestaltet, dass sie in die Java-Sprache passt und die Sicherheits- und Klarheitsgarantien von Java beibehält.

Plattformunabhängigkeit: Programme, die das Vector API verwenden, sind plattformunabhängig, da die API die Unterschiede in den Befehlssätzen der Prozessoren abstrahiert. Die JVM ist verantwortlich für die Ausführung des am besten geeigneten Befehlssatzes für die aktuelle Plattform.

Entwicklerfreundlichkeit: Das API ist so konzipiert, dass es einfach zu verwenden ist und eine nahtlose Integration in den bestehenden Code ermöglicht, wodurch Entwickler ohne tiefgreifendes Verständnis der Vektorhardware leistungsstarke Optimierungen vornehmen können.

Das Vector API befindet sich in einem inkrementellen Entwicklungsprozess und ist Teil der JDK-Enhancement-Proposals (JEPs), die die Entwicklung und Integration neuer Features in das JDK steuern. Mit jeder neuen Java-Version werden Verbesserungen und Erweiterungen am Vector API vorgenommen, um die Performance und Benutzerfreundlichkeit zu steigern.—-

 

Finale Neuerungen Java 18 – 21

  • Pattern Matching for switch
  • Record Patterns
  • Scoped Values
  • Foreign Function & Memory API
  • Virtual Threads
  • Sequenced Collections
  • Internet-Address Resolution SPI

Finale Neuerungen Java 22-25

  • Launch Multi-File Source-Code Programs
  • Unnamed Variables & Patterns
  • Markdown Documentation Comments
  • Stream Gatherers
  • Key Derivation Function API
  • Module Import Declarations
  • Flexible Constructor Bodies
  • Compact Source Files and Instance Main
  • Class-File API
  • Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism
  • Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm

JVM Änderungen

  • Ahead-of-Time Class Loading & Linking, Profiling, Command-Line Ergonomics
  • JFR Cooperative Sampling
  • Compact Object Headers
  • JFR Method Timing & Tracing
  • Remove the Windows 32-bit x86 Port
  • Garbage Collector Changes (Shanandoa, ZGC)
  • 32-bit x86 Port for Removal

Previews & Incubators

  • Stable Values
  • PEM Encodings of Cryptographic Objects
  • Structured Concurrency
  • Primitive Types in Patterns, instanceof, and switch
  • Vector API
  • JFR CPU-Time Profiling
  • String Templates

Vorkenntnisse

  • Grundlegende Kenntnisse in der
    Programmiersprache Java

Zielgruppe

  • Java-Entwickler, die von Java 8-17
    auf Java 21 oder Java 25 umsteigen wollen

Trainer

Im Mittelpunkt unserer Arbeit steht unsere Begeisterung für Technologien, die Zufriedenheit unserer Kund:innen und das dadurch erreichte Vertrauensverhältnis.

Mag. DI Löwenstein

Mag. DI Bernhard Löwenstein hat Informatik und Informatikmanagement an der TU Wien studiert. Er ist seit fast zweieinhalb Jahrzehnten als Entwickler, Trainer und Consultant für Java und zugehörige Frameworks tätig.

Zertifizierter Java, Javascript, Spring und Angular Developer

DI Schaffler-Glößl

DI Michael Schaffler-Glößl hat Informatik an der TU Wien studiert. Seit mehr als 30 Jahren arbeitet er als Software Entwickler, Consultant und Trainer für Java, Spring, Java EE, Microservices, NoSql Datenbanken, Docker, Kubernetes, Angular, AI und weitere Themen.

Zertifizierter Java 21, Javascript, Spring, JEE und Angular Developer und Architekt

Ben Rowley

Hr. Rowley arbeitet als Senior Software Entwickler & Trainer für Java, Spring und KI.

Hr. Rowley hat viel Erfahrung im Bereich künstlicher Intelligenz und deren Integration in die Enterprise Anwendungen

Gepostet auf Google Google
Michaela Stradner profile picture
Michaela Stradner
Google star 1Google star 2Google star 3Google star 4Google star 5Trustindex überprüft, ob die Originalquelle der Bewertung Google ist.
Ich kann die online Schulung Clean Code jedem empfehlen. Sinnvolle Inhalte mit kleinen Praxisbeispielen zum selbst ausprobieren der zuvor besprochenen Themen.
Gepostet auf Google Google
H B profile picture
H B
Google star 1Google star 2Google star 3Google star 4Google star 5Trustindex überprüft, ob die Originalquelle der Bewertung Google ist.
hatte eine richtig gute Zeit. Trainer nimmt sich Zeit auf Fragen einzugehen und die Schulung ist gut aufgebaut.
Gepostet auf Google Google
sanna (Sanna0908) profile picture
sanna (Sanna0908)
Google star 1Google star 2Google star 3Google star 4Google star 5Trustindex überprüft, ob die Originalquelle der Bewertung Google ist.
Gute Auswahl an Kursen, hab mich dann für einen Git-Kurs entschieden. Vortragender war kompetent und ist super auf die Wünsche und das Arbeitstempo der Gruppe eingegangen, das Wissen wurde perfekt übermittelt. Getränkebar war auch toll :)
Gepostet auf Google Google
Michelle-Lea Breitwieser profile picture
Michelle-Lea Breitwieser
Google star 1Google star 2Google star 3Google star 4Google star 5Trustindex überprüft, ob die Originalquelle der Bewertung Google ist.
Die Spring-Boot-Schulung war super erklärt und angenehm gestaltet – ganz ohne Stress oder Zeitdruck. Es gab viele hilfreiche Unterlagen, die man auch später noch gut als Nachschlagewerk nutzen kann. Auch die Verpflegung war top, sodass man sich den ganzen Tag gut aufgehoben gefühlt hat. Insgesamt eine rundum gelungene Schulung, die ich gerne weiterempfehle.
Gepostet auf Google Google
Lukas Schandl profile picture
Lukas Schandl
Google star 1Google star 2Google star 3Google star 4Google star 5Trustindex überprüft, ob die Originalquelle der Bewertung Google ist.
Ich habe dort einen Spring Boot Kurs besucht und kann nur positives darüber verlieren. Auf jeden Fall weiterzuempfehlen.
Gepostet auf Google Google
Gabriel Hübner profile picture
Gabriel Hübner
Google star 1Google star 2Google star 3Google star 4Google star 5Trustindex überprüft, ob die Originalquelle der Bewertung Google ist.
Habe gerade ein 4 tägiges Spring Boot 4 Training dort abgeschlossen. Der Trainer war super, mit einer sehr angenehmen und netten Art. Das Tempo war nicht zu schnell und es ist immer sofort auf einen eingegangen worden, wenn man Fragen hatte. Habe da definitiv etwas neues gelernt und jetzt ein besseres Verständnis von dem Framework. Kann das Training nur wärmstens weiterempfehlen!
Gepostet auf Google Google
Rahul Toora profile picture
Rahul Toora
Google star 1Google star 2Google star 3Google star 4Google star 5Trustindex überprüft, ob die Originalquelle der Bewertung Google ist.
Sehr gut erklärter Spring Boot Kurs!
Gepostet auf Google Google
gweep gweep profile picture
gweep gweep
Google star 1Google star 2Google star 3Google star 4Google star 5Trustindex überprüft, ob die Originalquelle der Bewertung Google ist.
Mittlerweile zwei Schulung bei der CIIT absolviert (Java und Python), war bisher sehr zufrieden und werde ggf. auch noch weitere Schulungen besuchen. Auch hinsichtlich Versorgung ist alles bestens.
Gepostet auf Google Google
Stefan Machura profile picture
Stefan Machura
Google star 1Google star 2Google star 3Google star 4Google star 5Trustindex überprüft, ob die Originalquelle der Bewertung Google ist.
Super Einsteiger-Schulung von Michael Schaffler für Angular. Gut strukturierter und verständlicher Aufbau mit viel Praxis anhand einer kleinen Übungsanwendung. Fertig vorbereitete, virtuelle Schulungsumgebungen die auch Remote aus dem Home Office gut verwendet werden können. Ausreichend Zeit für Rückfragen und Hilfestellungen.