Best of JavaAugust 2025

  1. 1
    Article
    Avatar of java_libhuntAwesome Java Newsletter·35w

    Java desktop app with Shadcn UI

    Building modern desktop applications with Java doesn't have to mean using outdated UI toolkits like Swing or JavaFX. This guide demonstrates how to create a cross-platform Java desktop app using web technologies including shadcn/ui, React, and TypeScript. The approach uses JxBrowser to embed a Chromium-based web view, serves web resources from the classpath for security, and implements type-safe communication between JavaScript and Java using Protobuf and gRPC. This hybrid approach combines the power of Java backend with modern web UI capabilities.

  2. 2
    Article
    Avatar of foojayioFoojay.io·36w

    Preparing for Spring Boot 4 and Spring Framework 7: What’s New?

    Spring Boot 4 and Spring Framework 7 introduce significant enhancements including built-in resilience features with @Retryable and @ConcurrencyLimit annotations, a fluent JMS client API, robust API versioning, and modular architecture. Key improvements include support for Jackson 3.x, JSpecify for null safety, enhanced SSL health reporting, multiple TaskDecorator beans support, and better integration with modern ecosystems like Kotlin 2.2 and Jakarta EE 11. The modular codebase refactoring breaks up monolithic auto-configuration JARs into focused packages, while milestone artifacts are now available in Maven Central for easier dependency management.

  3. 3
    Article
    Avatar of yegor256Yegor's Blog·35w

    The End of Type Annotations

    Type annotations in statically typed languages like Java are a workaround for compiler limitations rather than a necessary feature. A well-designed programming language should be able to infer all types automatically by eliminating features like generics, method overloading, and reflection that make type inference undecidable. This approach would result in cleaner, more readable code while forcing developers to write smaller, more modular programs due to compilation constraints.

  4. 4
    Article
    Avatar of dcmDistributed Computing Musings·34w

    Thundering Herd Problem: Preventing the Stampede – Distributed Computing Musings

    The thundering herd problem occurs when multiple concurrent requests cause cache misses for the same key, leading all requests to hit the database simultaneously and defeating the purpose of caching. The post demonstrates this issue with a Spring Boot application using Redis cache and Postgres database, then presents two solutions: distributed locking using Redis and in-process synchronization with CompletableFuture and ConcurrentHashMap. The distributed lock approach works across multiple nodes but requires additional network calls, while in-process synchronization is faster but only coordinates requests within a single node.

  5. 5
    Article
    Avatar of baeldungBaeldung·35w

    Debugging Spring Boot Applications With IntelliJ IDEA

    The Spring Debugger plugin for IntelliJ IDEA enhances debugging capabilities for Spring Boot applications by providing runtime insights directly in the IDE. It displays loaded beans with visual indicators, shows effective property values and their sources, reveals active database connections, displays transaction metadata and JPA entity states. The plugin works with various run configurations including native Spring Boot, Maven, and Gradle tasks, requiring no special setup beyond installation and running in debug mode.

  6. 6
    Article
    Avatar of collectionsCollections·37w

    Understanding Spring Beans: Creation Methods and Best Practices

    Spring Boot provides six primary methods for creating and managing beans through its IoC container, including stereotype annotations (@Component, @Service, @Repository, @Controller), configuration classes with @Bean, component scanning, dependency injection with @Autowired, conditional beans, and profile-specific beans. The framework handles dependency injection automatically, promoting loose coupling and easier testing. Best practices include using constructor injection, leveraging @Primary for bean conflicts, and avoiding manual object creation with the new keyword to maintain proper IoC container management and AOP capabilities.

  7. 7
    Article
    Avatar of jetbrainsJetBrains·37w

    Rust vs. Java: Choosing the right tool for your next project

    Rust and Java serve different purposes in modern software development. Rust excels in systems programming, WebAssembly, and performance-critical applications with its memory safety guarantees and zero-cost abstractions, while Java dominates enterprise software, Android development, and large-scale backend systems through its mature ecosystem and cross-platform capabilities. Rust has a steeper learning curve but offers predictable performance without garbage collection, whereas Java provides easier adoption with automatic memory management at the cost of runtime overhead. Both languages support modern features like generics and concurrency, and can be used together through interoperability solutions.