Best of Awesome Java Newsletter2025

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

    7 Habits That Quietly Made Me a 10x Developer (No, Not ChatGPT)

    Seven productivity habits that can significantly improve developer efficiency: automating repetitive tasks through custom scripts and tools, writing code with future maintainability in mind, documenting debugging processes before starting, building personal productivity tools, timeboxing deep work sessions, studying and adapting workflows from successful projects, and conducting weekly solo retrospectives to identify improvements.

  2. 2
    Article
    Avatar of java_libhuntAwesome Java Newsletter·1y

    CI/CD DevOps Pipeline Project: Deployment of Java Application on Kubernetes

    The project outlines the implementation of a CI/CD pipeline to deploy a Java application on Kubernetes. It leverages Jenkins for orchestration, along with tools like Maven, SonarQube, Trivy, and Prometheus for build automation, code quality, security scanning, and monitoring. The setup involves detailed steps for configuring the required infrastructure, integrating DevOps tools, and setting up a monitoring stack with Prometheus and Grafana.

  3. 3
    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.

  4. 4
    Article
    Avatar of java_libhuntAwesome Java Newsletter·41w

    Clean Code Reimagined

    A comprehensive guide to writing clean, maintainable code with practical examples in both Node.js and Java. Covers essential principles including meaningful naming conventions, single responsibility functions, DRY logic implementation, proper formatting, immutability patterns, and structured logging. Emphasizes that clean code is a mindset focused on building resilient, scalable systems that are understandable and extendable for future developers.

  5. 5
    Article
    Avatar of java_libhuntAwesome Java Newsletter·1y

    Understanding concepts in Event Driven Architectures (EDA)

    Event Driven Architecture (EDA) is a popular choice for developing highly scalable distributed systems, where components communicate by sending and reacting to events asynchronously. Key components include event producers, message brokers, and event consumers. Common technologies used are Kafka, RabbitMQ, AWS SNS/SQS, and Google Pub/Sub. EDA offers advantages such as scalability, flexibility, and resilience, but also has challenges like eventual consistency and complex debugging.

  6. 6
    Article
    Avatar of java_libhuntAwesome Java Newsletter·1y

    Spring AI + Java

    This tutorial explains how to integrate Spring AI applications with mcp.run's tool ecosystem. Instructions include creating a chat interface to interact with external tools using OpenAI, setting up required tools, configuring parameters, creating a Spring Boot application, and testing the integration. The complete source code for different implementations is available in the mcpx4j repository.

  7. 7
    Article
    Avatar of java_libhuntAwesome Java Newsletter·1y

    How To Do Logging In Java

    Discover the right logging library for your Java applications and understand how to configure and use them effectively. This guide covers legacy and modern logging libraries including java.util.logging, Log4j, Logback, and SLF4J. Learn best practices for logging, such as choosing appropriate log levels, ensuring proper message contents, and implementing centralized logging solutions within Java applications.

  8. 8
    Article
    Avatar of java_libhuntAwesome Java Newsletter·1y

    Java is dying and it paid off my mortgage

    Moving from the MERN stack to Java, the author feared that working with an 'outdated' language would limit their career prospects. Despite concerns about its dwindling popularity, Java provided stable and high-paying job opportunities that ultimately allowed the author to buy a house. This experience highlighted that mature, less-hyped technologies can still offer rewarding career paths and financial stability.

  9. 9
    Article
    Avatar of java_libhuntAwesome Java Newsletter·1y

    A Beginner’s Guide to Java: 10 Must-Know Development Tools🎉🎉

    Java is expected to remain a dominant programming language by 2025. This guide highlights ten essential tools for Java developers, including IntelliJ IDEA, Maven, Git, Docker, Apidog, JUnit, Eclipse, Gradle, Jenkins, and VisualVM. Each tool offers unique advantages in enhancing productivity, code quality, and project management. While some tools are free, others may require payment. These tools can significantly improve your development workflow and software quality.

  10. 10
    Article
    Avatar of java_libhuntAwesome Java Newsletter·1y

    Project Loom: Structured Concurrency in Java

    Project Loom aims to simplify writing concurrent code in Java through structured concurrency. It introduces structured task scopes to manage concurrency and prevent issues such as thread leaks and resource starvation. By using structured concurrency, the syntactic structure of the code reflects the semantic structure, ensuring that parent-child relationships in threads are properly maintained. This leads to more readable and maintainable concurrent code. Java's existing tools like virtual threads and structured concurrency primitives are discussed, along with examples of setting up and running concurrent tasks efficiently.

  11. 11
    Article
    Avatar of java_libhuntAwesome Java Newsletter·36w

    How to Use innerHTML, innerText, and textContent Correctly in JavaScript

    Explains the differences between three JavaScript DOM properties: innerHTML returns full HTML content with tags, innerText returns only visible styled text respecting CSS rules, and textContent returns all text content regardless of CSS visibility. Each property serves different use cases in DOM manipulation.

  12. 12
    Article
    Avatar of java_libhuntAwesome Java Newsletter·1y

    Java is Very Fast, If You Don’t Create Many Objects

    Creating many objects in Java can significantly impact performance, especially in high-throughput environments. Benchmarking tests show that even small, short-lived objects can reduce performance by 25% due to memory pressure on CPU caches. Using strategies like reusing objects and avoiding allocations can help maintain high performance.

  13. 13
    Article
    Avatar of java_libhuntAwesome Java Newsletter·1y

    Where's Java Going In 2025?

    The post reviews the state of Java in the enterprise environment, highlighting its persistent influence due to stability and support. Despite Oracle's high costs and licensing issues, many companies are moving towards OpenJDK with third-party vendor support. Java's role in cloud-native applications and efforts to improve JVM startup times are also discussed.

  14. 14
    Article
    Avatar of java_libhuntAwesome Java Newsletter·46w

    Spring Data Ahead of Time Repositories

    Spring Data 4.0 introduces Ahead-of-Time (AOT) repositories that generate actual source code for repository query methods at build time instead of runtime. By enabling spring.aot.repositories.enabled=true, the framework converts repository interfaces into concrete implementations with the exact same code developers would write manually. This optimization reduces application startup time and memory usage by moving query parsing and method generation from runtime to build time. The feature is currently available as a preview for JPA (Hibernate) and MongoDB, with more data stores planned for future releases.

  15. 15
    Article
    Avatar of java_libhuntAwesome Java Newsletter·46w

    Beyond Spring: Unlock Modern Java Development with Quarkus

    Quarkus offers a modern alternative to Spring Boot for Java development, focusing on build-time optimization rather than runtime flexibility. Key advantages include faster startup times, lower memory usage, instant hot reload during development, and container-native design. The framework provides type-safe configuration, simplified REST APIs, and optional native compilation with GraalVM while maintaining familiar Java patterns. Quarkus encourages modern Java practices like records, reactive programming, and simplified data access through Panache, making it well-suited for cloud-native applications, microservices, and serverless deployments.

  16. 16
    Article
    Avatar of java_libhuntAwesome Java Newsletter·1y

    Parallel processing with Virtual Threads - A comparative analysis

    Explores the limitations of OS/platform threads and introduces virtual threads from Project Loom in JDK 21 as a solution. Provides a comparative analysis of virtual thread implementations in both JDK and Spring Core Reactor, highlighting use cases, performance metrics including processing time, memory footprint, and GC metrics. Concludes that JDK-based virtual threads are significantly faster for virtual thread implementations, whereas Spring Core Reactor performs better with platform threads.

  17. 17
    Article
    Avatar of java_libhuntAwesome Java Newsletter·1y

    Understanding JVM Garbage Collector Performance :: The Mill JVM Build Tool

    Garbage collectors are vital for managing memory in programming languages, particularly in environments like the JVM. This post explores the fundamental workings of garbage collectors, providing both theoretical insights and real-world benchmarks, especially focusing on JVM implementations. Key points include the design and performance of simple versus modern GCs, comparing them with other strategies like reference counting, and understanding their impact on application performance. Benchmarks for JVM's G1 and ZGC are provided to illustrate practical differences, highlighting how memory allocation and live-set size impact GC pause times and throughput.

  18. 18
    Article
    Avatar of java_libhuntAwesome Java Newsletter·1y

    Top Java Conferences to Attend in 2025

    Explore the top Java conferences to attend in 2025, featuring over 15 prominent events such as Devoxx, JavaOne, Spring I/O, JfocUS, qCon, and JAX. These conferences provide excellent opportunities for networking, skill enhancement, and staying updated with the latest Java technologies, including microservices, cloud computing, and DevOps. They take place in numerous cities worldwide and are organized by various tech communities and groups.

  19. 19
    Article
    Avatar of java_libhuntAwesome Java Newsletter·1y

    Frontend Java Development in 2025

    Java frontend development in 2025 is more accessible than ever with new tools and resources. The Flavour framework simplifies the creation, packaging, and optimization of single-page applications using Java with features like templates, components, routing, and security. A detailed book on Flavour is available, providing guidance for both new and expert developers. The framework allows Java developers to run their code directly in the browser, enhancing responsiveness and reducing latency.

  20. 20
    Article
    Avatar of java_libhuntAwesome Java Newsletter·37w

    Spring Boot 4.0.0-M1 available now

    Spring Boot 4.0.0-M1 milestone release is now available for developers to test and explore upcoming features in the next major version of the popular Java framework.

  21. 21
    Article
    Avatar of java_libhuntAwesome Java Newsletter·1y

    Using RAG and Vector Store with Spring AI

    Learn how to create a Spring Boot application that uses Retrieval Augmented Generation (RAG) with a vector store, integrated with Spring AI. This guide covers setting up Pinecone database, incorporating it with Spring Boot, and using RAG to analyze stock trends. The process uses the `Advisors` API to retrieve the most relevant data before sending a user query to the AI model, significantly improving the results.

  22. 22
    Article
    Avatar of java_libhuntAwesome Java Newsletter·1y

    Exploring Spring Boot Actuator Misconfigurations

    Spring Boot Actuator, used in over 60% of cloud environments for monitoring Java applications, can pose serious security risks if misconfigured. These misconfigurations can expose sensitive data and credentials, and in some cases enable remote code execution. Common vulnerabilities include exposed heap dump files, gateway endpoints, and environment variables. It is crucial to enforce secure configurations, limit endpoint exposure, and keep up-to-date with security practices to protect against these risks.

  23. 23
    Article
    Avatar of java_libhuntAwesome Java Newsletter·1y

    Go's HTTP Server Patterns in Java 25

    This post provides a step-by-step guide to implement a simple web server using Java 25, inspired by patterns from Go's HTTP server. It covers creating and managing wiki pages, using Java's jdk.httpserver module, and integrating templating for HTML content. It also recommends various libraries for handling HTTP requests and templates.

  24. 24
    Article
    Avatar of java_libhuntAwesome Java Newsletter·44w

    From JVM to Native Compilation with Spring Boot: What It Means and Why It Matters

    Spring Boot 3.x now supports native compilation through GraalVM, allowing Java applications to be compiled into standalone executables that start in milliseconds and use significantly less memory than traditional JVM-based applications. This ahead-of-time (AOT) compilation eliminates the need for a JVM at runtime, making Spring Boot applications ideal for microservices, serverless functions, and cloud deployments where fast startup and low resource consumption are critical.

  25. 25
    Article
    Avatar of java_libhuntAwesome Java Newsletter·1y

    Java bytecode hacking for fun and profit

    Java bytecode is a set of atomic instructions that run on the JVM and are essential for optimizing performance in competitions like Battlecode. Optimization can help improve the computational efficiency of AI algorithms by reducing the total instruction count. This post explains the basics of JVM bytecode execution, illustrates optimization techniques through real-world examples, and provides tips for minimizing bytecode use in Java programs.