BellSoft

BellSoft

@bellsoft.bsky.social

Delivering #LibericaJDK: supported, #Java standard compatible binaries. Among Top-5 #OpenJDK contributors.

143 followers16 following666 posts

JDK 28's incubating JSON API lets you construct JSON objects from maps of JSON values. Use JsonString.of() for Java String values. JsonString handles JSON-level escaping, so embedded quotation marks are emitted correctly in the generated JSON text. #Java

A connect timeout alone is not enough to bound an HTTP request. Java's HttpClient has a client-level timeout for establishing new connections, and HttpRequest can set a per-request timeout for receiving the response. Set connectTimeout() on the client and timeout() on the request. Java 11+. #Java

Switzerland, catch Dmitry Chuyko at your local JUG 🇨🇭 Oct 22 · St. Gallen Know what goes into your Java containers with SBOMs. Oct 26 · Basel Explore Java performance gains without changing your code. Details: www.jug.ch

jug.chJava User Group Switzerland: HomeJUG Switzerland aims at promoting the application of Java technology in Switzerland. The Java User Group Switzerland facilitates the sharing of experience and information among its members. This is ac...

Several callers waiting on the same CompletableFuture? orTimeout() times out the future you call it on. Use copy() to give one caller its own timeout without timing out the shared future. Java 9+. #Java

A semaphore caps concurrent calls, but callers can still wait for a permit. tryAcquire(timeout, unit) puts a bound on that wait, so you can stop waiting when capacity remains unavailable. This only limits permit acquisition. The API call itself still needs its own timeout. Works with virtual threads

Thank you to everyone who stopped by the BellSoft stand at Devoxx Belgium! We hope you enjoyed the conference as much as we did. Thanks also to everyone who took part in our Java and AI survey. We’ll share the results soon. And congratulations to our raffle winner! Enjoy your Meta Quest 3 🎉

Need a rolling average over latency samples? Gatherers.windowSliding(3) builds overlapping windows of three consecutive elements. Map each window to its average, and you get a rolling average directly in the stream pipeline. Java 24+.

Hello from Devoxx Belgium! If you’re here this week, come by stand #13 between sessions to say hi to the BellSoft team and talk Java. There’s a Meta Quest 3 raffle at the stand, too. Fill out our Java and AI survey to take part. See you at the stand!

Virtual threads work well for tasks that spend much of their time waiting. A shared Semaphore limits concurrent calls to a downstream service: each task gets its own virtual thread, and up to 10 tasks can enter the protected API at once. Java 21+.

Calling reversed() on an ArrayList does not create a copy. It returns a live reverse-ordered view backed by the original list. Change the view and the original changes too. If you need an independent mutable list in reverse order, create a new ArrayList from the reversed view. Java 21+.

Gatherers.mapConcurrent() runs stream transformations concurrently on virtual threads, limiting concurrency and preserving stream order. In this example, up to four blocking product lookups can run concurrently, and the resulting list follows the order of the original IDs. Java 24+.

🎙 @asm0dey.site joined Allyson Klein on the podcast with one number from our Spring I/O survey: 64% had never considered whether a Dockerfile affects security. From there, the conversation lands on a much more uncomfortable metric: time from public disclosure to a patched production stack. Listen:

techarena.aiBellSoft's Pasha Finkelshteyn on Dockerfile Security RisksPasha Finkelshteyn of BellSoft discusses production blind spots, CVE patch windows and the EU Cyber Resilience Act deadline.

JEP 540 brings a simple JSON API to JDK 28 as an incubator module. The jdk.incubator.json module provides a small API for parsing, navigating, and generating JSON. No data binding or streaming APIs. It stays focused on straightforward JSON processing.

Baruch Sadogursky built a software factory with AI agents that shipped a real MVP in three days. 💥 The setup brought together rival coding agents, shared context, and review gates to see what happens when AI agents work as a team. Bring your AI questions to the live session:

jrush.bell-sw.comJRush Episode 8: Java in the Age of AIAI works in the demo, then falls apart on real code. Three practitioners show what actually works. Live, free, Sept 29. Register now.

Sometimes, you end up being responsible for vulnerable code you didn't even write. A vulnerable JDK. A compromised package. An outdated base image. Third-party components become part of your product the moment they are shipped with it.

View full thread

BellSoft Hardened Images can simplify this task for the base image layer. Each image comes with an SBOM, BellSoft continuously monitors the images for newly discovered CVEs, and commercial plans provide SLA-backed remediation.

You still need to determine if a vulnerability is exploitable in your product. But if it stems from the base image, you have complete data about base image contents and a defined remediation process from the image vendor. Learn more about BellSoft Hardened Images: bell-sw.com/bellsoft-har...

Sometimes, you end up being responsible for vulnerable code you didn't even write. A vulnerable JDK. A compromised package. An outdated base image. Third-party components become part of your product the moment they are shipped with it.

Under the CRA, if an actively exploited vulnerability is in a third-party component integrated in your product, it can become your reporting responsibility if this vulnerability can be exploited in your product. This is why visibility into third-party components is important for timely response.

Simon Martinelli has spent the last two years applying AI to large #Java systems. At JRush Episode 8, he’ll share lessons from real modernization work: the approaches that helped, the ones that had to be dropped, and the places where AI still needs a careful human hand: jrush.bell-sw.com/episode8

View full thread

Severe security incidents are a separate reporting track. If an incident seriously affects, or could seriously affect, the security of the product, it needs to be reported.

For manufacturers, a vulnerability becomes mandatorily reportable when there is reliable evidence that a malicious actor has actually exploited it. Severity alone does not trigger the reporting obligation.

A proof of concept with no evidence of malicious exploitation? No mandatory Article 14 vulnerability report. A zero-day found by a testing lab, but no evidence that anyone has exploited it? Same answer.

After years of Project Valhalla work, value objects are coming to JDK 28 as a preview feature. JEP 401 introduces objects without identity. For value objects, == compares their values instead of object identity.

Two separately created ValuePoint instances with the same fields are indistinguishable, while regular objects still keep identity-based comparison. First preview.