Alex Nedelcu<p><a href="https://social.alexn.org/tags/Java" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Java</span></a> has its IO implementations. Multiple, actually. They don't have the same properties or ergonomics as <a href="https://social.alexn.org/tags/Scala" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Scala</span></a>'s IO (e.g., flatMaps are not optimized for tail-recursion). People may not like it, but they are deployed at scale.</p><p>Here's what <a href="https://social.alexn.org/tags/Spring" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Spring</span></a> WebFlux uses:<br><a href="https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Mono.html" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">projectreactor.io/docs/core/re</span><span class="invisible">lease/api/reactor/core/publisher/Mono.html</span></a></p><p>Here's the venerable <a href="https://social.alexn.org/tags/ReactiveX" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ReactiveX</span></a> (<a href="https://social.alexn.org/tags/RxJava" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>RxJava</span></a>): <a href="https://reactivex.io/documentation/single.html" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">reactivex.io/documentation/sin</span><span class="invisible">gle.html</span></a></p>