Click any tag below to further narrow down your results
Links
Durable Execution (DE) engines allow for the persistence of multi-step workflows, enabling them to resume from the last successful step after interruptions. This article explores the development of a simple DE engine called Persistasaurus in Java, which utilizes SQLite for logging execution state and highlights key implementation choices.
The blog post discusses how Java unit testing can be leveraged as a debugging tool to effectively identify and resolve logic errors. It emphasizes the importance of writing comprehensive test cases that not only verify the correctness of code but also assist in pinpointing the source of bugs. By integrating testing into the development process, developers can enhance code reliability and maintainability.
Combining Rust and Java can enhance performance and memory management in applications. This guide details how to integrate Rust into Java projects using JNI, covering topics like packaging native libraries, unifying logging, handling async functions, and mapping errors to exceptions. A practical example is provided to demonstrate these integrations effectively.
JDK 25 has been officially released as Generally Available, with build 36 confirmed as the production-ready version following the absence of major bugs since the last Release Candidate. This version includes eighteen new JEPs, a multitude of enhancements, and numerous bug fixes, along with GPL-licensed builds available from Oracle.
The author explores the implementation of Virtual Threads in a Java web crawler, discovering that while they significantly improve URL processing speed, they can also lead to memory issues like OutOfMemoryError due to the lack of built-in concurrency limits. To mitigate the problem, the author suggests using semaphores to control concurrency and implementing rate limiting to prevent overwhelming the system. Ultimately, the experience highlights the need for a new approach to resource management with Virtual Threads.
The article discusses the enduring relevance of Java as it reaches its 30th anniversary, highlighting how it has adapted to modern development practices and remains integral to DevOps platforms. It emphasizes Java's ability to evolve without losing its core principles, ensuring it continues to meet the demands of contemporary software development.
Java 25 has reached its release candidate stage and is set for general availability on September 16, introducing 17 new features, including the end of support for 32-bit x86. Notable additions include flexible constructor bodies, a new cryptography API, and improvements for thread variables, while the release highlights Java's continued relevance despite competition from languages like JavaScript and Kotlin. Adoption of LTS versions remains cautious, with organizations typically sticking to longer-term support releases.
The article provides an in-depth exploration of Java's garbage collection (GC) mechanisms, detailing how they manage memory in Java applications. It covers various GC algorithms, their characteristics, and how developers can optimize performance while minimizing memory leaks and inefficiencies. Understanding these concepts helps developers make informed decisions about memory management in their Java applications.