OUR

Courses

Virtual Threads represent an innovation in Java, introduced with Project Loom. They serve to make the simultaneous processing of multiple tasks more efficient. These threads are designed as a lightweight alternative to traditional operating system threads and aim to optimize the performance of applications that handle a large number of parallel processes, especially during I/O-waiting operations.

The advantages of virtual threads are numerous:

Enhanced scalability: Unlike platform threads, virtual threads allow a single Java instance to manage millions of concurrent threads, breaking the limits of traditional threads.

Increased efficiency: Since virtual threads are under the control of the JVM, they can be scheduled and managed with greater efficiency in terms of CPU utilization, which is particularly noticeable when a thread is waiting for an I/O action.

Simplifying parallelism: Virtual Threads allow developers to use familiar synchronization tools to synchronize access to shared resources, instead of relying on more complex asynchronous structures.

Less unnecessary code: The ability to apply synchronous programming patterns reduces the need for additional code that often accompanies asynchronous programming.

Optimized performance for I/O-intensive applications: Applications that rely heavily on input and output operations benefit particularly from the properties of Virtual Threads, as these minimize blocking times.

Simplified error handling: Handling errors in a synchronous programming style is generally more intuitive and easier to implement than in an asynchronous context.

Structured concurrency is a programming paradigm in Java that aims to simplify and improve the safety of working with concurrent processes—that is, the parallel execution of multiple computations. It's a concept that binds the lifetime of concurrent processes to the program structure in which they are started. This means that if a method or block of code initiates concurrent processes, these processes must not continue running beyond the completion of that method or block's execution.

Structured Concurrency offers several advantages:

Easier error handling: Errors occurring in concurrent processes can be handled at the point where the processes were started, simplifying and centralizing error handling.

Improved readability: Because the concurrent processes have a clearly defined structure, the code containing concurrent operations becomes easier to read and understand.

Lifecycle management: Structured concurrency helps manage the lifecycle of threads by ensuring that all started threads terminate before the parent block completes. This prevents "orphaned" threads that continue running and consuming resources after the main program finishes.

Safe termination: When a block of code that initiates concurrent processes completes, all its processes are properly terminated. This prevents problems that could arise from unexpectedly aborted operations.

Improved resource utilization: By terminating concurrent processes in a structured manner, more efficient resource utilization can be achieved, as resources are not unnecessarily occupied by processes that are no longer needed.

In Java, structured concurrency can be implemented through various mechanisms such as the ExecutorService API or frameworks and libraries that support this paradigm. It is also a key part of the design behind Project Loom, which plans the introduction of lightweight threads—virtual threads—to further simplify the use of structured concurrency in Java.

The Vector API in Java is an experimental API introduced as part of Project Panama to provide a new way to efficiently execute vector-based computations. This API represents a significant advancement in the Java platform, as it allows developers to directly leverage the vector processing capabilities of modern CPUs within Java.

Here are the key points of the Vector API:

Performance improvement: By using SIMD (Single Instruction, Multiple Data) instructions, the Vector API can perform multiple data operations simultaneously, which can lead to a significant acceleration of calculations.

Hardware utilization: The API is designed to effectively utilize the specific vector hardware instruction sets found in modern processors, such as AVX in x86 or NEON in ARM.

Clarity and security: Although it is a low-level operation, the API is designed to fit within the Java language and maintain Java's security and clarity guarantees.

Platform independence: Programs using the Vector API are platform-independent because the API abstracts away the differences in processor instruction sets. The JVM is responsible for executing the most appropriate instruction set for the current platform.

Developer-friendliness: The API is designed to be easy to use and allows seamless integration into existing code, enabling developers to make powerful optimizations without an in-depth understanding of vector hardware.

The Vector API is under incremental development and is part of the JDK Enhancement Proposals (JEPs), which govern the development and integration of new features into the JDK. With each new Java release, improvements and extensions are made to the Vector API to enhance performance and usability.

 

Final updates for Java 18-21

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

Final innovations 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 changes

  • 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

Previous knowledge

  • Basics in Java Programming
    Java Programming Language

Target group

  • Java developers who have used Java 8-17
    want to upgrade to Java 21 or Java 25

Trainers

At the heart of our work is our enthusiasm for technologies, the satisfaction of our customers, and the resulting relationship of trust.

Mag. DI Löwenstein

Bernhard Löwenstein holds a Master's degree in Computer Science and Information Management from TU Wien. He has worked for almost two and a half decades as a developer, trainer, and consultant for Java and related frameworks.

Certified Java, Javascript, Spring and Angular Developer

DI Schaffler-Glößl

Michael Schaffler-Glößl holds a degree in Computer Science from TU Wien. For more than 30 years, he has worked as a software developer, consultant, and trainer for Java, Spring, Java EE, microservices, NoSQL databases, Docker, Kubernetes, Angular, AI, and other topics.

Certified Java 21, Javascript, Spring, JEE and Angular Developer and Architect

Ben Rowley

Mr. Rowley works as a Senior Software Developer & Trainer for Java, Spring and AI.

Mr. Rowley has extensive experience in the field of artificial intelligence and its integration into enterprise applications.

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.