loom
BlockHound
Our great sponsors
loom | BlockHound | |
---|---|---|
10 | 6 | |
1,827 | 1,297 | |
1.2% | 1.3% | |
10.0 | 7.4 | |
6 days ago | 6 days ago | |
Java | Java | |
GNU General Public License v3.0 only | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
loom
-
Using Java's Project Loom to build more reliable distributed systems
It's more accurate to say Loom is [a particular type of] continuations in the JVM, which can be used to implement green threads / fibers.
You can see the implementation of VirtualThread here: https://github.com/openjdk/loom/blob/fibers/src/java.base/sh...
This uses the internal 'one-shot delimited continuation': https://github.com/openjdk/loom/blob/fibers/src/java.base/sh...
So, at least in principle, there is scope for other styles of concurrency to be implemented over this.
- Virtual thread (along with Structured concurrency and Scope Local) is previewing in JDK19?
-
6 .NET Myths Dispelled — Celebrating (Almost) 21 Years of .NET
Loom is actively developed https://github.com/openjdk/loom
- Project Valhalla status summary
-
Brian Goetz: "I think Project Loom is going to kill Reactive Programming"
Currently the Thread public constructor defaults to platform threads to be fully backwards compatible. So all libraries must be updated to support the new model.
-
Java’s Project Loom, Virtual Threads and Structured Concurrency with Ron Pressler
I've been casually following the repo ( https://github.com/openjdk/loom ) and the mailing list ( https://mail.openjdk.java.net/mailman/listinfo/loom-dev ) over the last 18 months or so, and it definitely appears that things are ramping up as of late. The implication (as I see it) is that they are relatively happy with the general design are and are at the point where they want help from experts in the various areas of the JDK (GC, Debugging, etc) to make sure that their pieces play well with Loom.
-
[Project Loom] New ea build based on jdk-17+13 is available for download.
https://github.com/openjdk/loom/blob/fibers/src/java.base/share/classes/sun/nio/ch/NioSocketImpl.java#L177
- [project loom] New thread builder API.
-
Have created a short and practical intro into what project loom is all about.
[1] https://github.com/openjdk/loom/blob/fibers/src/java.base/share/classes/java/lang/VirtualThread.java#L933
- Loom adds a feature to generate thread dump in JSON format.
BlockHound
- Is there a good way to monitor code for blocking operations?
-
Reactive Backend Applications with Spring Boot, Kotlin and Coroutines (Part 1)
There is a great tool called Blockhound we can use to detect if/when we have a blocking call in our application. This way, we can ensure that we don't break the non-blocking nature of our application by mistake while developing new features. Setting it up is fairly straightforward.
- Using Java's Project Loom to build more reliable distributed systems
-
3 Reasons Why All Java Developers Should Consider Quarkus
There's even a test library to detect them: https://github.com/reactor/BlockHound
-
BlockHound: how it works
One of the talks in my current portfolio is Migrating from Imperative to Reactive. The talk is based on a demo migrating from Spring WebMVC to Spring WebFlux in a step-by-step approach. One of the steps involves installing BlockHound: it allows to check whether a blocking call occurs in a thread it shouldn't happen and throws an exception at runtime when it happens.
-
Kicking Spring Native's tires
The first step is to make the application compatible with GraalVM. We need to remove Blockhound from the code. Blockhound allows verifying that no blocking code runs in unwanted places. It's a Java agent that requires a JDK, not a JRE. It's great for a demo, but it has nothing to do with a production application.
What are some alternatives?
MQTTnet - MQTTnet is a high performance .NET library for MQTT based communication. It provides a MQTT client and a MQTT server (broker). The implementation is based on the documentation from http://mqtt.org/.
spring-native - Spring Native is now superseded by Spring Boot 3 official native support
cats - Lightweight, modular, and extensible library for functional programming.
imperative-to-reactive - Shows how to migrate from a Imperative Programming model to a Reactive Programming model step-by-step, while keeping caching
rpi-projects - Drivers and home automation projects for Raspberry PI.
lucene-grep - Grep-like utility based on Lucene Monitor compiled with GraalVM native-image
csharplang - The official repo for the design of the C# programming language
reactive-kotlin-weather-api
coyote - Coyote is a library and tool for testing concurrent C# code and deterministically reproducing bugs.
agroal - The natural database connection pool
JDK - JDK main-line development https://openjdk.org/projects/jdk
reactor-core - Non-Blocking Reactive Foundation for the JVM