# BellSoft Liberica JDK https://bell-sw.com BellSoft provides Liberica JDK — certified, supported OpenJDK builds for Linux, Windows, macOS and embedded platforms. Includes Java 8, 11, 17, 21 and more. ## Products - [10 Things to Consider Before Renewing Oracle License | BellSoft Java](https://bell-sw.com/10-things-to-consider-before-renewing-oracle-license/): Learn how Oracle's changing Java licensing models impact your business. Download our comprehensive guide to make informed decisions about renewing your Oracle license. - [20 Questions to Ask Your Potential OpenJDK Vendor | BellSoft Java](https://bell-sw.com/20-questions-to-ask-your-potential-open-jdk-vendor/): Confused about selecting the right OpenJDK distribution provider? Download our guide with 20 essential questions to make an informed decision. - [Page Not Found | BellSoft Java](https://bell-sw.com/404/): - [Discover the Seven Key Benefits of Liberica JDK | BellSoft Java](https://bell-sw.com/7-reasons-to-choose-liberica-jdk/): Looking for a Oracle Java Alternative? Download our guide to explore the seven key benefits of Liberica JDK, a 100% open-source and TCK-verified Java runtime. - [BellSoft Java Applications Developers highly qualified IT experts | BellSoft Java](https://bell-sw.com/about/): We are a team of highly qualified IT industry professionals with vast experience in building software products and technologies. We work for the largest multinational companies. We are contributors to the leading software technologies. - [Alpaquita container images | BellSoft Java](https://bell-sw.com/alpaquita-containers/): BellSoft provides ready Alpaquita containers on Docker Hub, GHCR, MCR, GCR and Amazon ECR. - [Alpaquita Containers for Spring Boot | BellSoft Java](https://bell-sw.com/alpaquita-containers-for-spring-boot-apps/): Alpaquita Containers for Spring Boot applications help to improve performance up to 30 %. - [Alpaquita Linux — A Minimal and Secure Linux Distribution for Java, Cloud, and Containers](https://bell-sw.com/alpaquita-linux/): Alpaquita Linux is the Alpine-based build fine-tuned for Java with glibc and musl support. Ideal for cloud deployment, containers, and native images. - [Technical Support for Alpaquita Linux | Bellsoft](https://bell-sw.com/alpaquita-support/): With the BellSoft support team, you can focus on deploying infrastructure or services with the utmost level of security in your containerized project. - [Alpaquita End User License Agreement](https://bell-sw.com/alpaquita_eula/): - [BellSoft Hardened Container Images | BellSoft Java](https://bell-sw.com/bellsoft-hardened-container-images/): BellSoft provides hardened container images designed for production environments that require enhanced security, predictable vulnerability management, and transparent build processes. These minimal, regularly updated images come with a comprehensive Security Advisory and represent a unified vendor approach to container hardening. - [BellSoft Hardened Images - Near Zero CVE Container Images | BellSoft Java](https://bell-sw.com/bellsoft-hardened-images/): Deploy secure minimized container images with near-zero CVEs. BellSoft Hardened Images deliver continuous security monitoring, continuous rebuilds, and easy compliance. - [BellSoft Hardened Container Images | BellSoft Java](https://bell-sw.com/bellsoft-hardened-images/vulnerability-comparisons/): BellSoft provides hardened container images designed for production environments that require enhanced security, predictable vulnerability management, and transparent build processes. These minimal, regularly updated images come with a comprehensive Security Advisory and represent a unified vendor approach to container hardening. - [Careers at BellSoft | BellSoft Java](https://bell-sw.com/careers/): BellSoft is a major OpenJDK contributor providing Progressive Java Runtime and other tools for Java apps for modern architectures and cloud. - [Alpaquita vs Alpine comparison | BellSoft Java](https://bell-sw.com/choose-an-optimal-linux-for-the-cloud/): Compare the key features of two lightweight Linux distributions, Alpine and Alpaquita - [Cloud Native Platform | BellSoft Java](https://bell-sw.com/cloud-native-platform/): Alpaquita Cloud Native Platform is the solution for cloud-native Java apps including lightweight Linux and Java runtime, Java tools, and support. - [Comparison Matrix of Popular Linux Distributions | BellSoft Java](https://bell-sw.com/comparison-of-popular-linux-distributions-for-the-cloud/): Confused about which Linux distro to choose for your Java environment? Download our comprehensive comparison table to find the perfect fit based on size, support, and features. - [Bellsoft’s Content Library](https://bell-sw.com/content-library/): Explore a diverse collection of guides, product briefs, e-books, webinars, and videos, all crafted to enhance your understanding and skills in Java programming. - [Join the raffle and win a Steam Deck | BellSoft Java](https://bell-sw.com/devnexus/): Fill in the form to join a raffle for winning a PlayStation 5 - [Join the raffle and win a Beats Studio Pro | BellSoft Java](https://bell-sw.com/devopsday-los-angeles/): Fill in the form to join a raffle for winning a Beats Studio Pro - [Join the raffle and win a Beats Studio Pro | BellSoft Java](https://bell-sw.com/devopsdays-chicago/): Fill in the form to join a raffle for winning a Beats Studio Pro - [Complete our survey for a chance to win a Steam Deck | BellSoft Java](https://bell-sw.com/devoxx-survey/): Complete our survey to join a raffle for winning a Steam Deck - [How to migrate to JDK with minimum effort | BellSoft Java](https://bell-sw.com/effortless-java-upgrade-made-possible/): Discover a solution transforming JDK upgrade into a smooth journey with minimum expenses - [BellSoft at Linaro Connect 19 BKK | BellSoft Java](https://bell-sw.com/events/2019/02/13/Events-Linaro-Connect-BKK/): BellSoft at Linaro Connect 19 BKK Dmitry Chuyko, BKK19-203 JVM on ARM. From sensor to cloud A variety of Java virtual machines on ARM have been around for a long time. - [BellSoft at JBCNConf in Barcelona | BellSoft Java](https://bell-sw.com/events/2019/04/11/Events-JBCNConf/): BellSoft at JBCNConf in Barcelona Dmitry Chuyko, Do not put all eggs in one container Microservice architecture and containerization have become the standards of modern application development. - [BellSoft at Oracle CodeOne 2019 in San Francisco | BellSoft Java](https://bell-sw.com/events/2019/06/05/Events-CodeOne2019/): BellSoft at Oracle CodeOne 2019 Dmitry Chuyko and Alex Belokrylov, Do not put all eggs in one container We will be happy to meet you at Oracle CodeOne conference in San Francisco, September 15 - 19. It is our honor to share the knowledge and… - [Meet a BellSoft performance engineer at Devoxx Belgium | BellSoft Java](https://bell-sw.com/events/2019/10/03/Events-Devoxx-Belgium-2019/): Meet BellSoft performance engineer at Devoxx Belgium Java on ARM. Theory, Applications and Workloads, Dmitry Chuyko, Wednesday from 15:10 to 16:00 in Room 6 There are many great events for developers around the world. - [Meet BellSoft engineers at JFokus in Stockholm | BellSoft Java](https://bell-sw.com/events/2020/02/02/Events-JFokus-Stockholm/): Meet BellSoft engineers at JFokus in Stockholm Check how small can be a Docker container with fully functional JDK at BellSoft Booth. Find us on February 4-5, 2020... - [Get savvy about native image at JRush | BellSoft Java](https://bell-sw.com/events/2021/03/25/Events-JRush/): In the light of the Liberica NIK release, BellSoft invites high-level software developers and Java enthusiasts to discover native image. Join us on March 25 at 11 am PDT online. Learn how this wonderful tool can optimize your projects and minimize resources! - [A web conference for DevOps engineers | BellSoft Java](https://bell-sw.com/events/2021/09/13/Events-JRush/): Dive into the latest DevOps trends and cutting-edge technologies. Find out how to increase the efficiency of your processes and accelerate the infrastructure transformation. - [A web conference for senior engineers | BellSoft Java](https://bell-sw.com/events/2021/11/25/Events-JRush/): Evolve your Java apps with modern security and performance tools. Find out how to minimize migrations and upgrades and make your software flexible and ever-viable. - [IANA Updater Update Time Zones information in Liberica JDK/JRE | BellSoft Java](https://bell-sw.com/iana-updater/): IANAUpdater is tool that can be used to update Time Zones information in Liberica JDK/JRE and, possilby, other OpenJDK-based distributions. - [BellSoft. Secure Liberica JDK and modern solutions for Java apps | BellSoft Java](https://bell-sw.com/): BellSoft is a major OpenJDK contributor providing Progressive Java Runtime and other tools for Java apps for modern architectures and cloud. - [The status of Java on Arm | BellSoft Java](https://bell-sw.com/java/arm/performance/2019/01/15/the-status-of-java-on-arm/): Today, as Arm processors are primarily viewed as targeting the embedded market, and justifiably so, multiple hardware vendors are using this architecture to build server CPUs and to compete with Intel in the cloud and High Performance Computing (HPC) segment. - [A guide to cloud cost optimization | BellSoft Java](https://bell-sw.com/java-cloud-deployment-cost-optimization/): Discover a comprehensive strategy on reducing cloud expenses for good - [Join the raffle and win a Steam Deck | BellSoft Java](https://bell-sw.com/java-forum-stuttgart/): Fill in the form to join a raffle for winning a PlayStation 5 - [Copywriter | Careers at BellSoft](https://bell-sw.com/jobs/copywriter/): BellSoft is a major OpenJDK contributor providing Progressive Java Runtime and other tools for Java apps for modern architectures and cloud. - [Java Support Engineer | Careers at BellSoft](https://bell-sw.com/jobs/java-support-engineer/): BellSoft is a major OpenJDK contributor providing Progressive Java Runtime and other tools for Java apps for modern architectures and cloud. - [Java Sustaining Engineer (Java FX) | Careers at BellSoft](https://bell-sw.com/jobs/java-sustaining-engineer-java-fx/): BellSoft is a major OpenJDK contributor providing Progressive Java Runtime and other tools for Java apps for modern architectures and cloud. - [JVM Engineer | Careers at BellSoft](https://bell-sw.com/jobs/jvm-engineer/): BellSoft is a major OpenJDK contributor providing Progressive Java Runtime and other tools for Java apps for modern architectures and cloud. - [Linux Engineer | Careers at BellSoft](https://bell-sw.com/jobs/linux-engineer/): BellSoft is a major OpenJDK contributor providing Progressive Java Runtime and other tools for Java apps for modern architectures and cloud. - [Sales Representative – Key Accounts | Careers at BellSoft](https://bell-sw.com/jobs/sales-representative-key-accounts/): BellSoft is a major OpenJDK contributor providing Progressive Java Runtime and other tools for Java apps for modern architectures and cloud. - [Sales Representative – Key Accounts (Japan) | Careers at BellSoft](https://bell-sw.com/jobs/sales-representative-key-accounts-japan/): BellSoft is a major OpenJDK contributor providing Progressive Java Runtime and other tools for Java apps for modern architectures and cloud. - [Technical Writer | Careers at BellSoft](https://bell-sw.com/jobs/technical-writer/): BellSoft is a major OpenJDK contributor providing Progressive Java Runtime and other tools for Java apps for modern architectures and cloud. - [Web Development Intern | Careers at BellSoft](https://bell-sw.com/jobs/web-development-intern/): BellSoft is a major OpenJDK contributor providing Progressive Java Runtime and other tools for Java apps for modern architectures and cloud. - [Join the raffle and win a PlayStation 5 | BellSoft Java](https://bell-sw.com/kubecon/): Fill in the form to join a raffle for winning a PlayStation 5 - [Legal](https://bell-sw.com/legal-information/): - [Liberica Administration Center | BellSoft Java](https://bell-sw.com/liberica-administration-center/): LAC controls all Java runtimes in a network of any size. Automate the updates, find the security issues and check your licenses in a single convenient tool. - [Liberica Mission Control | BellSoft Java](https://bell-sw.com/liberica-mission-control/): Liberica Mission Control 7.1.1 is a low-overhead Java profiler built from OpenJDK JMC project. - [Liberica Native Image Kit | BellSoft Java](https://bell-sw.com/liberica-native-image-kit/): Liberica Native Image Kit (Liberica NIK) is an open source tool for accelerating JVM software. It converts Java bytecode into an optimized native executable. - [Liberica JDK End User License Agreement](https://bell-sw.com/liberica_eula/): - [Liberica NIK End User License Agreement](https://bell-sw.com/liberica_nik_eula/): - [Privacy Statement for BellSoft Software Subscriptions in Microsoft Azure](https://bell-sw.com/liberica_privacy_statement_azure/): - [Liberica JDK | Java runtime from an OpenJDK contributor](https://bell-sw.com/libericajdk/): Liberica JDK is a free and open-source implementation of the Java SE platform for modern Java deployments supported by a leading OpenJDK contributor. - [Liberica JDK container images | BellSoft Java](https://bell-sw.com/libericajdk-containers/): BellSoft provides ready Liberica JDK container images on Docker Hub, GHCR, and MCR. - [Liberica JDK for Embedded | BellSoft Java](https://bell-sw.com/libericajdk-for-embedded/): Discover the value of a Liberica JDK build made specifically for embedded devices: secure, reliable, cost-efficient, and open source runtime with enhanced performance. - [Liberica JDK Performance Edition | BellSoft Java](https://bell-sw.com/libericajdk-performance-edition/): Liberica JDK Performance Edition is a Java 11 runtime with all benefits of JDK 17: better startup time, throughput, latency of apps, and support with security patches. - [Liberica JDK with CRaC support | BellSoft Java](https://bell-sw.com/libericajdk-with-crac/): Liberica JDK with CRaC support allows you to save the optimal running state of your app and later instantly launch it in that state. - [BellSoft Media Kit | BellSoft Java](https://bell-sw.com/media-kit/): This is a media kit of BellSoft that can be distributed to members of the media. - [BellSoft Expands Alpaquita Linux with AArch64 Support for Arm-Based Containers and Cloud Java Workloads](https://bell-sw.com/news/bellsoft-adds-aarch64-support-to-alpaquita-linux-distribution-and-alpaquita-containers/): BellSoft’s Alpaquita Linux now includes AArch64 support, optimizing Java on Arm-based hardware for the cloud. Experience faster response, lower costs, and secure containerized Java applications with this powerful, lightweight Linux distribution tailored for modern workloads. - [BellSoft adds AArch64 support to Liberica JDK Performance Edition](https://bell-sw.com/news/bellsoft-adds-aarch64-support-to-liberica-jdk-performance-edition/): We are excited to announce the release of Liberica JDK Performance Edition for AArch64. This new edition integrates the powerful enhancements of JVM 17 into JDK 8 and 11, providing significant performance improvements for your Java workloads. - [BellSoft levels the performance of JDK 8 up to JVM 17 with Liberica JDK Performance Edition](https://bell-sw.com/news/bellsoft-levels-the-performance-of-jdk-8-up-to-jvm-17-with-liberica-jdk-performance-edition/): A widespread reason is the high financial and resource input required from companies for an upgrade to a newer LTS release. Meanwhile, the JVM in JDK 8 has lower performance, making your cloud use inefficient and therefore disappointing your customers. - [BellSoft releases Alpaquita Containers for Spring Boot](https://bell-sw.com/news/bellsoft-releases-alpaquita-containers-for-spring-boot/): Alpaquita containers are based on Alpaquita Linux and Liberica JDK Lite integration and enhance your app with better speed, higher security, and improved overall performance. - [BellSoft releases Alpaquita Containers with Coordinated Restore at Checkpoint support](https://bell-sw.com/news/bellsoft-releases-alpaquita-containers-with-coordinated-restore-at-checkpoint-support/): Java adaptation to the cloud environment comes with challenges, and the so-called "slow Java startup and warmup" is the one well-known. It can be described as a process that takes both time and memory for the traditional JVM to reach its exceptional peak performance in modern applications, resulting in higher costs and slower performance. - [BellSoft releases dedicated builds of Liberica JDK 17 and 21 with CRaC](https://bell-sw.com/news/bellsoft-releases-dedicated-builds-of-liberica-jdk-17-and-21-with-crac/): Spring is one of the most popular Java frameworks, thanks to its deep tech prospects, pre-announced adding CRaC support. This is some of the most anticipated news for Java developers. - [BellSoft releases Liberica JDK 21 for RISC-V with support](https://bell-sw.com/news/bellsoft-releases-liberica-jdk-21-for-risc-v-with-support/): RISC-V advantages are evident to many industries, from IoT to servers. Many companies in these industries use Java as their default programming language, and they are seeking to employ Java on RISC-V. - [BellSoft's Hardened Images Set New Standard for Container Security](https://bell-sw.com/news/bellsoft-s-hardened-images-set-new-standard-for-container-security/): San Jose, California (November 10, 2025) BellSoft, the OpenJDK vendor delivering the most complete Java experience, announces Hardened Images, a tool for enhancing the security and compliance of containerized applications in Kubernetes. BellSoft will be demonstrating Hardened Images at KubeCon 2025 in Atlanta, beginning today. - [BellSoft Upgrades Liberica JDK Performance Edition with JVM 21](https://bell-sw.com/news/bellsoft-upgrades-liberica-jdk-performance-edition-with-jvm-21/): BellSoft announces major upgrade to Liberica JDK Performance Edition, now powered by JVM 21. Delivers 5 to 10% better performance in most workloads, with gains of up to 40% in select cases. - [Container Security Issues Continue to Befuddle Software Developers](https://bell-sw.com/news/container-security-issues-continue-to-befuddle-software-developers/): A new survey from BellSoft found that the tools and strategies developers are using to protect their companies from container-related incidents are undermining security goals - [Spring Developers Have a Blindspot When It Comes to Container Security](https://bell-sw.com/news/spring-developers-have-a-blindspot-when-it-comes-to-container-security/): A survey from BellSoft found that Spring developers don’t know their Dockerfiles affect their security posture, aren’t using hardened images and can’t name their compliance framework, exposing their organizations, applications and users to considerable risk - [The BellSoft News | BellSoft Java](https://bell-sw.com/newsroom/2/): - [The BellSoft News | BellSoft Java](https://bell-sw.com/newsroom/3/): - [The BellSoft News | BellSoft Java](https://bell-sw.com/newsroom/4/): - [The BellSoft News | BellSoft Java](https://bell-sw.com/newsroom/): - [The BellSoft News | BellSoft Java](https://bell-sw.com/newsroom/news-coverage/2/): - [The BellSoft News | BellSoft Java](https://bell-sw.com/newsroom/news-coverage/3/): - [The BellSoft News | BellSoft Java](https://bell-sw.com/newsroom/news-coverage/): - [The BellSoft News | BellSoft Java](https://bell-sw.com/newsroom/press-releases/): - [Technical Support for Alpaquita Linux | Bellsoft](https://bell-sw.com/nik-support/): With the BellSoft support team, you can focus on deploying infrastructure or services with the utmost level of security in your containerized project. - [A comparative analysis of OpenJDK distributions | BellSoft Java](https://bell-sw.com/oracle-java-vs-open-jdk-distributions/): Compare key features of major OpenJDK distributions to find the best solution for your business - [Extended Support for Java 6 and Java 7 | Security Updates, Patches, and Extended Roadmap](https://bell-sw.com/pages/6-7-java-support/): Keep your legacy Java 6 and 7 applications secure with BellSoft's Liberica JDK. Benefit from extended support, and timely security updates through March 2028. Learn more about how we help you. - [OpenJDK Product Discovery API](https://bell-sw.com/pages/api/): - [IANA Updater Update Time Zones information in Liberica JDK/JRE](https://bell-sw.com/pages/iana-updater/): - [Liberica Native Image Kit Supported System Configurations | BellSoft Java](https://bell-sw.com/pages/nik-supported-configurations/): Discover Liberica Native Image Kit supported platforms. 100% open source tool for accelerating Java and JVM applications on Linux, Windows and macOS. - [Package Managers for Liberica](https://bell-sw.com/pages/package-managers/): - [BellSoft Liberica JDK Support | BellSoft Java](https://bell-sw.com/pages/support-login/): BellSoft provides High-Powered Support aimed to make the most of your OpenJDK investment. Rely on Java experts and take advantage of our safety guarantee. - [BellSoft Liberica JDK Support | BellSoft Java](https://bell-sw.com/pages/support-partner/): BellSoft provides High-Powered Support aimed to make the most of your OpenJDK investment. Rely on Java experts and take advantage of our safety guarantee. - [Supported System Configurations](https://bell-sw.com/pages/supported-configurations/): - [BellSoft Partner Program – Grow with Us!](https://bell-sw.com/partner-program/): Join the BellSoft Partner Program and grow your business with industry-leading Java and cloud-native solutions. Whether you resell, refer, or implement, we provide the tools, resources, and support to help you succeed. - [Privacy Policy](https://bell-sw.com/privacy-policy/): - [A guide to enhancing Java apps security | BellSoft Java](https://bell-sw.com/security-of-java-applications/): Get a grip on recommendations and techniques for increasing the security of Java apps - [Spring Container Security Report 2026 | BellSoft Survey](https://bell-sw.com/spring-container-security-2026/): 250 Spring developers surveyed at Spring I/O 2026. The findings reveal a security gap that surprised even us. Free report from BellSoft. - [Join the raffle and win a Steam Deck | BellSoft Java](https://bell-sw.com/spring-io/): Fill in the form to join a raffle for winning a PlayStation 5 - [State of Container Security 2025 | Bellsoft Java](https://bell-sw.com/state-of-container-security-2025/): Free report: 427 professionals reveal container security challenges. Learn why 49% can't keep up with maintenance and what solutions teams are requesting. Download now. - [Subscribe to our newsletter](https://bell-sw.com/subscribe/): Subscribe to our newsletter - [Terms of Use](https://bell-sw.com/terms-of-use/): - [Third-Party Licenses for BellSoft software](https://bell-sw.com/third_party_licenses/): - [BellSoft. Unified Java runtime for TCO reduction | BellSoft Java](https://bell-sw.com/unified-java-runtime/): A Unified Java Runtime aims to cover all your Java needs with a wide variety of Java tools for most system configurations and any purpose. - [5 Opinions on Distroless Images for Java Apps in 4 Minutes](https://bell-sw.com/videos/5-opinions-on-distroless-images-for-java-apps-in-4-minutes/): Distroless images, while smaller and aligned with modern immutable container practices, are not entirely "distroless" as they include a stripped-down Linux distribution, making them suitable for some, but not all, applications. - [5 Tips for Optimizing Java Performance on Kubernetes](https://bell-sw.com/videos/5-tips-for-optimizing-java-performance-on-kubernetes/): If your Java apps in the cloud struggle with high resource consumption, frequent container restarts, or slow response times, these five tips can help enhance their performance. First, set CPU and RAM limits properly based on load testing and account for Kubernetes overhead. - [5x Smaller Java Docker Images — 2025 Optimization Guide](https://bell-sw.com/videos/5x-smaller-java-docker-images-2025-optimization-guide/): In this video, I’ll show you how to make your Java Docker images 5 TIMES SMALLER. You’ll see the full process, from a heavy 587MB container to a lean 116MB image, ready for production. - [All 7 Java Garbage Collectors Explained](https://bell-sw.com/videos/all-7-java-garbage-collectors-explained/): In this complete guide to Java garbage collection, you will learn how the JVM memory model works, understand the differences between the Serial, Parallel, G1, ZGC, Shenandoah, CMS, and Epsilon collectors, and determine which garbage collector is best suited for your application's performance — from single-threaded programs to massive terabyte-scale heaps. - [An Overview of Java Garbage Collectors](https://bell-sw.com/videos/an-overview-of-java-garbage-collectors/): Java provides multiple garbage collectors (GCs) tailored to different performance needs. Serial GC is ideal for single-threaded apps but pauses all threads, while Parallel GC uses multiple threads to prioritize throughput. - [Async Profiler: Uncover Hidden Performance Issues in Java!](https://bell-sw.com/videos/async-profiler-uncover-hidden-performance-issues-in-java/): Let's discuss Async Profiler, the small and effective open-source low-overhead profiler for Hotspot JVM-based application. Itcan collect data on various JVM events like CPU usage, heap allocation, methods, and so on. It can monitor non-Java threads, native calls, and kernel functions. It is small, silent, and incredibly effective! - [Backend Developer Roadmap 2026: What You Need to Know](https://bell-sw.com/videos/backend-developer-roadmap-2026-what-you-need-to-know/): Backend complexity keeps growing, and frameworks can't keep up. In 2026, knowing React or Django isn't enough. You need fundamentals that hold up when systems break, traffic spikes, or your architecture gets rewritten for the third time.I've been building production systems for 15 years. This roadmap covers three areas that separate people who know frameworks from people who can actually architect backend systems: data, architecture, and infrastructure. This is about how to think, not what tools to install. - [Best Oracle Java Alternatives in 2026 Comparison of OpenJDK Distributions](https://bell-sw.com/videos/best-oracle-java-alternatives-in-2026-comparison-of-openjdk-distributions/): A comparison of major OpenJDK distributions (Temurin, Liberica, Zulu, Corretto, Semeru, etc.), covering who maintains them, how updates are delivered, and what lifecycle guarantees they provide. We also explain why upstream OpenJDK isn’t production-ready and how your vendor choice impacts real-world systems. Useful for Spring Boot, containers, and Kubernetes to avoid hidden risks and choose the right runtime. - [Boost The Performance and Security of Your Spring Boot App with Alpaquita Containers](https://bell-sw.com/videos/boost-the-performance-and-security-of-your-spring-boot-app-with-alpaquita-containers/): Alpaquita Containers offer a secure, high-performance solution for running Spring Boot applications in the cloud. These lightweight containers, built on Liberica JDK Lite and Alpaquita Linux, optimize memory and disk usage, reducing resource consumption by up to 30%. - [Build RAG System with Spring AI: No More AI Lies](https://bell-sw.com/videos/build-rag-system-with-spring-ai-no-more-ai-lies/): Struggling to find answers in your own documentation? Your LLM is too. Hallucinations happen because models don’t know your data. RAG (Retrieval Augmented Generation) turns unstructured docs into searchable vector embeddings, so your LLM retrieves facts instead of inventing them. This tutorial walks through the full RAG workflow in Spring AI: document ingestion with TikaDocumentReader, embedding generation, vector storage (pgvector, Choma, Milvus, Oracle), and similarity-based retrieval. You’ll build two endpoints: one for uploading documents and one for answering questions strictly using your indexed data. When the system doesn’t know, it says so—no more confident nonsense. Designed for Java teams bringing AI into production systems where accuracy matters. You’ll learn the pattern, get the code, and deploy an LLM that finally stops hallucinating. - [Build Typed AI Agents in Java with Embabel](https://bell-sw.com/videos/build-typed-ai-agents-in-java-with-embabel/): Most Java AI demos stop at prompt loops. That doesn't scale in production. In this video, we integrate Embabel into an existing Spring Boot application and build a multi-step, goal-driven agent for incident triage. Instead of manually orchestrating prompt → tool → prompt cycles, we define typed actions and let the agent plan across deterministic and LLM-powered steps. We parse structured input with Ollama, query MongoDB deterministically, classify risk using explicit thresholds, rank affected implants, generate a constrained root cause hypothesis, and produce a bounded containment plan. LLM handles reasoning. Java enforces rules. This is about controlled AI workflows on the JVM — not prompt glue code. - [Buildpacks for Spring Boot](https://bell-sw.com/videos/buildpacks-for-spring-boot/): Buildpacks for Spring Boot: no Dockerfiles, no hassle — just production-ready container images in one command. Tired of maintaining Dockerfiles? In this tutorial, you’ll learn how to use buildpacks to create optimized Spring Boot containers — fast, secure, and cloud-ready — with just one command. We’ll show what happens under the hood: automatic dependency detection, layered image creation, memory tuning, SBOM generation, and how to tweak builds with just a few plugin options. Need faster startup, smaller image size, or JFR monitoring? Buildpacks can handle it — and we’ll show you how. - [Docker Container Image Security: 13 Best Practices](https://bell-sw.com/videos/docker-container-image-security-13-best-practices/): This video presents 13 practical recommendations for reducing your attack surface and detecting malicious activity more quickly. You’ll learn how to create simple, immutable, and deterministic images using multi-stage builds, distroless bases, and non-root users. We cover SBOM generation with Syft, provenance verification with Cosign, CVE scanning workflows, and secret management strategies. From choosing LTS base images like Alpaquita Linux to implementing host-level protections, these practices will help you confidently deliver secure containers. It’s ideal for Java developers, DevOps engineers, and architects building production-grade infrastructure. - [Dockerize Spring Boot Wisely: 6 tips to improve the container images of your Spring Boot apps](https://bell-sw.com/videos/dockerize-spring-boot-wisely-6-tips-to-improve-the-container-images-of-your-spring-boot-apps/): Your Spring Boot applications deserve a top-notch package! - [Downgraded Java to JDK 1.1 After 30 Years… (part 1)](https://bell-sw.com/videos/downgraded-java-to-jdk-1-1-after-30-years-part-1/): How should we change Java 23 code for it to run on Java 1.1? We go line by line, removing modern features like records, sealed classes, switch expressions, var, and more. Each step reveals what breaks, how to rewrite it, and what you lose in the process. If you've ever wondered how far modern Java has drifted from its roots - this is your deep dive into that gap. This is Part 1 of the Java Downgrade Challenge, where we descend version by version until we reach Java 8. Subscribe to our channel to find out how we go even deeper - all the way down to Java 1.1. Stay tuned! - [Dynamic SQL Queries with Spring Data JPA in 6 Minutes](https://bell-sw.com/videos/dynamic-sql-queries-with-spring-data-jpa-in-6-minutes/): If your repository layer has multiple queries for different filter combinations, your data access logic is already getting harder to maintain. In this video, we implement dynamic SQL queries in Spring Data JPA using Specifications — a composable approach that helps avoid query duplication and keeps your filtering logic clean. We build a flexible filtering system with optional parameters (category, language, format, price) and show how Specification.unrestricted() skips empty filters, while Specification.allOf(...) combines them into a single query. We also address a common issue: string-based field access. It’s fragile and can break at runtime when your model changes. Using the JPA Static Metamodel, we move to compile-time safety. The result is a cleaner, more maintainable way to implement dynamic filtering in Spring-based applications. - [Flyway in Spring Boot: Step-by-Step tutorial with Maven](https://bell-sw.com/videos/flyway-in-spring-boot-step-by-step-tutorial-with-maven/): Learn how to use Flyway in Spring Boot with Maven for smooth and reliable database migrations. In this hands-on tutorial, we cover everything from setting up PostgreSQL in Docker, configuring Flyway in your application, writing versioned and repeatable migrations, to using Flyway in CI/CD pipelines with GitHub Actions. Whether you’re new to Flyway or want to master schema version control in Spring Boot, this video will guide you step by step. - [GraalVM for Java Developers: The Ultimate Beginner’s Guide](https://bell-sw.com/videos/graalvm-for-java-developers-the-ultimate-beginner-s-guide/): What is GraalVM and how can it improve your Java applications? In just 10 minutes, this video explains the three main components of GraalVM — the JIT compiler, Native Image, and Polyglot API. Learn how to boost performance, reduce startup time, and combine multiple languages in one app. Whether you’re building microservices, serverless apps, or just exploring modern JVM tooling, this is your quick-start guide to GraalVM. - [Hardened Container Images 101: What, Why, and How for DevSecOps [2025]](https://bell-sw.com/videos/hardened-container-images-101-what-why-and-how-for-devsecops-2025/): Why do production containers still ship with 600+ CVEs, package managers, and compilers? Most teams inherit bloated base images without ever checking what’s inside. Hardened container images fix this by removing unnecessary tools, enforcing immutability, and providing verifiable provenance. This tutorial breaks down the four pillars of hardened images—minimal base layers, low-to-zero CVEs, immutable runtimes, and SBOM-backed provenance—and shows how they compare to traditional and distroless images. You’ll also see practical examples: migrating from OpenJDK to hardened Liberica images with multi-stage builds, pinning images by digest, verifying signatures with Cosign, and integrating these checks into a production-ready CI/CD pipeline. Perfect for Java developers, DevOps engineers, and architects who want compliance-ready containers and dramatically fewer CVEs—without reinventing security every sprint. - [Hibernate: Ditch or Double Down? When ORM Isn't Enough](https://bell-sw.com/videos/hibernate-ditch-or-double-down-when-orm-isn-t-enough/): Every Java team debates Hibernate at some point: productivity champion or performance liability? Both are right. This video shows you when to rely on Hibernate's ORM magic and when to drop down to SQL. We walk through production scenarios: domain models with many-to-many relations where Hibernate excels, analytical reports with window functions where JDBC dominates, and hybrid architectures that use both in the same Spring Boot codebase. You'll see real code examples: the N+1 query trap that kills performance, complex window functions and anti-joins that Hibernate can't handle, equals/hashCode pitfalls with lazy loading, and practical two-level caching strategies. We also explore how Hibernate works under the hood—translating HQL to database-specific SQL dialects, managing sessions and transactions through JDBC, implementing JPA specifications. The strategic insight: modern applications need both ORM convenience for transactional business logic and SQL precision for data-intensive analytics. Use Hibernate for CRUD and relationship management. Use SQL where ORM abstractions leak or performance demands direct control. - [How to Create Dynamic SQL Queries with Spring Boot](https://bell-sw.com/videos/how-to-create-dynamic-sql-queries-with-spring-boot/): Build SQL queries dynamically based on the user input with the Specification interface. Use the JPA Static Model Generator to create type-safe queries. Run the tests to check your application. - [How to Improve the Performance of Legacy Java Code](https://bell-sw.com/videos/how-to-improve-the-performance-of-legacy-java-code/): Your application is running on Java 8 or 11 and you can't migrate to a newer JDK ? Let's discuss the techniques that can speed up your Java app, cut memory usage, and reduce garbage collection pauses — and let you stay (for now) on the current JDK version. - [How to install Liberica Native Image Kit on Windows PC](https://bell-sw.com/videos/how-to-install-liberica-native-image-kit-on-windows-pc/): Liberica Native Image Kit is a multilingual GraalVM-based set of utilities for creating native images. This guide will help you to install it on Windows PC. - [How to Profile Java Applications in Docker Containers with JFR](https://bell-sw.com/videos/how-to-profile-java-applications-in-docker-containers-with-jfr/): Java applications in Docker containers using Java Flight Recorder (JFR), a built-in OpenJDK tool. It covers three profiling methods: enabling JFR at application startup, attaching to a running container using an ephemeral container with jcmd, and monitoring real-time performance with JDK Mission Control via remote JVM connections. - [How to use AppCDS with Spring Boot](https://bell-sw.com/videos/how-to-use-appcds-with-spring-boot/): This tutorial demonstrates how to use Application Class Data Sharing (AppCDS) and Ahead-of-Time (AOT) processing with Spring Boot applications to reduce startup time by 40–50%. AppCDS creates an archive of parsed classes for faster loading, requiring no code changes, and works both locally and in containers. The tutorial covers building optimized Docker images using Dockerfiles or Buildpacks for efficient deployment and improved performance. - [How to use CRaC with Spring Boot in a Docker Container](https://bell-sw.com/videos/how-to-use-crac-with-spring-boot-in-a-docker-container/): CRaC (Coordinated Restore at Checkpoint) is an OpenJDK project designed to significantly reduce startup and warmup times of Java applications to milliseconds. This tutorial demonstrates using CRaC with a Spring Boot application running in a Docker container, specifically the Spring Boot Petclinic app (version 3.2 or later). - [I Solved Advent of Code 2025 in Kotlin: Here's How It Went](https://bell-sw.com/videos/i-solved-advent-of-code-2025-in-kotlin-here-s-how-it-went/): Every year, Advent of Code spawns thousands of solutions — but few engineers step back to see the bigger picture. This is a complete walkthrough of all 12 days from 2025, focused on engineering patterns rather than puzzle statements. We cover scalable techniques: interval math without brute force, dynamic programming, graph algorithms (JGraphT), geometry with Java AWT Polygon, and optimization problems that need constraint solvers like ojAlgo. You'll see how Java and Kotlin handle real constraints, how visualizations validate assumptions, and when to reach for libraries instead of writing everything from scratch. If you love puzzles, programming—or both—and maybe want to learn how to solve them on the JVM, this is for you. - [Java 25 LTS: The New Features in JDK 25](https://bell-sw.com/videos/java-25-lts-the-new-features-in-jdk-25/): In this video, we go through every single JEP in JDK 25, explaining what it does, why it matters, and how it impacts real-world development. Whether you’re a Java veteran or just getting started, this breakdown will help you stay ahead of the curve. - [Java 26 Preview: New JEPs and What They Mean for You](https://bell-sw.com/videos/java-26-preview-new-jeps-and-what-they-mean-for-you/): Java 26 is the next feature release that brings features for enhanced performance, security, and developer experience. This video discusses the upcoming JDK 26 release, highlighting ten JEPs including JEP 500. JEP 500 focuses on preparing developers for future restrictions on mutating final fields in Java, emphasizing their role in maintaining immutable state. This is crucial for robust programming and understanding the nuances of mutable vs immutable data, especially concerning an immutable class in java. We also touch upon the broader implications for functional programming in Java. - [Java Developer Roadmap 2026: From Basics to Production](https://bell-sw.com/videos/java-developer-roadmap-2026-from-basics-to-production/): Most Java roadmaps teach tools. This one teaches order — the only thing that actually gets you to production. You don’t need to learn everything. You need to learn the right things, in the right sequence. In this video, we break down a practical Java developer roadmap for 2026 — from syntax and OOP to Spring, databases, testing, and deployment. Structured into 8 levels, it shows how real engineers grow from fundamentals to production-ready systems. We cover what to learn and what to ignore: core Java, collections, streams, build tools, Git, SQL and JDBC before Hibernate, the Spring ecosystem, testing with JUnit, and deployment with Docker and CI/CD. You’ll also understand why most developers get stuck — jumping into frameworks too early, skipping SQL, or treating tools as knowledge. This roadmap gives you a clear path into real-world Java development — with priorities, trade-offs, and production context. - [Java Downgrade Challenge: From JDK 8 to 1.1 (Part 2)](https://bell-sw.com/videos/java-downgrade-challenge-from-jdk-8-to-1-1-part-2/): In Part 2 of the Java Downgrade Challenge, we continue our journey — now from Java 8 all the way to Java 1.1. No streams, no lambdas, no generics, no collections — and at one point, we even boot up Windows 98. If you thought Part 1 was painful, this one unwinds Java history line by line. By the end, the familiar Java from today will be almost gone. - [Java DTO Guide: Fix Your API Design with One Simple Pattern](https://bell-sw.com/videos/java-dto-guide-fix-your-api-design-with-one-simple-pattern/): This tutorial shows how to use the Data Transfer Object (DTO) pattern to transfer data between application layers. We use Java records to reduce boilerplate code and the MapStruct library that simplifies Java bean mapping. - [Java Flight Recorder Tutorial: How to Profile Java Applications](https://bell-sw.com/videos/java-flight-recorder-tutorial-how-to-profile-java-applications/): High CPU, GC spikes, or slow startup are common production issues, but logs and metrics don’t always reveal what the JVM is actually doing. Java Flight Recorder (JFR) provides a precise, low-overhead view of JVM behavior, safe for use even in production environments. In this video, you’ll learn how to use JFR to identify real bottlenecks such as CPU hotspots, memory allocation pressure, thread contention, and I/O stalls. We walk through the full workflow, including starting recordings with JVM flags, controlling them via jcmd, running JFR inside Docker containers, and attaching to live systems using ephemeral containers. Then we analyze a real Spring Boot recording in JDK Mission Control, breaking down GC behavior, allocation patterns, thread states, and method-level hotspots. If you want to move from symptoms to root cause with more confidence, this approach will help. Full article with commands and examples: [https://bell-sw.com/blog/how-to-profile-java-applications-with-jfr-beginner-s-guide/](https://bell-sw.com/blog/how-to-profile-java-applications-with-jfr-beginner-s-guide/) - [Java in 2025: Busting the Biggest Myths](https://bell-sw.com/videos/java-in-2025-busting-the-biggest-myths/): Think Java is slow, outdated, or only for old-school enterprise apps? Think again. In this episode of Java Myth Busters, we debunk six common myths about Java, including performance issues, security concerns, and the myth that Java is dead. Discover how the JVM, Spring Boot, GraalVM, and modern JDK updates make Java one of the most powerful, scalable, and relevant languages in 2025. - [Java in 2025: LTS Release, AI on JVM, Framework Modernization](https://bell-sw.com/videos/java-in-2025-lts-release-ai-on-jvm-framework-modernization/): Java in 2025 isn't about headline features, it's about how production systems changed under the hood. While release notes focus on individual JEPs, the real story is how the platform, frameworks, and tooling evolved to improve stability, performance, and long-term maintainability. In this video, we look at Java from a production perspective. What does Java 25 LTS mean for teams planning to upgrade? How are memory efficiency, startup time, and observability getting better? Why do changes like Scoped Values and AOT optimizations matter beyond benchmarks? We also cover the broader ecosystem: Spring Boot 4 and Framework 7, AI on the JVM with Spring AI and LangChain4j, Kotlin's growing role in backend systems, and tooling updates that make upgrades easier. Finally, we touch on container hardening and why runtime and supply-chain decisions matter just as much as language features. - [Java Memory Options You Need in Production](https://bell-sw.com/videos/java-memory-options-you-need-in-production/): JVM memory tuning can be tricky. Teams increase -Xmx and assume the problem is solved. Then the app still hits OOM. Because maximum heap size is not the only thing that affects memory footprint. The JVM uses RAM for much more than heap: metaspace, thread stacks, JIT/code cache, direct buffers, and native allocations. That’s why your process can run out of memory while heap still looks “fine”. In this video, we break down how JVM memory actually works and how to control it with a minimal, production-safe set of flags. We cover heap sizing (-Xms, -Xmx), dynamic resizing, direct memory (-XX:MaxDirectMemorySize), and total RAM limits (-XX:MaxRAMPercentage) — especially in containerized environments like Docker and Kubernetes. We also explain GC choices such as G1, ZGC, and Shenandoah, when defaults are enough, and why GC logging (-Xlog:gc*) is mandatory before tuning. Finally, we show how to diagnose failures with heap dumps and OOM hooks. This is not about adding more flags. It’s about understanding what actually consumes memory — and making decisions you can justify in production. - [JavaFX and scene Builder: Create UIs with a few clicks](https://bell-sw.com/videos/javafx-and-scene-builder-create-uis-with-a-few-clicks/): Creating user interfaces with JavaFX is easy! Simply install Scene Builder and create a layout with a few clicks! In this video we will create an interactive To Do app and in the process we will learn how to design UIs without coding. - [JDBC Connection Pools in Microservices. Why They Break Down (and What to Do Instead)](https://bell-sw.com/videos/jdbc-connection-pools-in-microservices-why-they-break-down-and-what-to-do-instead/): In this livestream, Catherine is joined by Rogerio Robetti, the founder of Open J Proxy, to discuss why traditional JDBC connection pools break down when teams migrate to microservices, and what is a more efficient and reliable approach to organizing database access with microservice architecture. - [JDBC vs ORM vs jOOQ: Choose the Right Java Database Tool](https://bell-sw.com/videos/jdbc-vs-orm-vs-jooq-choose-the-right-java-database-tool/): Still unsure what is the difference between JPA, Hibernate, JDBC, or jOOQ and when to use which? This video clarifies the entire Java database access stack with real, production-oriented examples. We start at the foundation, which is JDBC, a low-level API every other tool eventually relies on for database communication. Then, we go through the ORM concept, JPA as a specification of ORM, Hibernate as the implementation and extension of JPA, and Blaze Persistence as a powerful upgrade to JPA Criteria API. From there, we take a different path with jOOQ: a database-first, SQL-centric approach that provides type-safe queries and catches many SQL errors at compile time instead of runtime. You’ll see when raw JDBC makes sense for small, focused services, when Hibernate fits CRUD-heavy domains, and when jOOQ excels at complex reporting and analytics. We discuss real performance pitfalls such as N+1 queries and lazy loading, and show practical combination strategies like “JPA for CRUD, jOOQ for reports.” The goal is to equip you with clarity so that you can make informed architectural decisions based on domain complexity, query patterns, and long-term maintainability. - [JDK 24: The New Features in Java 24](https://bell-sw.com/videos/jdk-24-the-new-features-in-java-24/): JDK 24 is in Rampdown Phase One, which means, we know all the JEPs targeted to this release. And there are a lot of them, so it is time to discuss this new Java release! - [JEP 483: Ahead-of-Time Class Loading & Linking. Project Leyden in JDK 24](https://bell-sw.com/videos/jep-483-ahead-of-time-class-loading-linking-project-leyden-in-jdk-24/): JEP 483 introduces Ahead-of-Time (AOT) Class Loading and Linking in JDK 24, which enhances Java application startup times by loading and linking classes ahead of time and storing them in a reusable AOT cache. This feature, part of Project Leyden, reduces the JVM's workload during startup without requiring changes to application code, though a training run mimicking production is needed to create an efficient cache. Early tests with a Spring Boot app showed significant improvements, cutting startup time from two seconds to just one second. - [jOOQ Deep Dive: CTE, MULTISET, and SQL Pipelines](https://bell-sw.com/videos/jooq-deep-dive-cte-multiset-and-sql-pipelines/): Some backend developers reach the point where the ORM stops being helpful. Complex joins, nested result graphs, or CTE pipelines quickly push frameworks like Hibernate to their limits. And when that happens, teams often end up writing fragile raw SQL strings or fighting performance issues like the classic N+1 query problem. In this video, we build a healthcare scheduling application NeonCare using jOOQ, Spring Boot 4, and PostgreSQL, and show how to write production-grade SQL directly in Java while keeping full compile-time type safety. - [JRush | Container Essentials: Fast Builds, Secure Images, Zero Vulnerabilities](https://bell-sw.com/videos/jrush-container-essentials-fast-builds-secure-images-zero-vulnerabilities/): Web-conference for Java developers focused on hands-on strategies for building high-performance containers, eliminating CVEs, and detecting security issues before production. - [JRush Ep 5 - Advanced Security Strategies for Java and Spring Applications](https://bell-sw.com/videos/jrush-ep-5-advanced-security-strategies-for-java-and-spring-applications/): Web-conference for engineers focused on real-world solutions for enhancing Java security, managing AI threats, and learning about zero-day responses. - [JRush Episode 4: Q&A Session](https://bell-sw.com/videos/jrush-episode-4-q-a-session/): JRush Episode 4 “Modern Java development for Banking and FinTech”, we had a very fruitful discussion with our speakers, Dr Mo Haghighi, Mary Grygleski, and Dmitry Chuyko - [Jrush episode 4th: Build your Cloud Native Application with Kubernetes](https://bell-sw.com/videos/jrush-episode-4th-build-your-cloud-native-application-with-kubernetes/): Learn how to build your Cloud Native Application with Dr Mo Haghighi - [JRush episode 4th: Event streaming with Apache Pulsar](https://bell-sw.com/videos/jrush-episode-4th-event-streaming-with-apache-pulsar/): Discover how to perform efficient and reliable event streaming with Apache Pulsar with Mary Grygleski, Streaming Developer Advocate at DataStax - [JRush episode 4th: Fresh Java on modern Arm servers](https://bell-sw.com/videos/jrush-episode-4th-fresh-java-on-modern-arm-servers/): Explore the world of modern Arm servers with Dmitry Chuyko, Senior Performance Architect at BellSoft. - [Master Java Profiling in 2025: Tools, Techniques, and Real-World Tips](https://bell-sw.com/videos/master-java-profiling-in-2025-tools-techniques-and-real-world-tips/): In this complete guide to Java profiling, you will learn sampling and instrumentation techniques, compare the 7 best tools (JFR, VisualVM, Async Profiler, JProfiler, YourKit, Digma.ai, New Relic), and master how to detect memory leaks and analyze CPU usage. - [Master Java Profiling: Tools, Techniques, and Real-World Tips](https://bell-sw.com/videos/master-java-profiling-tools-techniques-and-real-world-tips/): Java profiling allows to rapidly identify and fix performance bottlenecks in your program. In this video we explain what is profiling, introduce popular profiling tools, list their pros and cons, and provide useful tips and code examples. - [OpenJDK projects that we anticipate](https://bell-sw.com/videos/openjdk-projects-that-we-anticipate/): OpenJDK is actively evolving, with projects like Leyden, Valhalla, Babylon, and Lilliput aiming to enhance Java's performance and capabilities. Leyden focuses on faster startup and warmup by reusing precompiled code, while Valhalla introduces value objects, primitive classes, and specialized generics for better memory and runtime efficiency. - [Advanced Kotlin Techniques for Spring Developers](https://bell-sw.com/videos/pasha-finkelshteyn-at-spring-i-o-2024-advanced-kotlin-techniques-for-spring-developers/): As a seasoned developer, you're likely already familiar with Spring. But Kotlin can take your developer experience with Spring to the next level! Join this session and learn how to add new functionality to existing classes with Kotlin extension functions, use Kotlin bean definition DSL, improve third-party libraries with varargs, and leverage coroutines with Spring idiomatically. By the end of this talk, you'll have a deeper understanding of the advanced Kotlin techniques that are available to you as a Spring developer and be able to use them effectively in your projects. - [PF4J: Plugin Framework for Java. Plugin Systems for Backend](https://bell-sw.com/videos/pf4j-plugin-framework-for-java-plugin-systems-for-backend/): PF4J (Plugin Framework for Java) is a lightweight framework that allows developers to create modular applications using plugins. It enables the integration of custom code into applications through extension points, with support for lifecycle management and Spring integration for dependency injection. PF4J is useful for both desktop and web applications, offering flexibility in scaling and extending functionality without altering the core system. - [Reducing Java Startup Time: 4 Approaches](https://bell-sw.com/videos/reducing-java-startup-time-4-approaches/): Java application startup can be significantly accelerated using modern tools. AppCDS stores preloaded classes in a shared archive, cutting startup time by up to 50%, while Project Leyden shifts optimizations to earlier stages with ahead-of-time compilation. GraalVM Native Image creates standalone executables for sub-second startup, and CRaC restores pre-warmed application states for instant readiness. - [SBOMs & Java Security: Stay Compliant, Stay Protected!](https://bell-sw.com/videos/sboms-java-security-stay-compliant-stay-protected/): A software bill of materials or SBOM is crucial for the modern development environment full of regulations, vulnerabilities, and hidden threats. In this video, we discuss what SBOMs are and how they help dealing with compliance audits and application security. We will explore the best open-source tools for generating SBOMs and provide a tutorial on creating an SBOM for your project and analyzing it for vulnerabilities. - [Should You Still Use LOMBOK in 2025?](https://bell-sw.com/videos/should-you-still-use-lombok-in-2025/): Have you ever wondered how @Data, @Builder, and @Getter actually work? Lombok doesn’t just generate code — it rewrites your AST during compilation using internal, unofficial APIs. And while many developers enjoy the reduced boilerplate, few realize the hidden risks behind it. - [Sizing JDBC Connection Pools for Real Production Load](https://bell-sw.com/videos/sizing-jdbc-connection-pools-for-real-production-load/): Many production outages start with connection pool exhaustion. Your app waits seconds for connections while queries take milliseconds; yet, most teams run default settings that collapse under load. This video shows how to configure connection pools that survive real production traffic: sizing based on database limits and thread counts, setting timeouts that prevent cascading failures, and implementing an open source database proxy Open J Proxy for centralized connection management with virtual connection handles, client-side load balancing, and slow query segregation. For senior Java developers, DevOps engineers, and architects who need database performance that holds under pressure. - [Spring AI: Streaming LLM Tokens with NDJSON in Spring Boot](https://bell-sw.com/videos/spring-ai-streaming-llm-tokens-with-ndjson-in-spring-boot/): Streaming LLM responses smoothly is harder than it looks. SSE often breaks LLM token spacing and words merge. This video shows how to fix it using Spring AI, WebFlux, and NDJSON. You’ll learn why Server-Sent Events can fail with modern LLM tokenizers, how NDJSON provides reliable token streaming, and how to build a production-ready pipeline with proper error handling and backpressure control. We cover configuring Spring AI ChatClient with Ollama, creating a reactive NDJSON endpoint, handling errors with onErrorResume, managing backpressure with limitRate, and consuming the NDJSON stream on a Vaadin frontend using WebClient. The result: stable, clean LLM streaming. Tested with Spring Boot 3.5.7, Java 25 (Liberica JDK), and Ollama both locally and in Docker. - [Spring Boot Buildpacks: Optimize, Secure, and Shrink Your Containers!](https://bell-sw.com/videos/spring-boot-buildpacks-optimize-secure-and-shrink-your-containers/): Buildpacks let you containerize Spring Boot apps without writing Dockerfiles, but the default settings aren’t always optimal. In this video, I’ll show you how to fine-tune buildpacks for faster startup, smaller images, and better security—so you get the best performance with minimal effort. - [Spring Data MongoDB: From Repositories to Aggregations](https://bell-sw.com/videos/spring-data-mongodb-from-repositories-to-aggregations/): Spring Data MongoDB breaks down fast once CRUD meets production—real queries, actual data volumes, analytics. What looks simple at first quickly turns into unreadable repository methods, overfetching, and slow queries. In this video, I walk through building a production-style Spring Boot application using Spring Data MongoDB — starting with basic setup and repositories, then moving into indexing, projections, custom queries, and aggregation pipelines. You'll see how MongoDB's document model changes data design compared to SQL, when embedding helps, and when it becomes a liability. We cover where repository method naming stops scaling, how to use @Query safely, when to switch to MongoTemplate, and how to reduce payload size with projections and DTOs. Finally, we implement real MongoDB aggregations to calculate analytics directly in the database and test everything against a real MongoDB instance using Testcontainers. This is not another MongoDB overview. It's a practical guide to actually using Spring Data MongoDB in production without fighting the database. - [Spring Developer Roadmap 2026: What You Need to Know](https://bell-sw.com/videos/spring-developer-roadmap-2026-what-you-need-to-know/): Spring Boot is powerful. But knowing the framework isn’t the same as understanding backend engineering. In this video, I walk through the roadmap I believe matters for a Spring developer in 2026. We start with data. That means real SQL — CTEs, window functions, normalization trade-offs — and understanding what ACID and BASE actually imply for system guarantees. Spring Data JPA is useful, but you still need to know what happens underneath. Then architecture: microservices vs modular monolith, serverless, CQRS, and when HTTP, gRPC, Kafka, or WebSockets make sense. Not as buzzwords — but as design choices with trade-offs. Security and infrastructure follow: OWASP Top 10, AuthN vs AuthZ, encryption in transit and at rest, Docker, Kubernetes, Infrastructure as Code, and observability with Micrometer, OpenTelemetry, and Grafana. This roadmap isn’t about mastering every tool. It’s about knowing what affects reliability in production. - [Stop Using DTOs – A Cleaner Way for Your Java APIs](https://bell-sw.com/videos/stop-using-dtos-a-cleaner-way-for-your-java-apis/): Still creating DTOs for every API in your Spring Boot project? You might be overcomplicating things. In this video, we show why DTOs aren’t always necessary and how to replace them with @JsonIgnore, @JsonView, and Jackson Mixins. You’ll see real examples of hiding sensitive fields, creating role-based views, and cutting boilerplate — all while keeping your API safe, clean, and easy to maintain. - [Swagger UI Integration in Spring Boot 3](https://bell-sw.com/videos/swagger-ui-integration-in-spring-boot-3/): How to integrate Swagger UI in Spring Boot 3 using springdoc-openapi This beginner-friendly tutorial shows how to document REST APIs in Java using Swagger UI, customize OpenAPI metadata, group and version endpoints, and secure the Swagger interface — all with Spring Boot 3 and Java 21. - [TOP-5 Lightweight Linux Distributions for Containers](https://bell-sw.com/videos/top-5-lightweight-linux-distributions-for-containers/): In this video, we compare five lightweight Linux distributions commonly used as base images: Alpine, Alpaquita, Chiseled Ubuntu, RHEL UBI Micro, and Wolfi. There are no rankings or recommendations — just a structured look at how these distros differ so you can evaluate them in your own context. - [Top 7 JavaFX Testing Mistakes You Need To Avoid!](https://bell-sw.com/videos/top-7-javafx-testing-mistakes-you-need-to-avoid/): Stop making these common JavaFX testing mistakes! No more random NullPointerExceptions or deadlocks — in this video, we’ll show you how to fix the 7 most frequent TestFX issues when testing JavaFX applications. Learn how to work with FX threads, integrate with Spring Boot, avoid event-queue race conditions, handle pixel-level test differences, set up headless continuous integration with Monocle, and properly separate business logic from UI tests. - [Spring Boot to Native Image in 1 Command — GraalVM Tutorial](https://bell-sw.com/videos/turn-your-4-second-java-startup-into-0-5-seconds-with-graalvm-native-image/): This video covers theory and hands-on practice: how Native Image works, distribution comparison (Liberica NIK, Oracle GraalVM, Mandrel), and real Spring Boot applications including an AI chatbot and Vaadin frontend. From Maven plugins to Docker deployment and tracing agent troubleshooting. - [Vaadin Tutorial: From Spring Boot to Beautiful UI Fast](https://bell-sw.com/videos/vaadin-tutorial-from-spring-boot-to-beautiful-ui-fast/): In this guide, I’ll show you how to build a fully functional Java application with authentication, data tables, filters, and a custom cyberpunk theme using Vaadin. - [Why Test Performance When Scaling K8s](https://bell-sw.com/videos/why-test-performance-when-scaling-k8s/): Running the HotSpot JVM in containers requires careful tuning of resource limits, garbage collection, and JVM options to maximize performance and avoid issues like container restarts or poor scaling. - [Will AI Replace Developers? A Vibe Coding Reality Check 2025](https://bell-sw.com/videos/will-ai-replace-developers-a-vibe-coding-reality-check-2025/): Can AI replace software engineers? ChatGPT, Copilot, and LLM-powered vibe coding tools promise to automate development—but after testing them against 17 years of production experience, the answer is more nuanced than the hype suggests. Full project generation produces over-engineered code that's hard to refactor. AI assistants excel at boilerplate but fail at business logic. MCP servers solve hallucination problems but create context overload. Meanwhile, DevOps automation actually works. This breakdown separates AI capabilities from marketing promises—essential for teams integrating LLMs and copilots without compromising code quality or architectural decisions. - [Liberica JDK | Java runtime from an OpenJDK contributor](https://bell-sw.com/vulnerability-report/): Liberica JDK is a free and open-source implementation of the Java SE platform for modern Java deployments supported by a leading OpenJDK contributor. - [It's Fine Actually: Doing Better in Legacy Java](https://bell-sw.com/webinars/java8-fine-actually/): Still on Java 8 or 11? No judgment, most of us are. Maybe the rewrite isn't coming. Maybe the upgrade to Java 17 or 21 is always six months away. Maybe that old system just… works. This webinar is about what to do when you're not moving on. Because staying doesn't have to mean suffering, and it definitely doesn't mean giving up on good engineering. - [Mastering Kubernetes: Best Practices for Deploying Spring Boot Applications | Java runtime from an OpenJDK contributor](https://bell-sw.com/webinars/mastering-kubernetes-best-practices/): - [Reactive Web Apps With 100% Java With Vaadin](https://bell-sw.com/webinars/reactive-web-apps-with-vaadin/): Full-stack development can be intimidating, especially when going beyond the typical CRUD. A reactive application with real-time updates requires knowing things like WebSockets on top of the regular frontend stuff. But what if you could build a full-featured full-stack web app using only straightforward Java? No JavaScript, no HTML, no CSS. Just Java. Join this live coding session to discover how to develop a reactive web app using Spring Boot and the open-source Vaadin framework. Starting from scratch, we'll cover everything: real-time updates, external services, and a good-looking UI. All in Java. - [掌握 Kubernetes: 部署 Spring Boot 应用程序的最佳实操 | Java runtime from an OpenJDK contributor](https://bell-sw.com/zh-cn/webinars/mastering-kubernetes-best-practices/): ## Downloads - [Download Alpaquita Linux | BellSoft Java](https://bell-sw.com/pages/downloads/alpaquita/): Download Alpaquita Linux, a free and open-source Linux distro tailored to Java apps and microservices. - [Access Alpaquita Linux cloud images for AWS | BellSoft](https://bell-sw.com/pages/downloads/alpaquita-cloud-image/): Access Alpaquita Linux, the Alpine-based build fine-tuned for Java with glibc and musl support. - [Access Alpaquita Linux cloud images for AWS | BellSoft](https://bell-sw.com/pages/downloads/alpaquita-gcp/): Access Alpaquita Linux, the Alpine-based build fine-tuned for Java with glibc and musl support. - [Download JDK 8, 11, 17, 21, 25, 26 | Java Builds for Linux, Windows and macOS](https://bell-sw.com/pages/downloads/): Download Liberica JDK, supported OpenJDK builds. Open source Java 8, 11 and more for Linux, Windows, macOS. - [Download Liberica Native Image Kit, NIK 23 (JDK 17), NIK 23 (JDK 21), NIK 25 (JDK 25), Linux, macOS | BellSoft Java](https://bell-sw.com/pages/downloads/native-image-kit/): Download Liberica Native Image Kit for Linux, Windows, macOS. A tool to boost Java and JVM-based applications. Built from open source GraalVM CE and OpenJDK. ## Blog - [The status of Java on Arm](https://bell-sw.com/java/arm/performance/2019/01/15/the-status-of-java-on-arm/): Today, as Arm processors are primarily viewed as targeting the embedded market, and justifiably so, multiple hardware vendors are using this architecture to build server CPUs and to compete with Intel in the cloud and High Performance Computing (HPC) segment. This broadens the variety of Java applications that run on Arm CPUs and adds to the complexity of the Java Arm port itself, as it must support a segmented variety of CPU vendors and workloads. - [BellSoft at Linaro Connect 19 BKK](https://bell-sw.com/events/2019/02/13/Events-Linaro-Connect-BKK/): A variety of Java virtual machines on ARM have been around for a long time. Nowadays, OpenJDK makes it easy and secure to receive and process data at all stages. Using modern expressive language Kotlin and Docker containers, we will program a simple, but secure gateway that controls a sensor. We’ll demonstrate further data processing in the cloud as BigData and then visualization for end user using OpenJFX. We will discuss additional features such as deployment and provisioning and also how the new release model of the Java platform is connected to security. Event web site - [JetBrains and BellSoft enter strategic collaboration](https://bell-sw.com/announcements/2019/02/13/JetBrains-BellSoft-Liberica-OpenJDK/): JetBrains Runtime is a runtime environment for running IntelliJ Platform-based products on Windows, macOS, and Linux. JetBrains Runtime is based on the OpenJDK project with some value-add for JetBrains customers. These benefits include Subpixel Anti-Aliasing, enhanced font rendering on Linux, HiDPI support, ligatures, San Francisco font family support on macOS, and so on. - [Premium Support is available for Liberica JDK](https://bell-sw.com/announcements/2019/03/26/premium-support-java/): Expanding its Standard Support BellSoft introduces Premium Support service, taking legendary excellence in customer service to new heights. - [Linux package repositories for Liberica JDK](https://bell-sw.com/announcements/2019/03/28/linux-repositories/): Keeping JDK secure requires ease of update and tight integration with operating systems default installation techniques. - [BellSoft at JBCNConf in Barcelona](https://bell-sw.com/events/2019/04/11/Events-JBCNConf/): Microservice architecture and containerization have become the standards of modern application development. The challenges that developers face today are different from the problems that we used to solve earlier. Creators of the Java runtime respond to this with the appropriate functionality in the JDK. For example, an inexpensive cloud instance can be quite powerful. And it runs a bunch of containers. Then JVMs running in different containers compete for instance resources. Starting from Java 10, virtual machines know how to live in peace, this work has continued in Java 11. On the other hand, you now need to choose which base image to use. This includes the choice of operating system and Java runtime. OS images vary greatly in size and have their own characteristics, which must be taken into account. Java runtime is also for every taste now. And even within the OpenJDK framework, assemblies from different companies are available with different functionality and size. And you can create a custom runtime image. We will consider the practical application of Java 11 functionality in a container environment typical for popular fram. Event web site - [OpenJDK may have a new home soon](https://bell-sw.com/announcements/2019/04/23/OpenJDK-project-git/): For those who are not just looking for Java download, there is interesting news. You may be heard about Project Skara, which intent is moving OpenJDK repository from Mercurial to Git. Using Git will bring an obvious benefit: modern code management infrastructure with pull requests. However, there might be another positive side effect, the OpenJDK community may attract millennials into Java evolution. - [Liberica JDK enhances developer experience with package managers](https://bell-sw.com/announcements/2019/05/15/dev-repositories/): Developers all over the world like the ability to have multiple JDK versions installed on their development machines. Choosing the JDK version to work with, being it cutting-edge Liberica JDK release or production-ready supported LTS release has to be easy. - [BellSoft at Oracle CodeOne 2019](https://bell-sw.com/events/2019/06/05/Events-CodeOne2019/): We will be happy to meet you at Oracle CodeOne conference in San Francisco, September 15 - 19. It is our honor to share the knowledge and experience we obtained in the OpenJDK project. If you want to meet us, please drop an email at info@bell-sw.com or reach me on twitter @gigabel. - [Liberica JDK 13 EA with OpenJFX 13 on the Raspberry Pi 4](https://bell-sw.com/announcements/2019/09/12/JDK-JavaFX-Video-Preview/): Today we published Liberica JDK 13 Early Access builds on all supported platforms. As it currently stands, BellSoft provides the most number of platforms publicly for latest Liberica JDK compared to other OpenJDK distribution vendors. - [4 Things you Don’t Want To Do at Code One 2019](https://bell-sw.com/announcements/2019/09/13/CodeOne-2019/): Next week we’ll be at CodeOne in San Francisco. Hopefully, you will be there too, to learn what’s new and Discover the Latest on Java. To help you on your quest for perfect event experience, we created a shortlist of what you may not want to do at Code One. - [Liberica JDK is generally available on PowerPC](https://bell-sw.com/announcements/2019/09/25/Java-on-PowerPC/): Based on OpenJDK and verified by TCK for Java SE Standard Compliance, Liberica JDK for PowerPC is designed to deliver a more efficient end-to-end developer experience by making the runtime systems more hardware-agnostic. - [Oracle Code One 2019: Side Notes](https://bell-sw.com/announcements/2019/09/29/BellSoft-at-CodeOne2019-side-notes/): On September 16-19, the Oracle Code One conference 2019 threw open its doors to Java developers hailing from all over the world. It encompassed all possible subjects a developer might be interested in: from cloud computing, data science, and the professional community to new tools, devices, and technologies. Just like in 2018, the conference was attended by more than 7,000 people, which makes it the world’s most popular event for software developers. - [Meet BellSoft performance engineer at Devoxx Belgium](https://bell-sw.com/events/2019/10/03/Events-Devoxx-Belgium-2019/): There are many great events for developers around the world. However, for the European Java community, there is an outstanding one. It is Devoxx Belgium. If you are there, pay attention to Dmirty Chuyko talk about today and tomorrow of OpenJDK on ARM. We are not talking about Raspberry Pi; Arm is much more than that. Can you imagine a server with hundreds of cores perform on the same level as other CPUs but with lower power consumption? It is a reality which Dmitry will explain in detail. In his talk “Java on ARM. Theory, Applications and Workloads” scheduled on Wednesday from 15:10 to 16:00 in Room 6 https://devoxx.be/talk/?id=13052 he explores the status of Java and the Java ecosystem on ARM, together with the Java ARM port features and performance of specific workloads. We will be happy to meet you at Devoxx! - [Liberica JDK optimized packages introduction](https://bell-sw.com/announcements/2020/01/15/Liberica-JDK-8u242-11.0.6-13.0.2/): Today, with the announcement of the general availability of Liberica JDK 8u242, 11.0.6, 13.0.2, BellSoft introduces several changes that will help Liberica JDK customers have a better experience with the product. Since the first release that happened in 2017, we continue to work on the improvements that make Liberica JDK the most useful and practical OpenJDK distribution in the world. - [Meet BellSoft engineers at JFokus in Stockholm](https://bell-sw.com/events/2020/02/02/Events-JFokus-Stockholm/): It is the second time BellSoft is going to JFokus to meet a vibrant Sweden Java community. Find us on February 4-5, 2020 in Stockholm at Waterfront Conference Center. At BellSoft booth, you can meet engineers who made the smallest Docker container with Java SE standard verified Liberica JDK, which allows a higher density cloud deployments and saves valuable resources. - [Liberica Mission Control 7.1 released](https://bell-sw.com/announcements/2020/02/04/Java-Mission-Control-7-1/): Liberica Mission Control (LMC) 7.1 is generally available for free download from the BellSoft website. - [Liberica JDK 14 is generally available](https://bell-sw.com/announcements/2020/03/18/Liberica-JDK-14/): By changing the cadence of OpenJDK releases two years ago, Oracle accelerated the evolution of Java, which was categorically a positive move for the platform and the ecosystem. Before the change, developers were waiting for the new version with stable features for at least three years. Today, we can admit that the Java run-time development process is iterative. Initially, new capabilities are injected into OpenJDK as preview features; the developer community is testing and giving its feedback to JEP leaders, and after a number of releases, the feature becomes standard. JDK 14 has sixteen new features in six areas: API, Runtime & Performance, Serviceability, Tools, Improved platforms support, and Deprecation. - [BellSoft and VMware to Work Together on OpenJDK Evolution](https://bell-sw.com/announcements/2020/06/03/BellSoft-and-VMware-to-Work-Together/): BellSoft, a leading OpenJDK contributor, announced work with VMware, a leading innovator in enterprise software. BellSoft will provide their main product, Liberica JDK and full-service support for VMware Tanzu. BellSoft, being a leading OpenJDK contributor, and VMware will join forces and work closely with the OpenJDK community to bring Java runtime to the next level of usability and performance, maintaining its exceptional reliability. Liberica is an OpenJDK binary distribution verified by TCK for Java SE Standard Compliance. - [How to Notarize a Mac Application with Liberica JDK using javapackager](https://bell-sw.com/announcements/2020/06/10/How-to-Notarize-a-Mac-Application-with-Liberica-JDK/): One of the main global trends in IT is the safety of users and preventing the spread of malicious programs, but at the same time, it greatly complicates the life of developers. There are different approaches to solving the issue associated with software security. The most common is the use of an antivirus tool by scanning a computer for malware. A complementary approach was taken by Apple, which introduced the Gatekeeper software to force code signing and check downloaded applications before allowing them to run. - [Liberica JDK 8 with JDK Flight Recorder support preview is available](https://bell-sw.com/announcements/2020/06/15/Liberica-JDK-8-with-JDK-Flight-Recorder/): JDK Flight Recorder (JFR) is a low-overhead data collection framework for troubleshooting Java applications and the HotSpot JVM, which produces event data flow for further analysis with Liberica Mission Control. JFR was contributed to OpenJDK by Oracle to JDK 9 and became a part of JDK 11 afterward. It was being backported to JDK 8 during the last year and became one of the most wanted features for companies that use JDK 8 in production. The backport is based on the JFR 2.0 implementation in JDK 11. New functionality as JFR streaming API available in JDK 14. - [SoftChalk chooses Liberica JDK to create a reliable and secure educational platform based on OpenJDK](https://bell-sw.com/announcements/2020/06/16/SoftChalk-Chooses-Liberica-JDK/): By leveraging Liberica JDK, SoftChalk receives Apple notarization for its Java 8 client and gets macOS release planning back on track. - [JDK Flight Recorder – a gem hidden in OpenJDK](https://bell-sw.com/announcements/2020/06/24/Java-Flight-Recorder-a-gem-hidden-in-OpenJDK/): JDK Flight Recorder, also Java Flight Recorder (JFR) is a mighty powerful feature of Hotspot JVM, although it is not as widely known. JFR is not a novel technology. It takes its origin from JRockit JVM; later, it was ported to Hotspot JVM and introduced in Oracle Java 7. At the time of Java 9, JFR was fully open source, and now it is an integral part of OpenJDK. In this article, I would like to highlight key features of Java Flight Recorder and how it can be useful for Java developers. - [Liberica JDK 8u262, 11.0.8, 14.0.2 builds are released](https://bell-sw.com/announcements/2020/07/14/The-Liberica-8u262-11_0_8-14_0_2-are-generally-available/): Today we are announcing the general availability of Liberica JDK’s three brand-new versions: 8u262, 11.0.8, and 14.0.2. These three releases contain, in total, 765 backports of fixes that address known functional issues (six of them are the backports of BellSoft commits) and incorporate 11 common security vulnerabilities and exposures. - [Optimizing Java Microservices with the smallest container on the market](https://bell-sw.com/announcements/2020/07/14/Optimizing-Java-Microservices-with-the-smallest-container-on-the-market/): We have some exciting news! BellSoft’s new JEP 386 is designed to integrate the Portola Project into upstream OpenJDK. This port will allow building a variant of the JDK on Alpine Linux/x64 and other Linux distributions that use musl as their primary C library, so there is no need for the glibc portability layer. The company’s engineering team created a merge from the Portola repository to the JDK mainline branch, fixed several solutions proposed by previous contributors, and thoroughly tested the resulting patch. Alpine is a Linux distribution based on musl as libc and Busybox as a toolset. The greatest advantage of this system is its lightweight nature. - [Hunting down code hotspots with JDK Flight Recorder](https://bell-sw.com/announcements/2020/07/22/Hunting-down-code-hotspots-with-JDK-Flight-Recorder/): Hunting down code hotspots is probably the most common task for Java profilers. JDK Flight Recorder (JFR) and Mission Control (MC) are free and open source performance/profiling products available with OpenJDK 11. They have a few powerful tools for code execution profiling. - [7 reasons to switch from Oracle JDK to OpenJDK](https://bell-sw.com/announcements/2020/08/14/7-reasons-to-switch-from-Oracle-JDK-to-Liberica-JDK/): It seems that Oracle developed a habit of changing licensing conditions for Oracle JDK every two years: - [Hunting down memory issues with JDK Flight Recorder](https://bell-sw.com/announcements/2020/09/02/Hunting-down-memory-issues-with-JDK-Flight-Recorder/): In this post about JDK Flight Recorder and Mission Control, a powerful diagnostic and profiling tool built into OpenJDK, I would like to focus on JVM memory features. - [Liberica JDK 15 brings efficiency and flexibility](https://bell-sw.com/announcements/2020/09/17/Liberica-JDK-15-brings-efficiency-and-flexibility/): It’s time to welcome the much-awaited version 15 of OpenJDK. The new release has 14 new features, 2949 bug fixes and backports in total, with eight issues resolved by the BellSoft team (like Thread-local handshakes implemented for Arm32). - [Java microservices: architecture, best practices, tutorials](https://bell-sw.com/announcements/2020/09/21/microservices-101-understanding-the-architecture/): There is hardly any developer left who hasn’t heard about the microservices. So much is written about microservice architecture, and yet you might still stumble through the basics. - [Liberica JDK release accessibility convenience in developer and user scenarios](https://bell-sw.com/announcements/2020/09/30/Liberica-JDK-release-accessibility/): We at BellSoft emphasize that Liberica JDK must be convenient and accessible to all users. Our development team makes sure the runtime is available as Docker container images, on package managers, clouds, and other distribution channels. - [How BellSoft ensures Liberica JDK quality](https://bell-sw.com/announcements/2020/10/19/How-Bellsoft-Ensures-Liberica-JDK-Quality/): We at BellSoft take nothing more seriously than the quality, security, and performance of our products. These are the most common concerns for any organization that chooses to develop with OpenJDK. No need to worry—you do not have to “only pick two.” - [JVM in Linux containers, surviving the isolation](https://bell-sw.com/announcements/2020/10/28/JVM-in-Linux-containers-surviving-the-isolation/): Running a Java application in Docker on a VM hosted in the cloud is not uncommon these days. But let’s take a closer look at this setup. We have a bare metal box somewhere in the cloud provider’s data center and hypervisor host OS running on that box. Next, we have a guest OS running in a VM provided by the hypervisor. Docker is running in the guest OS and provides a container runtime. Not to mention JVM in the container, which is also a type of VM. - [TeXnical Writing Part 1: Foundations](https://bell-sw.com/announcements/2020/11/02/TeXnical-Writing-Part-1-Foundations/): Plain text documents are timeless. The earliest ASCII documents ever written can still be opened, read, and modified today, on virtually any hardware, using any operating system, without any proprietary software, online service, or third-party conversion program. In stark contrast are document formats such as those produced by Microsoft Word, ClarisWorks, Lotus Manuscript, WordPerfect, WordStar, and most other word processors, whether discontinued or not. - [BellSoft Kicks Off Bundled Offer with Karakun for Better Software Security and Simpler Migration](https://bell-sw.com/announcements/2020/11/13/BellSoft-Kicks-Off-Bundled-Offer-with-Karakun/): BellSoft, one of the top-5 OpenJDK contributors, and Karakun AG, a software engineering company that specializes in the development of custom solutions and maintainer of OpenWebStart, an open source re-implementation of the Java Web Start technology, have recently announced a new partnership. BellSoft and Karakun collaborate to provide a safe path from Oracle Java to open source solutions. - [An intelligent bet for Kotlin Part 1](https://bell-sw.com/announcements/2020/11/16/An-intelligent-bet-for-Kotlin-part-one/): The Java industry is moving forward along with the world around it. And software companies, as part of its community, are very much in tune with the trends. Progressive and novel things often emerge from technology crossovers. Here’s why BellSoft, determined to keep you informed of everything Java-related, has invited me to make a two-parter on the young and advanced Kotlin language. - [An intelligent bet for Kotlin. Part 2](https://bell-sw.com/announcements/2020/12/04/An-intelligent-bet-for-Kotlin-part-two/): The promising Kotlin language has made many developers jump for joy and even rekindled their interest in studying new ways in programming. Staying on top of all things IT, we like to look into what’s working now and how it can benefit the whole community. In the first part of this series, we went through some of Kotlin’s main features, remarking the conciseness, simplicity and pragmatism as bright signs of its identity. We touched upon its various uses, showcasing Kotlin’s versatility and how it provides plenty of options for developers. - [TeXnical Writing Part 2: Markdown](https://bell-sw.com/announcements/2020/12/10/TeXnical-Writing-Part-2-Markdown/): Welcome back to developing a Liberica JDK-based app for real-time conversion of mathematical formulas from Markdown to HTML. If the first part of this series was all about building an executable binary, the second one focuses on building a text editor that supports Markdown syntax and a preview pane to show the result. - [Coding Languages for Fintech: How Will JVM Make You Succeed?](https://bell-sw.com/announcements/2021/01/05/Coding-Languages-for-Fintech/): BellSoft is rounding up 2020 with top languages for Fintech enterprises. Whether you’re a startup launching your very first MVP, an up-and-coming business, or an established player in finance, trading, or retail in search of an innovative edge, this list is guaranteed to answer all your IT needs. - [Secrets behind tiny Docker containers for Java microservices](https://bell-sw.com/announcements/2021/01/13/Secrets-behind-tiny-Docker-containers-for-Java-microservices/): In view of the upcoming Liberica JDK release, we want to lift the curtain just a bit and talk about what makes BellSoft images so small. You will learn the two main image reduction methods and get tools to minimize containers for your project. - [Liberica JDK 8u282, 11.0.10, and 15.0.2 are here](https://bell-sw.com/announcements/2021/01/19/Liberica-8u282-11.0.10-and-15.0.2-are-here/): January marks the beginning of the year and a new JDK release. Welcome versions 8u282, 11.0.10, and 15.0.2! This time, the release contains 401 fixes overall (139 in JDK 8, 200 in JDK 11, and 62 in JDK 15). It will aid Java developers with the following features, selected and crafted by BellSoft based on the latest IT trends. - [JDK Flight Recorder, The Programmatic Way](https://bell-sw.com/announcements/2021/01/29/JDK-Flight-Recorder-The-Programmatic-Way/): JDK Flight Recorder (JFR) is a powerful diagnostic tool built into OpenJDK. In previous posts, I was focusing on using JFR together with JDK Mission Control, a visual front end. Besides out of box integration with JDK tools like Mission Control and jcmd, Flight Recorder has an API. - [TeXnical Writing Part 3: Syntax](https://bell-sw.com/announcements/2021/02/05/TeXnical-Writing-Part-3-Syntax/): Welcome to the third part of developing a Liberica JDK-based application for real-time conversion of mathematical formulas from Markdown to HTML. In the previous part we developed a plain Markdown editor and preview panel; in this part we’ll walk through adding a TeX processor to the application. - [BellSoft releases Liberica Native Image Kit](https://bell-sw.com/announcements/2021/02/19/BellSoft-releases-Liberica-Native-Image-Kit/): Liberica Native Image Kit (Liberica NIK) is a utility that converts your JVM-based application into a fully AOT compiled native executable under the closed-world assumption with an almost instant startup time. It is based on the open source GraalVM Community Edition. Being compatible with various platforms, including lightweight musl-based Alpine Linux, this technology optimizes resource consumption and minimizes the static footprint. - [BellSoft’s 2020 in numbers](https://bell-sw.com/announcements/2021/02/24/BellSofts-2020-in-numbers/): Many would agree that 2020 was a challenging year for the global communities. We at BellSoft welcome the challenge; it’s our second nature! It turns out, last year was a big one for us. - [Liberica JDK offers native Java builds for Apple Silicon M1](https://bell-sw.com/announcements/2021/03/12/Liberica-on-Apple-Silicon/): As of January 2021, Liberica JDK runs natively on Macs powered by the first processor of Apple’s design specifically for Macintosh computers, M1. This feature applies to both LTS’s (8, 11, 17) and the current version. 18 months have passed since then. Apple extended the line of M1 processors, each more powerful than the previous one. But as a Java developer, you must primarily be interested in practical things: - [Liberica JDK 16: more developer-friendly, more powerful](https://bell-sw.com/announcements/2021/03/19/JDK-16-Release/): Today we welcome JDK 16, the last version of the Java Development Kit before the stable, long-term support (LTS) release. Contrary to what some people would assume, it’s not a “placeholder” title. Version 16 is a standalone JDK and features 17 new capabilities — with native support for Alpine Linux integrated by BellSoft. - [Get savvy about native image at JRush](https://bell-sw.com/events/2021/03/25/Events-JRush/): In the light of the Liberica NIK release, BellSoft invites high-level software developers and Java enthusiasts to discover native image. Join us on March 25 at 11 am PDT online. Learn how this wonderful tool can optimize your projects and minimize resources! - [TeXnical Writing Part 4: Math](https://bell-sw.com/announcements/2021/03/26/TeXnical-Writing-Part-4-Math/): Welcome back! In the previous part of this series we developed a plain Markdown editor and preview panel; in this part we’re going to focus on rendering equations and formulas in our application based on Liberica JDK. - [DZone Refcard by BellSoft: Introduction to Cloud-Native Java](https://bell-sw.com/announcements/2021/04/02/Refcard-announcement/): Our mission is to bring value, technology, and knowledge to the Java™ community. Seeing how cloud-native solutions are spreading fast, we cannot stand aside. That’s why BellSoft has collaborated with DZone, a leading publisher of software development resources, to produce a short but action-packed intro to this exciting subject. - [Java in Docker on Apple Silicon](https://bell-sw.com/announcements/2021/04/09/Java-in-Docker-on-Apple-Silicon/): As you know Apple has begun the transition from Intel x86_64 processors to ARM64-based Apple silicon chips in Mac computers. Since then, the company launched several M1 processors: apart from plain M1 chip, the product line includes M1 Pro, M1 Max, and M1 Ultra, the last one being the most powerful so far with 20 CPU cores and 64 GPU cores. You can read more about M1 features in perks in our previous article dedicated to the topic. - [Liberica JDK 8u292, 11.0.11, 16.0.1 builds are released](https://bell-sw.com/announcements/2021/04/21/Liberica-8u292-11.0.11-16.0.1-are-released/): Today we announce the general availability of Liberica JDK versions 8u282, 11.0.11, and 16.0.1. The stable quarterly CPU cadence allows rolling out urgent updates and bug fixes exactly when they’re needed. The three April releases cover two (CVE-2021-2161, CVE-2021-2163) common security vulnerabilities and exposures with eight (four in each LTS version) backports. The release contains 501 fixes overall (127 in JDK 8, 271 in JDK 11, and 103 in JDK 16). - [TeXnical Writing Part 5: Performance](https://bell-sw.com/announcements/2021/04/23/TeXnical-Writing-Part-5-Performance/): Earlier in this series, we reviewed in brief the TeX typesetting system as well as the state of Java-based TeX engines. We settled on integrating JMathTeX into our application. In this final part, we’ll profile our application created with Liberica JDK to determine where optimizations will reward us with the most significant performance gains. - [Choose your cloud-native fighter: JVM in containers, Quarkus or Spring Native](https://bell-sw.com/announcements/2021/05/20/choose-your-cloud-native-fighter-jvm-in-containers-quarkus-or-spring-native/): Do you have a ready-to-go Java app and want to take advantage of everything the Modern Cloud offers? Deployment is the next step, and you’ve come to the right place for guidance. - [End of life for old TLS in OpenJDK and Liberica JDK](https://bell-sw.com/announcements/2021/06/03/end-of-life-for-old-tls-in-openjdk-and-liberica-jdk/): Note: This is a new version of this article, updated with the information on a vulnerability in OpenSSL 3.0, which is another example of why you need to keep your software up-to-date and protected. - [JDK Flight Recorder vs. Stop the World Pauses](https://bell-sw.com/announcements/2021/06/09/jdk-flight-recorder-vs-stop-the-world-pauses/): This post will focus on Stop-the-World pauses in the JVM and how JDK Flight Recorder (JFR) can help you identify the root cause. I’ve touched on this topic before in Hunting down memory issues…, but now the goal is to get a deeper insight into its aspects. - [Efficient code vs string concatenation. Solve This Java™ Snippet!](https://bell-sw.com/announcements/2021/06/25/efficient-code-vs-string-concatenation-solve-this-java-snippet/): Let's have some fun with Java code! Here is a code snippet: - [License to support. The service your Java apps deserve](https://bell-sw.com/announcements/2021/07/08/license-to-support-the-service-your-java-apps-deserve/): BellSoft cares about our clients’ success, first and foremost. Successful people know that you need to constantly improve yourself to stay the best. And to do so it is important to build a support system consisting of your colleagues, friends and family. - [Liberica JDK 8u302, 11.0.12, and 16.0.2 builds are out](https://bell-sw.com/announcements/2021/07/22/liberica-8u302-11-0-12-and-16-0-2-are-generally-available/): The quarterly release cadence is the best thing that happened to Java™. Once again, it proves its effectiveness, as the three new CPUs of Liberica JDK — 8u302, 11.0.12, and 16.0.2 — eliminate an outstanding amount of issues from the previous releases. Here’s a quick July release overview: - [Java 17 new features and tools: Pedal to the metal!](https://bell-sw.com/announcements/2021/08/11/pedal-to-the-metal-java-17-tools-and-features-to-expect/): When we think of new Java™, we like to imagine it being like a sleek modern car from the respected series — true to its roots, but fast, comfortable, and updated with all the gizmos needed for the ride. Sure, the newer car models are introduced constantly, but when you need both reliable and practical — you can’t go wrong with this one. - [Spring Native — the image of the future](https://bell-sw.com/announcements/2021/08/26/the-new-spring-is-here/): The Spring “family” is built around the Spring framework, one of the most popular Java frameworks in existence, with Spring Boot as a flagship. First released 18 years ago, it keeps growing and rejuvenating. While newer solutions appear, Spring stays on top. It is still a lightweight, secure, easily customizable, and flexible programming environment that has become a standard helper in modern Java development. - [A support agreement of VMware and BellSoft for Spring Boot](https://bell-sw.com/announcements/2021/09/02/BellSoft-VMware/): BellSoft, the provider of progressive Java Runtime for agile enterprises, and one of the leading OpenJDK contributors, is excited to announce its new agreement with VMware. Now, using Spring Native and Liberica Native Image Kit (NIK), developers will be able to produce Spring Boot native applications seamlessly. Thanks to this agreement, VMware Tanzu® customers using Spring Native will utilize Native Image Kit and a Liberica Java Runtime, which will enable Spring Boot developers to reduce the startup time of their services and memory consumption. - [Dive into the DevOps way of thinking at JRush](https://bell-sw.com/events/2021/09/13/Events-JRush/): The emergence of the DevOps concept in 2009 started a revolution in the IT world. Today we cannot imagine building perfect infrastructure without integrating DevOps principles and processes. As Java is one of the most popular programming languages used by many large enterprises, knowledge of DevOps practices is critical for Java developers. BellSoft invites seniors and top specialists to discover the latest trends in DevOps. Join us on Sept. 23, 11 am PT, online. Find out how to boost the performance of your apps and speed up infrastructure transformation. - [Liberica JDK 17 LTS release: solid ground for an update](https://bell-sw.com/announcements/2021/09/17/liberica-jdk-17-lts-release-solid-ground-for-an-update/): LTS means “Long-Term Support” release, but we sometimes call it “Long Time no See.” And while the LTS releases of Liberica JDK are introduced at a cadence fully aligned with OpenJDK releases, it’s a big event every time, which we await eagerly, so much so, that we have already told you about all the added, updated, and deprecated features in the new Java™. - [Quarkus and Liberica Native Image Kit: it takes two to make a difference](https://bell-sw.com/announcements/2021/09/22/quarkus-and-liberica-native-image-kit-it-takes-two-to-make-a-difference/): Several major Java frameworks, such as Spring Boot, support GraalVM Native Image out-of-the box. We discussed how to tranform Spring Boot applications into native images here. - [Create a microservices constellation with Micronaut and Liberica Native Image Kit](https://bell-sw.com/announcements/2021/09/29/create-a-microservices-constellation-with-micronaut-and-liberica-native-image-kit/): The microservices are taking over the IT infrastructure; this is a well-established fact. Gigantic monolithic applications are vestiges of the past. With the dawn of new technologies, i.e. frameworks, companies can now create a whole constellation of microservices. The most popular framework is Spring Boot ー a renowned and reliable framework that makes it easy to create Spring-based applications. However, there are a number of alternatives available on the market. In this article we are going to focus on one of them: Micronaut. - [JCMD everywhere — locally, containerized, and remotely](https://bell-sw.com/announcements/2021/10/14/jcmd-everywhere-locally-containerized-and-remotely/): “jcmd” is the command line executed with JVM diagnostic tools shipped with OpenJDK. Before the introduction of jcmd, there were multiple tools to run live and post mortem diagnostics for JVM. jcmd became a to-go utility for live diagnostics of JVM executed from the command line (e.g., dumping threads or inspecting JVM configuration). The post mortem diagnostics are performed with other tools. - [Liberica JDK 8u312, 11.0.13, and 17.0.1 builds are out](https://bell-sw.com/announcements/2021/10/20/liberica-8u312-11-0-13-builds-are-released/): Contents - [Liberica Native Image Kit 21.3 based on Liberica 17 and 11 is out!](https://bell-sw.com/announcements/2021/10/22/the-new-liberica-native-image-kit-21-3-based-on-liberica-17-and-11-is-out/): The new LTS release of Liberica JDK is the event that leads to many new releases of our products. We present the latest version of Liberica NIK, a tool based on GraalVM that accelerates your application by utilizing native image technology. - [BellSoft releases Liberica Administration Center](https://bell-sw.com/announcements/2021/11/02/bellsoft-releases-liberica-administration-center/): Managing an extensive IT infrastructure is challenging. Imagine a company with thousands of PCs. Various Java applications have been piling up on them for years, JDK versions have been updated at different times, or never actually updated. Moreover, they all might stem from different vendors. Is it even possible to unravel this tangle and bring order to it? - [Discover the world of evergreen software at JRush](https://bell-sw.com/events/2021/11/25/Events-JRush/): We are back with the third episode of JRush, a series of always-free web conferences where Java engineers get concise yet extensive information on a particular topic. This time, we will guide you towards a flexible, agile, self-updating, and cost-effective IT infrastructure. Join us online on Dec. 2, 11 am PT. Together we will explore tools and methods that will help you enhance the security and performance of your Java apps and leave behind the nightmare of big bang migrations and upgrades. - [DevOps: how to make it work for you](https://bell-sw.com/announcements/2021/12/01/devops-why-it-does-not-work-for-you-and-how-to-fix-this/): The concept of DevOps dates back to 2009, yet it remains a hot topic. Everybody wants a DevOps engineer in their company. People talk about DevOps practices and implement them into their processes. Still, many developers, when engaged in private conversation, say that DevOps does not work, does not help, and makes their job more complicated and even annoying. - [Vulnerability scanning for Java apps](https://bell-sw.com/announcements/2021/12/08/vulnerability-scanning-for-java-apps/): “Safety first” is the motto engineers at BellSoft follow in delivering our products to customers. As a leading OpenJDK contributor and a member of the OpenJDK Vulnerability Group, we cooperate with the community in hunting down and fixing security issues, and making sure that Liberica JDK is free from common vulnerabilities. Our support team is there for you 24x7x365 with response times as fast as one hour. - [How to make Java the DevOps best friend](https://bell-sw.com/announcements/2021/12/16/how-to-make-java-the-devops-best-friend/): A successful DevOps strategy is not about abstract ideas, team collaboration, and good practices of continuous application delivery alone. It is also about technologies that make those practices come to life. For example, vulnerability scanners provide continuous safety monitoring throughout the CI/CD pipeline. Docker helps developers package, deploy, replicate, and shift containers in a streamlined way. Kubernetes enables automatic management of the containerized applications. - [BellSoft annual results 2021](https://bell-sw.com/announcements/2021/12/24/bellsoft-annual-results-2021/): 2021 has seen the gradual recovery of the global economy from the pandemic crisis. The challenges the world still faces are immense, but so are the possibilities. We at BellSoft are proud to say that we did our best to do our part 一 by providing a better Java experience for all developers! We worked hard to deliver better cloud deployment, more secure development, and a faster time to market. The efforts we made have borne fruit, and 2021 became one of the most prolific years for our company: - [Liberica 17.0.2, 11.0.14, and 8u322 builds are out](https://bell-sw.com/announcements/2022/01/19/liberica-17-0-2-11-0-14-and-8u322-builds-are-out/): We are happy to announce that today we release Liberica JDK versions 17.0.2, 11.0.14, and 8u322 as part of the quarterly CPU cadence. CPU (Critical Patch Update) releases help keep the runtime secure and performant as they contain CVE and bug fixes, whereas PSU releases contain non-critical fixes. - [Java 18 一 many new features in a non-LTS release](https://bell-sw.com/announcements/2022/01/27/java-18-many-new-features-in-a-non-lts-release/): Java 18 is released and available for everyone! Our instance of Java 18, Liberica JDK 18, is ready for download. It is not an LTS release, so the changes and enhancements are not as huge as in last year’s Java 17, and yet, there are some interesting new features! In the previous release, there were a lot of functionalities deprecated for removal or removed, but this year, there are not only upgrades to the existing JEPs, but some completely new enhancements. What is interesting is that some of those enhancements were functioning at the time when Java 17 came out, but they required additional testing, so in case you upgrade to Java 18, you will see them enhanced and stabilized. This is another example of how Java™ is being constantly tested and upgraded with every release by many participants of this open source project, including BellSoft. - [Liberica Native Image Kit 22.0.0.2 and 21.3.1 builds are released](https://bell-sw.com/announcements/2022/01/28/liberica-native-image-kit-22-0-0-2-and-21-3-1-builds-are-released/): We are happy to announce that the new Liberica Native Image Kit (NIK) 22.0.0.2 is now generally available. In addition, we improved the previous version and released NIK 21.3.1. We will provide security update releases for the NIK-21.3 branch throughout 2022. We plan to provide similar support for NIK-22.3 throughout 2023. These update releases will occur four times a year and will be synchronized with JDK update releases. - [What is OpenJDK and why you should use it](https://bell-sw.com/announcements/2022/02/10/what-is-openjdk-and-why-you-should-use-it/): OpenJDK is the development kit for Java, the language with 26 years of history behind it. It is not a new language by any standards, especially in the industry where new solutions appear every few years and are usually better than their predecessors. And OpenJDK, the most popular instance of Java, is 14 years old already. By all means, OpenJDK should have been replaced many times already. And yet it is still one of the most popular development tools in the world! How could this happen? - [Oracle Java License Change: Complete Guide (2026)](https://bell-sw.com/announcements/2022/02/24/java-licensing-changes-in-2021/): Oracle has made three licensing changes since 2019 for its commercial Java Platform, Standard Edition (Java SE). The cumulative effect is that many organizations that were previously using Java without a subscription now require one — and the cost of that subscription has changed significantly. - [How to lower TCO by choosing the right OpenJDK vendor](https://bell-sw.com/announcements/2022/03/17/how-to-lower-tco-by-choosing-the-right-openjdk-vendor/): Decreasing cost is a hot topic in the OpenJDK world. We at BellSoft would like to explain how we do it, what steps we take to help you avoid unnecessary spending, and provide a way to estimate how much you will save! - [Liberica JDK 18 release: the future of Java development](https://bell-sw.com/announcements/2022/03/23/liberica-jdk-18-release-the-future-of-java-development/): OpenJDK 18 is not a Long Term Support release, but that doesn’t mean it’s less interesting or not as important. Non-LTS releases are a great way to test features soon to be available in a future LTS release. They also provide a smoother transition to the latest versions. - [Alpine Linux/x64 is now officially backported to OpenJDK 11](https://bell-sw.com/announcements/2022/03/31/alpine-linux-x64-is-now-officially-backported-to-openjdk-11/): Following recent backports of Windows/AArch64 and macOS/AArch64 support of Java into OpenJDK 11, I proposed a similar integration of Alpine Linux/x64 (JEP 386). - [How to use perf to monitor Java performance](https://bell-sw.com/announcements/2022/04/07/how-to-use-perf-to-monitor-java-performance/): I have already dedicated several posts to JDK Flight Recorder (JFR) 一 a built-in JDK profiler. While JFR is a great tool, it still has plenty of competition, as the ecosystem of profilers in the Java world is very abundant. Today I would like to focus on using one of such tools, perf 一 a powerful Linux profiler. - [Liberica JDK 18.0.1, 17.0.3, 11.0.15, and 8u332 builds are generally available](https://bell-sw.com/announcements/2022/04/21/liberica-18-0-1-17-0-3-11-0-15-and-8u332-builds-are-generally-available/): Today we announce a Critical Patch Update (CPU) of Liberica JDK. CPU patches (versions 8u331, 11.0.14.1.1, 17.0.2.1, and 7u341) contain fixes for Common Vulnerabilities and Exposures (CVE) and help to keep the runtime secure and performant at all times. In addition to the CPU, we also release Patch Set Update (versions 18.0.1, 17.0.3, 11.0.15, and 8u332) with non-critical fixes. - [Insufficient video memory causing NullPointerExceptions in JavaFX apps](https://bell-sw.com/announcements/2022/04/26/insufficient-video-memory-causing-nullpointerexceptions-in-javafx-apps/): As part of the series of short articles by BellSoft, we will look into various exceptions, their root causes, and elimination. - [Liberica Native Image Kit 21.3.2 and 22.1.0 builds are released](https://bell-sw.com/announcements/2022/04/28/liberica-native-image-kit-21-3-2-and-22-1-0-builds-are-released/): We are happy to announce the general availability of Liberica Native Image Kit (NIK) versions 21.3.2 and 22.1.0. Being part of the security update release cycle, the builds contain a number of fixes and important enhancements. - [What is RISC-V and is there a Java port?](https://bell-sw.com/announcements/2022/05/18/what-is-risc-v-and-when-is-the-java-port-coming/): When you hear “processor architecture,” what are the first things that come to mind? Most likely, x86 and ARM. But now there is a new player in town — RISC-V. What is it? How does it differ from ARM? How did it manage to evolve from a project created by a group of university researchers into a thriving platform supported by such tech giants as Google, Alibaba, Huawei, and even Intel? And is there a Java port? Find the answers in our article! - [Java: 27 years of innovation](https://bell-sw.com/announcements/2022/05/24/java-27-years-of-innovation/): When Java was created in 1995, few could imagine that in 27 years, a third of developers would be using it as their main language. The most popular programming languages back then were C, C++, Fortran, and Pascal. It took Java only five years to take the lead and stay on top to the present day. - [Role of a database in TCO reduction](https://bell-sw.com/announcements/2022/05/26/role-of-a-database-in-tco-reduction/): The strategy of reducing the TCO of Java applications includes numerous items, and today we take a closer look at one of them — a database. - [Optimizing cloud costs](https://bell-sw.com/announcements/2022/06/01/optimizing-cloud-costs/): Reducing cloud costs is a hot topic in the modern IT world. In 2021 managing cloud computing expenses was one of the top three major enterprise issues along with enhancing security and governance. 61% of companies set cloud cost optimization as their top priority1, and this trend is bound to continue. In this article, we will learn how to identify the root cause for suboptimal app performance and inflated resource consumption. - [JEP 428: Structured Concurrency (Incubator)](https://bell-sw.com/announcements/2022/06/03/jep-428-structured-concurrency-incubator/): The OpenJDK constantly works on improving the Java language. The new JEP 428: Structured Concurrency, which is now an incubating API, is aimed at simplifying multithreaded programming. - [11 reasons to start using containers now!](https://bell-sw.com/announcements/2022/06/08/11-reasons-to-start-using-containers-now/): The popularity of containers grows proportionally to the adoption of cloud-native development. According to Gartner, more than 75% of companies will be using containers by the end of 2022, a significant increase compared to 30% two years ago. - [Leyden: The new OpenJDK project](https://bell-sw.com/announcements/2022/06/10/leyden-the-new-openjdk-project/): Project Leyden, launched in May 2022, aims to improve the startup time of Java applications, time to peak performance, and resource consumption by utilizing static runtime images. - [Linux Server and Linux Cloud support is a must and here is why](https://bell-sw.com/announcements/2022/06/15/linux-server-and-linux-cloud-support-is-a-must-and-here-is-why/): Linux is the most popular operating system for servers and the cloud: it is flexible, versatile, and suitable for a wide range of user cases, from cloud to embedded devices. It is also open-source, just like OpenJDK, which means you can build your custom distribution or use a ready solution without paying a dime. The large Linux community will take care of bugs, security patches, and enhancements so your OS will always be safe, updated, and stable. Or will it? - [JEP 425: Virtual Threads (Preview)](https://bell-sw.com/announcements/2022/06/17/jep-425-virtual-threads-preview/): JEP 425: Virtual threads is targeted to JDK 19 as a preview API. Virtual threads are part of Project Loom, which has been in the making since 2017. The project is aimed at enhancing the concurrency performance in Java by letting the developer write and maintain concurrency applications with familiar APIs and use hardware resources more efficiently. - [Creating Java microservices with Spring Boot and Liberica JDK](https://bell-sw.com/announcements/2022/06/20/creating-java-microservices-with-spring-boot-and-liberica-jdk/): In modern enterprise software development, microservices are becoming increasingly popular. Although this type of architecture is no silver bullet and implementing it is significantly more challenging compared to monoliths, it is the preferred one in many instances. For a deep dive into the theory of microservices, go to our previous article, introduction to understanding the architecture. - [Java 19 — new features and enhancements](https://bell-sw.com/announcements/2022/06/22/java-19-new-features-and-enhancements/): JDK 19 acquired a clear form on June 9 when it was moved to Rampdown Phase One. Although examining and playing with new language functionalities is exciting on its own, there is one aspect that makes Java 19 remarkable. It is right in the middle between LTS releases, which means we can already trace the trends of Java evolution. - [New JEP draft: Classfile API](https://bell-sw.com/announcements/2022/06/24/new-jep-draft-classfile-api/): Java evolves fast: changes and enhancements are introduced continuously with new releases coming out every six months. But some technologies cannot keep up with the language progression. - [How to deploy Docker containers to AWS](https://bell-sw.com/announcements/2022/06/27/how-to-deploy-docker-containers-to-aws/): Welcome back to our series on building Java microservices! In part one, we created two working microservices, Customer and Order. In part two, we containerized our application using Docker. Now it’s time to send our Docker containers into the cloud! - [Enabling security and monitoring of cloud-native microservices](https://bell-sw.com/announcements/2022/06/28/enabling-security-and-monitoring-of-cloud-native-microservices/): This is the fourth part of the cloud-native microservice development in Java™. In the first part of the series, we designed the microservice architecture and developed two simple Java microservices. - [HotSpot vs. OpenJ9: performance comparison](https://bell-sw.com/announcements/2022/06/28/hotspot-vs-openj9-performance-comparison/): Which Java Virtual Machine to choose, HotSpot or OpenJ9? Both are tunable open-source JVM implementations. HotSpot is a well-established JVM implementation initially developed by Sun Microsystems. OpenJ9, developed by IBM, is not as widespread in the industry but has gained popularity in recent years. - [Linux distributions for server and cloud: overview](https://bell-sw.com/announcements/2022/06/29/linux-distributions-for-server-and-cloud-overview/): Windows might be the most popular OS for desktop use, but Linux has the upper hand in the world of server applications and cloud computing. However, it is challenging to choose a perfect Linux distribution for server or cloud with the abundance of distros available on the market. Bottom line is that it should be small to help you save resources and money, and have reliable support that provides you with timely updates and prompt bug fixes. - [Six ways to lower development costs](https://bell-sw.com/announcements/2022/07/06/six-ways-to-lower-tco-in-it/): Every IT department is looking for ways to reduce its IT infrastructure costs. Costs can easily get out of control from a number of sources: expensive hardware, maintenance bills, multiple licenses, and unreliable software just to state a few. Bellsoft has already examined ways to reduce costs around Java and support in a guide to lowering TCO by choosing the right OpenJDK vendor. - [Faster time to market with Liberica JDK and best DevOps practices](https://bell-sw.com/announcements/2022/07/13/faster-time-to-market-with-liberica-jdk-and-best-devops-practices/): In modern software development, faster time to market defines a company’s success. Imagine you spend three years developing a perfect application with top-notch features and enhanced security, with every possible bug tested for and eliminated, and then your competitors launch a similar product, even several ones! - [Liberica 18.0.2, 17.0.4, 11.0.16, and 8u342 builds are generally available](https://bell-sw.com/announcements/2022/07/21/liberica-18-0-2-17-0-4-11-0-16-and-8u342-builds-are-generally-available/): Today we announce a Critical Patch Update (CPU) of Liberica JDK versions 8u341, 11.0.15.1.1, and 17.0.3.1.1. CPU patches contain fixes for Common Vulnerabilities and Exposures (CVE) and help to keep the runtime secure and performant at all times. In addition, we release PSU versions (18.0.2, 17.0.4, 11.0.16, and 8u342) with non-critical fixes. - [Enhancing JVM monitoring with Prometheus on AWS](https://bell-sw.com/announcements/2022/07/21/enhancing-jvm-monitoring-with-prometheus-on-aws/): This article is the fifth part of the cloud-native microservice development in Java™. In the first part of the series, we designed the microservice architecture and developed two microservices for our simple Java e-commerce application. - [Alpine Linux: small and powerful distro for Docker images](https://bell-sw.com/announcements/2022/08/03/alpine-linux-small-and-powerful-distro-for-docker-images/): The base image size of Alpine Linux is only 2.67MB, which is ten times smaller than the most popular Linux distributions, Ubuntu and Debian. And yet, it is a full-fledged Linux environment that provides you with a lightweight server solution for virtualization or containers. - [Incorrect access to Java Collections causing ConcurrentModificationException](https://bell-sw.com/announcements/2022/08/05/incorrect-access-to-java-collections-causing-concurrentmodificationexception/): As part of the series of short articles by BellSoft, we look into various exceptions, their root causes, and elimination. - [Liberica Native Image Kit 22.2.0 and 21.3.3 builds are out](https://bell-sw.com/announcements/2022/08/05/liberica-native-image-kit-22-2-0-and-21-3-3-builds-are-out/): We are happy to announce the general availability of Liberica Native Image Kit (NIK) versions 22.2.0 and 21.3.3 as part of Critical Patch Update (CPU) release cycle. The builds contain several security fixes and enhancements. - [Enhance Linux security on server and cloud](https://bell-sw.com/announcements/2022/08/10/enhance-linux-security-on-server-and-cloud/): For a long time, Linux remained a niche operating system and thus enjoyed peace and quiet in a world filled to the brim with cybercrime. But today, about 80% of servers and 90% of cloud infrastructure run on Linux. The sky-rocketing popularity of this OS couldn’t escape the attention of hackers, and as a result, - [JavaFX guide: Go graphical with Java](https://bell-sw.com/blog/javafx-guide-go-graphical-with-java/): Java has a powerful solution for developing rich client applications — JavaFX. Introduced in 2008, it currently matures within the OpenJFX project delivering excellent cross-platform compatibility and modern out-of-the-box solutions for UI. With JavaFX, you can write familiar code in Java to develop desktop applications, without resorting to the complexities of JavaScript or .NET. - [GraalVM 22.2.0 was released](https://bell-sw.com/announcements/2022/08/19/graalvm-22-2-0-was-released/): A new version of GraalVM 22.2.0 released on July 26 has many new features and enhancements in stock! You can find the complete list of updates in the release notes, and we will review the most important ones, boosting the technology efficiency and making native image generation even more convenient. - [Turning JavaFX apps into native images](https://bell-sw.com/announcements/2022/08/24/turning-javafx-apps-into-native-images/): In our recent guide to JavaFX, we summarized the key features of this platform and compared it to the most prominent competitors. If you are still wondering whether JavaFX is worth learning, refer to the guide. For those of you who have already mastered the software, we suggest going a step further and integrate it with native image technology. So let’s get our hands dirty and turn a JavaFX application into a native executable using Liberica Native Image Kit! - [Avoiding side effects of Java containerization](https://bell-sw.com/announcements/2022/09/01/avoiding-side-effects-of-containerization/): Docker, Kubernetes, and other technologies for containerized applications are the must of modern development, especially in the case of microservices. But containerization is an intricate science, and even seasoned developers can make mistakes when working with containers. In this article, you will find out how to avoid these pitfalls and solve the issues you might have already encountered. - [Garbage Collection in Java](https://bell-sw.com/announcements/2022/09/07/garbage-collection-in-java/): Our applications produce a lot of waste while in operation. Diligent Java garbage collectors remove the waste automatically, so we don’t have to bother with manual memory cleaning. But when a collector cannot handle their job, we immediately see that in the form of performance degradation. For instance, improper garbage collection settings may lead to noticeable pauses in your application’s work or increased memory usage. - [JDK 8 Maintenance Release 4: Important changes](https://bell-sw.com/announcements/2022/09/09/jdk-8-maintenance-release-4-important-changes/): Java SE 8 is the most reliable and stable JDK version still used by most developers. Regular CPU updates keep it safe and free of bugs, but this Maintenance Release 4 (MR4) due in October 2022 will bring some critical changes both to OpenJDK code and Java SE specification. - [How to create a single-node Kubernetes cluster](https://bell-sw.com/announcements/2022/09/14/how-to-create-a-single-node-kubernetes-cluster/): Great things have small beginnings — this couldn’t be more true when speaking of Kubernetes. Developers who have never worked with Kubernetes perceive it as a mighty beast doing wonders with container orchestration but too difficult to tame. Sooner or later, they will have to master this technology as it is becoming the standard of enterprise container management. - [Liberica JDK 19 is released](https://bell-sw.com/announcements/2022/09/21/liberica-jdk-19-is-released/): We are happy to announce the general availability of Liberica JDK 19. As it is the major Java version, it contains numerous fixes and enhancements: - [JEP 429: Extent-Local Variables (Incubator)](https://bell-sw.com/blog/jep-429-extent-local-variables-incubator/): The nearest JDK 19 release is associated with a major event in the Java world — the introduction of virtual threads. It means that Java will get its own lightweight concurrency model, just like other modern programming languages. But there is still a lot of work to enhance and strengthen this feature. JEP 429: Extent-Local Variable targeted for Java 20 as an Incubator API is part of this effort. - [BellSoft introduces Alpaquita Linux](https://bell-sw.com/blog/bellsoft-introduces-alpaquita-linux/): The best OS for containerized Java applications - [Docker Hub OpenJDK images are officially deprecated](https://bell-sw.com/blog/docker-hub-openjdk-images-are-officially-deprecated/): If you are using the official Docker Hub images of OpenJDK (open source implementation of the Java SE platform), your containers won’t receive any updates for the runtime environment anymore. - [Introducing Alpaquita Cloud Native Platform for Java Applications!](https://bell-sw.com/blog/bellsoft-makes-a-breakthrough-in-the-world-of-java-with-alpaquita-cloud-native-platform/): Do you want to minimize expenses and increase profit at the same time? We have great news: we introduced Alpaquita Linux just now, an OS fine-tuned for Java applications, and it is time to present the Alpaquita Cloud Native Plaform — a perfect end-to-end solution for container deployment and TCO reduction! - [Alpaquita Linux performance — the race is on!](https://bell-sw.com/blog/alpaquita-linux-performance-the-race-is-on/): BellSoft recently introduced a Linux distribution tailor-made for cloud-native Java applications, Alpaquita Linux. Coming from a family of musl-based distros, Alpaquita boasts an impressive and unmatched advantage of having two standard C library implementations: optimized musl (musl perf) and glibc. Libc is a core OS component that provides the most widely used functions and serves as a bridge between the kernel and user programs. musl has a cleaner codebase than glibc, but the latter is more efficient in specific cases. We improved musl to eliminate existing performance issues and made glibc-based distro available, especially for companies that want to take advantage of the offering but are unwilling to migrate. In addition, Alpaquita Linux is - [Liberica 8u352, 11.0.17, 17.0.5, and 19.0.1 builds are generally available](https://bell-sw.com/blog/liberica-8u352-11-0-17-17-0-5-and-19-0-1-builds-are-generally-available/): We are happy to announce the general availability of a Critical Patch Update (CPU) of Liberica JDK versions 8u351, 11.0.16.1, and 17.0.4.1. CPU releases include patches for Common Vulnerabilities and Exposures (CVE). In addition, we release PSU versions 8u352, 11.0.17, 17.0.5, and 19.0.1 with non-critical fixes and general improvements. - [Liberica Native Image Kit 22.3.0 and 21.3.4 builds are released](https://bell-sw.com/blog/liberica-native-image-kit-22-3-0-and-21-3-4-builds-are-released/): We are happy to announce the general availability of Liberica Native Image Kit (NIK) versions 22.3.0 and 21.3.4 as part of Critical Patch Update (CPU) release cycle. The builds contain several security fixes and enhancements. - [Eight Java features you should start using now!](https://bell-sw.com/blog/eight-java-features-you-should-start-using-now/): The newest Java release includes a bunch of new and exciting features such as virtual threads or structured concurrency. But even if you are using an older JDK version, Java still has some aces up its sleeve! This article will guide you through useful Java features that make developer’s life easier and apps more performant. - [CVE-2022-42889: a critical vulnerability in Apache Commons Text library](https://bell-sw.com/blog/cve-2022-42889-a-critical-vulnerability-in-apache-commons-text-library/): CVE-2022-42889, also known as “Text4Shell”, is a public vulnerability found in the Apache Commons Text library (commons-text-1.9.jar) versions 1.5 through 1.9 and included into the Apache dev list on October 13, 2022. - [Alpaquita Linux features explained](https://bell-sw.com/blog/alpaquita-linux-features-explained/): Alpaquita Linux won the performance race beating the strong opposition of popular Linux distributions for Cloud and Server. What makes Alpaquita so fast and adaptive to various performance challenges? - [Java microcontainers with MicroProfile, jlink, and Liberica JDK](https://bell-sw.com/blog/creating-java-microcontainers-with-microprofile-jlink-and-liberica-jdk/): With 81% of companies having a multi-cloud strategy planned or in the works, and 67% of corporate infrastructure being cloud-based, cloud computing has become a new norm. But everything comes at a price, and cloud resources are no exception. Despite minuscule prices for machines and cloud capacities, cloud bills can be fifty pages long. Why? One of the main reasons is heavy underperforming containers. They devour time, memory, and company’s money. The solution is to minimize the size of containers and at the same time optimize the performance. In this article, we will learn how to do that by building Java microservices with Liberica JDK and MicroProfile and creating microcontainers with jlink. Prepare your microscope, we are talking about tiny numbers here! - [Alpaquita vs Alpine: a head-to-head comparison](https://bell-sw.com/blog/alpaquita-vs-alpine-a-head-to-head-comparison/): You need a lightweight Linux distribution if you want to drastically reduce the size of your containers. You might have already done your research and narrowed the choice down to Alpine and Alpaquita Linux. Both are incredibly small, performant, and secure. But there are certain differences that may influence your decision. Find a clear and concise comparison of both Linux distributions below. - [Critical vulnerabilities in OpenSSL 3.0](https://bell-sw.com/blog/critical-vulnerabilities-in-openssl-3-0/): The OpenSSL Project released a Security Advisory on November 1, 2022, concerning two critical vulnerabilities discovered in the OpenSSL library versions 3.0.0 to 3.0.6. OpenJDK distributions, including Liberica JDK, use their own implementation of TLS and therefore are not affected. But OpenSSL is a very popular library, and is very likely implemented in the software you are using in your project. So read on to find more about the risks and possible solutions. - [Java microservices communication with gRPC and Liberica JDK](https://bell-sw.com/blog/highly-performant-java-microservices-communication-with-grpc-and-liberica-jdk/): In modern cloud-native software development, microservices are arguably the most widely used architectural pattern. To learn more about it, read the previous article Microservices 101: Understanding the architecture. If you want to dive into the microservice architecture design patterns, you can read my article Microservice Architecture and its 10 Most Important Design Patterns. - [Deploy application replicas in local Kubernetes clusters](https://bell-sw.com/blog/how-to-deploy-application-replicas-in-local-kubernetes-clusters/): We continue our series on optimizing Java applications on Kubernetes. We learned how to create a local single-node Kubernetes cluster in the first part. This time, we will look into deploying multiple application replicas in it. This deployment strategy is helpful if you need to study pod sizing and application scalability, considering the JVM flags and resource limits. - [BellSoft’s Docker Hub images overview](https://bell-sw.com/blog/bellsoft-s-docker-hub-images-overview/): BellSoft provides a variety of ways to install its products. You can build your own image using any Linux distro and our binaries or package repositories. Alternatively, take advantage of our OCI container images by visiting BellSoft’s profile on Docker Hub . - [A guide to GraalVM — a next-generation JVM](https://bell-sw.com/blog/a-guide-to-graalvm-a-next-generation-jvm/): The global IT industry is well into the Cloud Age, and while companies eagerly adopt cloud migration strategies, the demand for a versatile, highly performant runtime increases. - [Why Java is the right choice for agile software development](https://bell-sw.com/blog/why-java-is-the-right-choice-for-agile-software-development/): Agility — the ability to respond to changes rapidly and adapt to shifting market trends — is the only way for an enterprise to stay successful in a turbulent world. As far as the IT industry is concerned, agile software development means providing value to users in small increments rather than large releases while continuously evaluating feedback and requirements. It allows the team to introduce changes and generate value in market dynamism quickly. - [How to reduce the size of Docker container images](https://bell-sw.com/blog/how-to-reduce-the-size-of-docker-container-images/): Docker images are often filled with software components your application doesn’t need to run. As such, they slow down the development process and take too much space in the cloud that you have to pay for. - [Six articles to read over the long weekend](https://bell-sw.com/blog/six-articles-to-read-over-the-long-weekend/): Here are our best articles you can enjoy during the holidays if you miss your work as much as we do. Or maybe just read them after the long weekend, which is totally fine. Enjoy! - [BellSoft’s annual results 2022](https://bell-sw.com/blog/bellsoft-s-annual-results-2022/): 2022 was a turbulent year, but it’s over, so people all over the world are taking a break and contemplating what they managed to accomplish. For us at BellSoft, this was a year of growth, testing new waters, and, as always, trying to do the things we do better. Please allow us to share some of the victories we were able to win: - [Liberica JDK 8u362, 11.0.18, 17.0.6, and 19.0.2 released](https://bell-sw.com/blog/liberica-8u362-11-0-18-17-0-6-and-19-0-2-builds-are-generally-available/): We are happy to announce the general availability of a Critical Patch Update (CPU) of Liberica JDK versions 8u361, 11.0.17.0.1, and 17.0.5.0.1. CPU releases include patches for Common Vulnerabilities and Exposures (CVE). In addition, we release PSU versions 8u362, 11.0.18, 17.0.6, and 19.0.2 with non-critical fixes and general improvements. - [Spring Boot with GraalVM Native Image](https://bell-sw.com/blog/spring-boot-with-graalvm-native-image-performance-compatibility-migration/): Spring Boot 3.0.0-M5 was released in September. It includes numerous essential improvements, including the baked-in support for GraalVM Native Image. Although Native Image technology is gaining popularity, many developers are cautious about using it with their Spring Boot applications. In this article, we look into what needs to be configured and how to avoid migration issues with native images. - [Liberica Native Image Kit 22.3.1 builds are released](https://bell-sw.com/blog/liberica-native-image-kit-22-3-1-builds-are-released/): We are happy to announce the general availability of Liberica Native Image Kit (NIK) version 22.3.1 as part of Critical Patch Update (CPU) release cycle. The builds contain several security fixes and enhancements. - [Distroless containers for security and size?](https://bell-sw.com/blog/distroless-containers-for-security-and-size/): Distroless container images are becoming increasingly popular in cloud-native computing because they make it possible to create both secure and lightweight production container images. Two key benefits of distroless are reduced disc space usage in the clusters and minimized attack surface. But are they truly the optimal solution for your application? Let’s explore. - [Static images with Liberica Native Image Kit](https://bell-sw.com/blog/static-images-with-liberica-native-image-kit/): Java is not that slow and memory devouring as it used to be 20 years ago, but there’s still room for improvement. If you are looking for ways to accelerate your Java apps and reduce the size of container images, GraalVM is at your service! - [How to build Linux containers with Docker](https://bell-sw.com/blog/how-to-use-linux-containers/): A containerization tutorial based on Alpaquita Stream - [Java 20 — new features and improvements](https://bell-sw.com/blog/java-20-new-features-and-improvements/): In case you are looking forward to the next LTS Java release and forgot about minor JDK versions — JDK 20 reminds of its existence! It has entered the Rampdown Phase Two, and the feature set has been frozen. Let’s summarize the JEPs targeted for JDK 20 to brush up on where Java is going. - [Top-6 frameworks for Java microservices in 2023](https://bell-sw.com/blog/top-6-frameworks-for-java-microservices-in-2023/): Cloud-native microservices are a new norm, so if you are starting an enterprise project or looking to conquer new career heights, you need an ultimate toolkit to build resilient, highly-performant Java services tailored to the Cloud. - [Master Spring Boot 3 with GraalVM Native Image](https://bell-sw.com/blog/master-spring-boot-3-with-graalvm-native-image/): Spring Boot 3 is riding the wave in the Java world: a few months have passed since the release, and the community has already started migrating to the new version. The usage of parent pom 3.0.2 is approaching 500 on Maven Central! - [How to dockerize a Spring Boot app with the smallest base image](https://bell-sw.com/blog/how-to-dockerize-a-spring-boot-app-with-the-smallest-base-image/): In one of our previous articles, we discussed buildpacks and how they accelerate development. In this article, we will show two approaches to dockerizing a Spring Boot application: one uses a Dockerfile, and another leverages a buildpack. - [How to containerize native images](https://bell-sw.com/blog/how-to-containerize-native-images/): Native Image technology is gaining traction among developers whose primary goal is to accelerate startup time of applications. In this article, we will learn how to containerize native images for further deployment in the Cloud. We will use Liberica Native Image Kit (NIK) as a native-image compiler and Alpaquita Stream as a base image. - [How to use Alpaquita Linux images in AWS](https://bell-sw.com/blog/how-to-use-alpaquita-linux-images-in-aws/): We are happy to announce that Alpaquita Linux images are now available in AWS Cloud! Alpaquita Linux is an Alpine-based distribution with two libc options (improved musl and glibc) and several performance and security optimizations. Alpaquita cloud images will enable developers to build microcontainers and significantly reduce cloud costs. - [Liberica JDK 20 is released](https://bell-sw.com/blog/liberica-jdk-20-is-released/): We are happy to announce that Liberica JDK 20 builds are generally available! The major Java release contains numerous fixes and enhancements: - [How to choose Liberica JDK flavor](https://bell-sw.com/blog/how-to-choose-liberica-jdk-flavor/): Liberica JDK is compatible with the broadest range of system configurations on the market. In addition, we provide three different flavors: Standard, Full, and Lite, as well as JRE and JDK builds so that you can choose a perfect configuration for your project. But what is the difference between all these packages? Read on to find out! - [How to deal with Alpine DNS issues](https://bell-sw.com/blog/how-to-deal-with-alpine-dns-issues/): Alpine Linux is a go-to OS for those striving to reduce the size of their containers. It is secure, minimalistic, performant, and free-to-use. What’s there not to like? All is well until one day your Kubernetes clusters start behaving strangely. A closer look at the logs will tell you that the devil is in the DNS, namely in the way your Alpine-based application deals with it. And this devil is hard to chase away. - [How to turn AWT applications into native images](https://bell-sw.com/blog/how-to-turn-awt-applications-into-native-images/): AWT (the Abstract Window Toolkit) is a Java GUI widget toolkit. Although Swing largely superseded AWT, the latter is still used alone or in combination with Swing components. This tutorial will demonstrate how to turn AWT programs into native executables using Liberica Native Image Kit (NIK). - [Liberica JDK 8u372, 11.0.19, 17.0.7, and 20.0.1 builds are generally available](https://bell-sw.com/blog/liberica-jdk-8u372-11-0-19-17-0-7-and-20-0-1-builds-are-generally-available/): We are happy to announce the general availability of a Critical Patch Update (CPU) of Liberica JDK versions 8u371, 11.0.18.0.1, and 17.0.6.0.1. CPU releases include patches for Common Vulnerabilities and Exposures (CVE). In addition, we release PSU versions 8u372, 11.0.19, 17.0.7, and 20.0.1 with non-critical fixes and general improvements. - [Liberica Native Image Kit 22.3.2 builds are released](https://bell-sw.com/blog/liberica-native-image-kit-22-3-2-builds-are-released/): We are happy to announce the general availability of Liberica Native Image Kit (NIK) version 22.3.2 for JDK 11.0.19 and 17.0.7 as part of Critical Patch Update (CPU) release cycle. The builds contain several security and bug fixes. - [Guide to JVM memory configuration options](https://bell-sw.com/blog/guide-to-jvm-memory-configuration-options/): So you have a goal: to reduce the memory footprint of the application. You roll up your sleeves and get straight to business. Unfortunately, there’s no one-size-fits-all answer to the question “How to reduce memory footprint” or enhance any other KPI. There are best practices to follow and common mistakes to avoid, but in reality, everything boils down to meticulous optimizations with due consideration of all variables. To assist you in this arduous task, we prepared a list of the most important JVM flags related to memory management. - [Guide to Linux package management](https://bell-sw.com/blog/guide-to-linux-package-management/): A plain sandwich satisfies immediate hunger, but more sophisticated dishes usually require a lengthy list of ingredients. The same goes for application development on Linux — the more advanced your needs, the more libraries you must utilize. And to think that many of these libraries require additional dependencies… Quite a challenge! - [Avoiding AWS Lambda cold starts](https://bell-sw.com/blog/avoiding-aws-lambda-cold-starts/): The summer is just around the corner, but it's freezing in your Lambdas, and the cold starts are the culprit. - [How to use Alpaquita Linux images in Microsoft Azure](https://bell-sw.com/blog/how-to-use-alpaquita-linux-images-in-microsoft-azure/): Base OS image plays an essential role in optimizing the size of cloud instances, which, in turn, directly impacts the cloud costs. - [Java celebrates 28 years of history](https://bell-sw.com/blog/java-celebrates-28-years-of-history/): The Java programming language celebrates its 28th birthday on May 23, 2023 — a perfect age in human terms: still full of energy and ambition but already backed by experience. Java has been among the top three most popular programming languages for many years, according to the Tiobe index, and it continues gaining traction in every sphere of our lives, be it banking applications, social networks, games, or IoT and embedded systems. - [Best Oracle Java Alternatives in 2026: Comparison of OpenJDK Distributions](https://bell-sw.com/blog/oracle-java-alternatives-comparison-of-openjdk-distributions/): The main alternatives to Oracle Java are vendor-supported OpenJDK distributions: Liberica JDK by BellSoft, Azul Zulu, Eclipse Temurin, Amazon Corretto, and Red Hat OpenJDK. Unlike bare OpenJDK, these distributions offer TCK-verified builds, predictable security update cadences, and commercial support options. - [Application cost reduction with Arm servers](https://bell-sw.com/blog/application-cost-reduction-with-arm-servers/): This article covers the topic that may seem unusual, namely the Arm servers. For most developers, Arm is a dark horse in the world of server-class hardware dominated by Intel and AMD. But in truth, Arm servers have been around for a decade and are becoming increasingly popular thanks to their improved performance coupled with low maintenance costs. Let’s look into their capabilities and see how your applications can benefit from migrating to this architecture. - [New version of Liberica NIK 23.0 with ParallelGC is available](https://bell-sw.com/blog/new-version-of-liberica-nik-23-0-with-parallelgc-is-available/): We are happy to announce the general availability of Liberica Native Image Kit (NIK) version 23.0 with several enhancements and new features. - [GPLv2 + Classpath Exception: the intricacies of open-source licensing](https://bell-sw.com/blog/gplv2-classpath-exception-the-intricacies-of-open-source-licensing/): According to research by The University of Law, 68% of people either don’t read or don’t understand the contracts they sign. We dare assume that the situation is even worse in the open-source software development world. Developers pull dependencies or projects from public repositories, such as Maven, Docker Hub, and GitHub, without reading the licenses. This negligence may lead to grave legal consequences for them or the enterprises they work for. - [Spring container size: Why it is important](https://bell-sw.com/blog/spring-container-size-why-it-is-important/): Why does container size matter? For some developers, the question sounds similar to “Why don’t cows fly?” tempting to answer “just because” without reflecting much on why it is crucial. But many programmers, especially backenders, don’t even consider the issues hidden underneath heavyweight containers. Their logic: “It’s no concern of mine!” - [Migration from Java 8 to Java 17](https://bell-sw.com/blog/migration-from-java-8-to-java-17/): Life after Java 8 is in full swing, with fast microcontainers, cloud-native deployment, and a more performant JVM. And although BellSoft supports JDK 8 until March 2031, there will come a day when you have to let Java 8 go. Besides, with a new 2-year LTS-release cadence, Java gets new features, and APIs are updated more often, making the migration process more challenging regarding compatibility. - [Migration from Java 11 to Java 17](https://bell-sw.com/blog/migration-from-java-11-to-java-17/): The Java platform is getting more powerful with every release. Migration from Java 11 to Java 17 will bring significant improvements in performance, security, and cloud-native capabilities of your Java-based workloads. With modern garbage collectors and new and updated APIs increasing security and facilitating code writing and maintenance, Java 17 is an essential upgrade for projects looking to stay competitive. - [Liberica JDK 8u382, 11.0.20, 17.0.8, 20.0.2 builds are generally available](https://bell-sw.com/blog/liberica-jdk-8u382-11-0-20-17-0-8-20-0-2-builds-are-generally-available/): We are happy to announce the general availability of a Critical Patch Update (CPU) of Liberica JDK versions 8u381, 11.0.19.0.1, 17.0.7.0.1. CPU releases include patches for Common Vulnerabilities and Exposures (CVE). In addition, we release PSU versions 8u382, 11.0.20, 17.0.8, 20.0.2 with non-critical fixes and general improvements. - [LTS JDK 21 features](https://bell-sw.com/blog/lts-jdk-21-features/): A new LTS version has always been the big news in the Java world, and JDK 21 is no exception. It was moved to Rampdown Phase One on June 16 meaning that the feature set has been frozen. An extensive set of 15 JEPs includes new, enhanced, and finalized functionality. Let’s take a dive into the upcoming LTS release — it might be just the version you will stick to for the years ahead! - [Red Hat limits access to RHEL source code](https://bell-sw.com/blog/red-hat-limits-access-to-rhel-source-code/): June 2023 was marked by big news in enterprise software development: the source code of Red Hat Enterprise Linux (RHEL) ceased to be freely available. Red Hat announced that - [Liberica Native Image Kit 23.0.1 builds are released](https://bell-sw.com/blog/liberica-native-image-kit-23-0-1-builds-are-released/): We are happy to announce the general availability of Liberica Native Image Kit (NIK) version 23.0.1 for JDK 17.0.8 and 20.0.2 as part of Critical Patch Update (CPU) release cycle. The builds contain several security and bug fixes. - [BellSoft brings the performance of JVM 17 to JDK 11 with Liberica JDK Performance Edition](https://bell-sw.com/blog/bellsoft-brings-the-performance-of-jvm-17-to-jdk-11-with-liberica-jdk-performance-edition/): We are happy to announce the release of Liberica JDK Performance Edition, which brings the performance of JVM 17 to enterprise workloads running on JDK 11! With Liberica JDK Performance Edition, there’s no need to worry about migration to newer JDK versions: the companies will notice the instant performance boost up to 10–15% with little to no code adjustments. - [What is a software bill of materials (SBOM)](https://bell-sw.com/blog/what-is-a-software-bill-of-materials-sbom/): According to Gartner’s prediction, 45% of enterprises worldwide will have faced an attack on their software supply chain by 2025. In most cases, hackers target unpatched vulnerabilities, which can be plentiful, considering that an ordinary enterprise project usually uses hundreds of dependencies. - [U.S. and EU regulations are demanding a software bill of materials (SBOM)](https://bell-sw.com/blog/u-s-and-eu-regulations-are-demanding-a-software-bill-of-materials-sbom/): A software bill of materials is an indispensable mechanism for securing a software supply chain, as we found out in our previous article. So much so that governments explicitly demand the SBOM adoption via legislative acts that sprouted across the globe over the past few years in answer to growing cybersecurity threats. - [BellSoft releases Alpaquita Containers for Spring Boot applications](https://bell-sw.com/blog/bellsoft-releases-alpaquita-containers-for-spring-boot-applications/): Small containers with Spring Boot applications save cloud resources and facilitate developers’ life as we found out in our previous article. Keeping that in mind, BellSoft engineers continue working on technologies that make Java containers faster, smaller, and safer. - [BellSoft releases Alpaquita Containers for Spring Boot](https://bell-sw.com/news/bellsoft-releases-alpaquita-containers-for-spring-boot/): SAN JOSE, Calif., Aug. 22, 2023 /PRNewswire/ -- BellSoft continues to improve the microservice architecture of Java applications and transform Java to cloud-native. We are glad to introduce Alpaquita containers for the Spring Boot developers' community. The software is now generally available for download. - [Repetitive mistakes in Java code](https://bell-sw.com/blog/repetitive-mistakes-in-java-code/): It’s no secret that programmers make mistakes in the code: after all, to err is human. But errors cost time and money. If an application works incorrectly due to bugs, it takes time to reproduce the problem, nail down the mistake, fix it, and redeploy the application. The amount of support requests increases, and customer satisfaction goes down. The developers feel annoyed and depressed when they see that the program doesn’t work as expected. So avoiding mistakes or discovering them as early as possible is natural. - [BellSoft sponsors SpringOne conference at VMware Explore 2023](https://bell-sw.com/blog/bellsoft-sponsors-springone-conference-at-vmware-explore-2023/): BellSoft announced a collaboration with VMware in 2020, a start of a longer journey to ease and improve the OpenJDK development practice, adapting toward the community’s needs. BellSoft fortifies its OpenJDK product with qualified technical support to ensure the security of your application. - [Invalid CEN header fixed in the latest JDK 11 and 17 updates](https://bell-sw.com/blog/invalid-cen-header-fixed-in-the-latest-jdk-11-and-17-updates/): JDK-8313765: Invalid CEN header (invalid zip64 extra data field size) fixes a major regression in JDK versions 17.0.8 and 11.0.20. The patch is already available, the summary of the issue is provided below. - [CI/CD tools for Java developers](https://bell-sw.com/blog/ci-cd-tools-for-java-developers/): CI/CD is the combination of practices for continuous integration / continuous delivery (sometimes also continuous deployment) aimed at implementing the release early, release often strategy without causing the integration hell. Incorporation of CI/CD helps to accelerate time-to-market and facilitate the life of developers, but before everything runs smoothly, we need to - [An overview of SLSA for software supply chain security](https://bell-sw.com/blog/an-overview-of-slsa-for-software-supply-chain-security/): The surge of hacker attacks on software supply chains gave impetus to increasing the transparency of the IT infrastructure and accountability of software vendors. One instrument for this purpose is a software bill of materials (SBOM), which provides essential data on all libraries used to develop a software product. But an SBOM is a collection of data, which should ideally be integrated into higher-level security processes represented by the Supply-chain Levels for Software Artifacts (SLSA) framework. - [Top-9 cybersecurity threats in 2023](https://bell-sw.com/blog/top-9-cybersecurity-threats-in-2023/): Global digitalization increases the surface for cyberattacks that become more relentless, sophisticated, and capable of bringing down hundreds of enterprises and harming millions of people at once. - [Liberica JDK 21 LTS release: a lasting foundation for your Java application](https://bell-sw.com/blog/liberica-jdk-21-lts-release-a-lasting-foundation-for-your-java-application/): We are happy to announce the general availability of Liberica JDK 21, the new LTS release that will enjoy BellSoft’s extended support until March 2032! Download the builds now or read on to discover why migration to Liberica JDK could be the turning point for your enterprise Java development. - [Devoxx Belgium 2023: Your Java-focused guide from BellSoft](https://bell-sw.com/blog/devoxx-belgium-2023-your-java-focused-guide-from-bellsoft/): Devoxx Belgium, organized by the Belgian Java User Group (BeJUG), is considered the largest vendor-independent Java conference in the world. Started in 2001 as a Java developer conference series, it now encompasses many exciting topics around Java and beyond and regularly gathers over three thousand IT enthusiasts and around two hundred renowned speakers from all over the world. - [Java Community Process (JCP): Shaping the future of Java](https://bell-sw.com/blog/java-community-process-jcp-shaping-the-future-of-java/): How Java adapts to present circumstances and reacts to developer and business needs is almost uncanny and makes you perceive it as an intelligent being. - [Liberica Native Image Kit 23.1.0 for JDK 21 is out](https://bell-sw.com/blog/liberica-native-image-kit-23-1-0-for-jdk-21-is-out/): We are happy to announce the general availability of Liberica Native Image Kit (NIK) version 23.1.0 for JDK 21. The release contains numerous fixes and enhancements. - [7 tips to optimize Java performance on Kubernetes](https://bell-sw.com/blog/7-tips-to-optimize-java-performance-on-kubernetes/): Java performance optimization is a formidable task, and Kubernetes, a complex tool with its intricacies and caveats, only complicates the matter. Although modern containerization technologies and Kubernetes offer optimal default settings for the effortless entry into the cloud, you can’t take advantage of the defaults for too long, or else your instances will spin completely out of control. - [CVE-2023-4911 (Looney Tunables): a critical vulnerability in glibc](https://bell-sw.com/blog/cve-2023-4911-looney-tunables-a-critical-vulnerability-in-glibc/): A buffer overflow was discovered in the dynamic loader (ld.so) of GNU C Library (glibc) while processing the GLIBC_TUNABLES environment variable. Find out more about the vulnerability and how to mitigate the risk of exploits. - [How to reduce Java application startup time](https://bell-sw.com/blog/how-to-reduce-java-application-startup-time/): Waiting five seconds for an application to load is bearable, but the irritation grows every time you repeat the process. Imagine loading an app 100+ times a day. Now, imagine your bank account is charged for every second of your expectation. - [Liberica JDK 8u392, 11.0.21, 17.0.9, and 21.0.1 builds are generally available](https://bell-sw.com/blog/liberica-jdk-8u392-11-0-21-17-0-9-and-21-0-1-builds-are-generally-available/): We are happy to announce the general availability of a Critical Patch Update (CPU) of Liberica JDK versions 6u401, 7u401, 8u391, 11.0.20.1.1, 17.0.8.1.1, and 21.0.0.0.1. CPU releases include patches for Common Vulnerabilities and Exposures (CVE). In addition, we release PSU versions 8u392, 11.0.21, 17.0.9, and 21.0.1 with non-critical fixes and general improvements. - [Meet BellSoft at KubeCon 2023](https://bell-sw.com/blog/meet-bellsoft-at-kubecon-2023/): BellSoft is excited to be a silver sponsor of KubeCon + CloudNativeCon North America 2023, scheduled for 6–9 November, a flagship conference for cloud native adopters and technologists organized by the Cloud Native Computing Foundation (CNCF). - [Migration to Spring Boot 3](https://bell-sw.com/blog/migration-to-spring-boot-3/): The migration to Spring Boot 3 boasting numerous enhancements, including baked-in support for GraalVM Native Image, is in full swing! If you are just embarking on this journey, below is a guide how to painlessly upgrade the version of your favorite framework. - [Liberica Native Image Kit 22.3.4, 23.0.2, 23.1.1 builds are released](https://bell-sw.com/blog/liberica-native-image-kit-22-3-4-23-0-2-23-1-1-builds-are-released/): We are happy to announce the general availability of Liberica Native Image Kit (NIK) versions 22.3.4, 23.0.2, 23.1.1 for JDK 11.0.10, 17.0.9, and 21.0.1 as part of Critical Patch Update (CPU) release cycle. The builds contain several security and bug fixes. - [How to deploy Spring Boot application on Kubernetes](https://bell-sw.com/blog/how-to-deploy-spring-boot-application-on-kubernetes/): If you want to own the cloud, you have to own Kubernetes, which is the most popular container orchestration system that dramatically facilitates the management of cloud-native applications. This article will guide you through containerizing and deploying a Spring Boot app on the Kubernetes cluster. - [BellSoft releases Liberica JDK LTS 17 and 21 with Coordinated Restore at Checkpoint (CRaC) for fast startup](https://bell-sw.com/blog/bellsoft-releases-liberica-jdk-lts-17-and-21-with-coordinated-restore-at-checkpoint-crac-for-fast-startup/): We are happy to announce the feature release of Liberica JDK LTS versions 17 and 21 with Coordinated Restore at Checkpoint (CRaC) support, enabling the developers to make running application snapshots and reduce the startup and warmup time of Java application to mere milliseconds! - [How to use CRaC with Java applications](https://bell-sw.com/blog/how-to-use-crac-with-java-applications/): Liberica JDK with Coordinated Restore at Checkpoint (CRaC) support will enable the developers to bring their applications to a new level, with startup and warmup times reduced to mere milliseconds! But like with any new technology, you need to familiarize yourself with CRaC before integrating it into enterprise development. - [BellSoft releases dedicated builds of Liberica JDK 17 and 21 with CRaC](https://bell-sw.com/news/bellsoft-releases-dedicated-builds-of-liberica-jdk-17-and-21-with-crac/): SAN JOSE, Calif., Nov. 6, 2023 /PRNewswire/ -- Slow Java application startup is still an area for improvement for the OpenJDK that is of interest to the community. Coordinated Restore at Checkpoint (CRaC) is an OpenJDK project aimed at reducing startup and warmup times and providing immediate high performance for Java applications. - [Documenting REST API with Swagger in Spring Boot 3](https://bell-sw.com/blog/documenting-rest-api-with-swagger-in-spring-boot-3/): API documentation is an indispensable part of developing web applications. Luckily, there are solutions that make meticulous manual documentation crafting a thing of the past. - [Spring Boot monitoring in Kubernetes with Prometheus and Grafana](https://bell-sw.com/blog/spring-boot-monitoring-in-kubernetes-with-prometheus-and-grafana/): The application is successfully deployed to Kubernetes, and the instances are running normally — the job is done, right? Yes and no. A lot is happening in your clusters, and monitoring their health is essential to solve potential issues as soon as they arise so as not to disturb user experience and tailor the KPIs to the business needs. In addition, we need to understand how an application behaves and how much memory it actually needs to select the appropriate instance size. - [New Spring Boot 3.2 version goes GA](https://bell-sw.com/blog/new-spring-boot-3-2-version-goes-ga/): Today is an exciting day for all Spring Boot developers as Spring Boot 3.2 packed with new and enhanced features was released! The highlights of this release include but are not limited to - [How to Migrate from Oracle JDK to OpenJDK](https://bell-sw.com/blog/how-to-migrate-from-oracle-jdk-to-openjdk/): If you have been a long-term Oracle customer, migration from Oracle Java to an open-source OpenJDK distribution (for some, as good as diving into the unknown) seems to be a tall order. However, the key is to break the task down into manageable steps. - [An overview of JDK 22 features](https://bell-sw.com/blog/an-overview-of-jdk-22-features/): JDK 22 entered the Rampdown Phase Two on January 18, an excellent occasion to peek at the JEPs awaiting us in this feature release! - [A guide to using virtual threads with Spring Boot](https://bell-sw.com/blog/a-guide-to-using-virtual-threads-with-spring-boot/): We’ve been looking forward to it for a very long time — virtual threads were finalized in JDK 21! The feature is now complete and production-ready. We discussed the functionality in more detail in a dedicated article, and now, let’s see how we can use virtual threads with new Spring Boot 3.2! - [BellSoft’s Achievements in 2023](https://bell-sw.com/blog/bellsoft-s-achievements-in-2023/): As we approach the end of 2023, it’s time to pause and reflect on the incredible past twelve months we had as a team at BellSoft. This year was filled with overcoming challenges, seizing opportunities, taking part in fruitful engagements, and participating in unforgettable events. - [Talking Java across the globe: backstage happenings and adventures](https://bell-sw.com/blog/talking-java-across-the-globe-backstage-happenings-and-adventures/): 2023 was charged with conferences, meetings, and events dedicated to Java, some of which took place offline for the first time since the COVID-19 pandemic. And trust me, there was a lot to discuss, with some of the year’s highlights being - [TOP-11 articles to read to ride the crest of Java development](https://bell-sw.com/blog/top-11-articles-to-read-to-ride-the-crest-of-java-development/): A new year doesn’t necessarily mean a new beginning, especially in IT, as the trends set in 2023 are bound to gain momentum. So we prepared a list of the most popular publications in our blog, which will help you to navigate through the cutting-edge tools and practices and stay ahead of the game. - [Building cloud-native microservices with Kubernetes](https://bell-sw.com/blog/building-cloud-native-microservices-with-kubernetes/): A modern cloud offers immense opportunities to businesses in terms of growth, innovation acceleration, and cost optimization. But a resilient, flexible, easily scalable cloud-native application doesn’t fall out of the sky. We have to build it ourselves. This article will guide you through the best practices of cloud-native development. - [Liberica JDK 8u402, 11.0.22, 17.0.10, 21.0.2 builds are generally available](https://bell-sw.com/blog/liberica-jdk-8u402-11-0-22-17-0-10-21-0-2-builds-are-generally-available/): We are happy to announce the general availability of a Critical Patch Update (CPU) of Liberica JDK versions 8u401, 11.0.21.0.1, 17.0.9.0.1, and 21.0.1.0.1. CPU releases are stabilized builds that include patches for Common Vulnerabilities and Exposures (CVE) described in the relevant CVE entries in BellSoft’s Security Advisory. - [Liberica Native Image Kit 23.0.3 and 23.1.2 builds are released](https://bell-sw.com/blog/liberica-native-image-kit-23-0-3-and-23-1-2-builds-are-released/): We are happy to announce the general availability of Liberica Native Image Kit (NIK) versions 23.0.3 for JDK 17 and 23.1.2 for JDK 21 as part of Critical Patch Update (CPU) release cycle. The builds contain several security and bug fixes. - [A novel GraalVM optimization for faster native images startup](https://bell-sw.com/blog/a-novel-graalvm-optimization-for-faster-native-images-startup/): Native images generated with GraalVM native-image compiler already start up in less than a second. But the BellSoft engineers added a new optimization to SubstrateVM, which enables native images of multithreaded applications to start up even faster! - [BellSoft releases Liberica JDK 21 for RISC-V with support](https://bell-sw.com/blog/bellsoft-releases-liberica-jdk-21-for-risc-v-with-support/): RISC-V, a novel processor architecture, is steadily gaining popularity. Thanks to its high performance, flexibility, and open-source nature, it is a viable alternative to Intel and ARM, used in more and more industries every year, from IoT to smartphones, automotive, HPC, and many others. The total market for RISC-V SoCs is forecasted to reach $92.7B by 2030, representing a 47% annual growth rate. - [BellSoft releases Liberica JDK 21 for RISC-V with support](https://bell-sw.com/news/bellsoft-releases-liberica-jdk-21-for-risc-v-with-support/): SAN JOSE, Calif., Jan. 30, 2024 /PRNewswire/ -- RISC-V is a free, open RISC instruction set architecture (ISA) that is currently gaining popularity due to its high performance, flexibility, and cost-efficiency. - [What is Quarkus](https://bell-sw.com/blog/what-is-quarkus/): There are multiple Java frameworks for developing Java applications: Spring Boot, Micronaut, MicroProfile, Javalin, etc., each with their own strengths. Quarkus is another Java framework tailored to developing cloud-native Java microservices and promising to optimize memory footprint and the startup time of application. - [How to use a Dockerfile linter](https://bell-sw.com/blog/how-to-use-a-dockerfile-linter/): Developers should follow the best practices of compiling Dockerfiles stated in the official Docker documentation to avoid issues with container images such as: - [How to install Linux on a mac with Apple silicon](https://bell-sw.com/blog/how-to-install-linux-on-a-mac-with-apple-silicon/): Apple steadily transitions its machines to Apple silicon. The performance of these chips is impressive as we discussed in our previous article, and for rare cases of software incompatibility, there’s Rosetta. - [How to use Testcontainers with Spring Boot applications for integration testing](https://bell-sw.com/blog/how-to-use-testcontainers-with-spring-boot-applications-for-integration-testing/): Writing integration tests used to be a real time-devouring monster, especially if your application connects to a variety of external systems and you have to emulate each of them in your testing environment. - [A guide to event streaming with Apache Kafka](https://bell-sw.com/blog/a-guide-to-event-streaming-with-apache-kafka/): Cloud-native development unlocks almost immense application scalability and data processing opportunities. Modern technologies can process vast amounts of various data in real-time. On the other hand, millions of users can interact with a network of services, connected to other services and databases on their end, and receive instant feedback. But the greater the prospects, the stronger the challenges. Companies nowadays can’t do without software that helps to coordinate and manage massive data flows. One of the most common solutions for these purposes is Apache Kafka. - [BellSoft releases Alpaquita Containers with Coordinated Restore at Checkpoint support](https://bell-sw.com/blog/bellsoft-releases-alpaquita-containers-with-coordinated-restore-at-checkpoint-support/): We are happy to announce the release of Alpaquita Containers with Alpaquita Linux, Liberica JDK, and support for the OpenJDK Coordinated Restore at Checkpoint (CRaC) API. - [How to use CRaC with Spring Boot apps in a Docker container](https://bell-sw.com/blog/how-to-use-crac-with-spring-boot-apps-in-a-docker-container/): Alpaquita Containers with Alpaquita Linux, Liberica JDK, and support for the Coordinated Restore at Checkpoint (CRaC) offer the developers the “plug-and-play” experience with the OpenJDK CRaC API. Without the need to adjust the JDK or OS, they can conveniently perform the checkpoint and restore the warmed up state of their containerized Java workloads. - [BellSoft releases Alpaquita Containers with Coordinated Restore at Checkpoint support](https://bell-sw.com/news/bellsoft-releases-alpaquita-containers-with-coordinated-restore-at-checkpoint-support/): SAN JOSE, Calif., March 14, 2024 /PRNewswire/ -- BellSoft, the OpenJDK vendor that delivers the most complete Java experience, is excited to announce the release of Alpaquita containers with Coordinated Restore at Checkpoint (CRaC) support, rounding up your Java journey with an end-to-end CRaC solution. - [Liberica JDK 22 is released](https://bell-sw.com/blog/liberica-jdk-22-is-released/): We are happy to announce the general availability of Liberica JDK 22 builds! The new version is packed with fixes and new and improved functionality: - [Liberica Native Image Kit 24.0.0 build is released](https://bell-sw.com/blog/liberica-native-image-kit-24-0-0-build-is-released/): We are happy to announce the general availability of Liberica Native Image Kit (NIK) version 24.0.0 for JDK 22. The builds contain several new features. - [How to install Apache Kafka on a local machine](https://bell-sw.com/blog/how-to-install-apache-kafka-on-a-local-machine/): Our previous article explained how Apache Kafka provides an efficient and resilient platform for event streaming. - [CVE-2024-3094: a backdoor in XZ Utils](https://bell-sw.com/blog/cve-2024-3094-a-backdoor-in-xz-utils/): On March 29th, 2024, malicious code was discovered in xz-utils, which is a popular open-source library for lossless data compression. This library is used in most Linux distributions. - [GitHub Actions tutorial](https://bell-sw.com/blog/github-actions-tutorial/): GitHub Actions is a popular solution for automating CI/CD. If you are getting started with GitHub Actions, in this article, we will guide you through the core concepts of the platform and provide a step-by-step guide to setting Liberica Native Image Kit with a special Github Action, which will serve as an example of integrating the platform into your every-day life. - [What is CRaC? A guide to cutting Java startup and warmup from minutes to milliseconds](https://bell-sw.com/blog/what-is-crac-a-guide-to-cutting-java-startup-and-warmup-from-minutes-to-milliseconds/): In our previous article, we discussed the issues of Java startup. Java services may need dozens of seconds to reach peak performance, and during this period, they process fewer requests and consume more memory. And the process begins from ground zero every time you start your services! - [Liberica JDK 8u412, 11.0.23, 17.0.11, 21.0.3, 22.0.1 builds are generally available](https://bell-sw.com/blog/liberica-jdk-8u412-11-0-23-17-0-11-21-0-3-22-0-1-builds-are-generally-available/): We are happy to announce the general availability of a Critical Patch Update (CPU) of Liberica JDK versions 8u411, 11.0.22.0.1, 17.0.10.0.1, and 21.0.2.0.1 CPU releases are stabilized builds that include patches for Common Vulnerabilities and Exposures (CVE) described in the relevant CVE entries in BellSoft’s Security Advisory. - [BellSoft levels the performance of JDK 8 up to JVM 17 with Liberica JDK Performance Edition](https://bell-sw.com/blog/bellsoft-levels-the-performance-of-jdk-8-up-to-jvm-17-with-liberica-jdk-performance-edition/): We are happy to announce the release of Liberica JDK Performance Edition 8, which couples JVM 17 and JDK 8 and immediately increases the performance of JDK 8-based projects up to 10% without major code changes! - [BellSoft levels the performance of JDK 8 up to JVM 17 with Liberica JDK Performance Edition](https://bell-sw.com/news/bellsoft-levels-the-performance-of-jdk-8-up-to-jvm-17-with-liberica-jdk-performance-edition/): San Jose, Calif., April 23, 2024 /PRNewswire/ -- JDK 8 is still one of the most popular LTS Java versions. A widespread reason is the high financial and resource input required from companies for an upgrade to a newer LTS release. Meanwhile, the JVM in JDK 8 has lower performance, making your cloud use inefficient and therefore disappointing your customers. - [Liberica Native Image Kit 23.0.4, 23.1.3, and 24.0.1 builds are released](https://bell-sw.com/blog/liberica-native-image-kit-23-0-4-23-1-3-and-24-0-1-builds-are-released/): We are happy to announce the general availability of Liberica Native Image Kit (NIK) versions 23.0.4 for JDK 17, 23.1.3 for JDK 21, and 24.0.1 for JDK 22 as part of Critical Patch Update (CPU) release cycle. The builds contain several security and bug fixes. - [How to create Java container images on a developer machine for other architectures](https://bell-sw.com/blog/how-to-create-java-container-images-on-a-developer-machine-for-other-architectures/): Most software tools are targeted at the CPU architecture (and sometimes, the operating system) of the machine in use. A virtual machine is a viable solution if you want to build container images for an architecture different from the one you use for local development. - [Compilation in Java: JIT vs AOT](https://bell-sw.com/blog/compilation-in-java-jit-vs-aot/): Java applications are compiled just-in-time by default. However,GraalVM Native Image made it possible to compile Java programs ahead-of-time. - [What are zero-day vulnerabilities and how to minimize zero-day attacks](https://bell-sw.com/blog/what-are-zero-day-vulnerabilities-and-how-to-minimize-zero-day-attacks/): 0-day vulnerabilities pose an immense challenge to software developers and enterprise IT teams because how can you fight something you don’t know exists? - [New features in Spring Boot 3.3](https://bell-sw.com/blog/new-features-in-spring-boot-3-3/): Spring Boot 3.3 is generally available! The release includes numerous updates, including several new features. We have decided to do some cherry-picking and take a look at the most significant changes, among which the support for Class Data Sharing (CDS) for faster application startup. - [Updating the Java version](https://bell-sw.com/blog/updating-the-java-version/): Updating Java refers to installing a newer build of the same version you currently use. Updating your Java version is key to keeping the foundation of your application safe and stable. Let’s see what types of updates for your Java runtime are available, which Java versions can be updated for free, and how to update your JDK depending on the platform. - [How to use CDS with Spring Boot applications](https://bell-sw.com/blog/how-to-use-cds-with-spring-boot-applications/): In the previous article, Dmitry described ways to reduce Java application startup time. Here, I offer you to try out one of them, Class Data Sharing (CDS). It provides a good improvement in startup, not as drastic as with CRaC or Native Image, but it doesn’t necessitate code refactoring. And since Spring Boot 3.3 supports CDS, and BellSoft provides binaries and ready container images with Liberica JDK and CDS, starting with this feature couldn’t be easier! - [Microservices vs monoliths: which approach is better for your project?](https://bell-sw.com/blog/microservices-vs-monoliths-which-approach-is-better-for-your-project/): Microservices are still a buzzword despite the fact that they have been around for more than a decade. But curiously, the tables are turning, and microservices are increasingly mentioned in a rather unflattering context. - [What is Spring Modulith? Introduction to modular monoliths](https://bell-sw.com/blog/what-is-spring-modulith-introduction-to-modular-monoliths/): In our previous article, we compared monoliths to microservices and decided that a good intermediate solution would be to build a modular application. It is still a monolith with its advantages and drawbacks, but the code base is a lot more structured and prepared to be divided into microservices if the need arises. - [How to build a modular application with Spring Modulith](https://bell-sw.com/blog/how-to-build-a-modular-application-with-spring-modulith/): In the previous article, we discussed how to prepare for building a modular monolith with Spring Modulith by setting up the right application module structure. We also summarized the key business logic of a demo Spring Modulith application we use in this tutorial series and set up a module verification test. - [Four perspectives on code review inefficiencies](https://bell-sw.com/blog/four-perspectives-on-code-review-inefficiencies/): If we had half-assembled tangible products piling up and overloading our store, we’d be alarmed. If we had staff fighting in the store, we’d be alarmed, too. If students at school were not progressing in their skills, we’d be apprehensive. Yet, whenever I ask people, “Why are you using code reviews?” the answer is usually: - [How to increase the performance of Java applications](https://bell-sw.com/blog/how-to-increase-the-performance-of-java-applications/): The heading of this article could very well be the title of a book or even a book series. So, this blog post aims not to boil the ocean but to equip you with the necessary gear to navigate this ocean safely. - [How to use Project Leyden with Spring Boot](https://bell-sw.com/blog/how-to-use-project-leyden-with-spring-boot/): Project Leyden Early Access builds are already available, so the time for experiments has come! You can follow the instructions in the README.md of the Project’s release notes and run the benchmark provided by the team. But I was also curious to see Leyden in action with Spring Boot. - [An overview of Java 23 features](https://bell-sw.com/blog/an-overview-of-java-23-features/): JDK 23 entered a Rampdown Phase One on June 6, which means that the feature set is frozen. It’s high time we look at them more closely! - [Liberica JDK 8u422, 11.0.24, 17.0.12, 21.0.4, 22.0.2 builds are generally available](https://bell-sw.com/blog/liberica-jdk-8u422-11-0-24-17-0-12-21-0-4-22-0-2-builds-are-generally-available/): We are happy to announce the general availability of a Critical Patch Update (CPU) of Liberica JDK versions 8u421, 11.0.23.0.1, 17.0.11.0.1, and 21.0.3.0.1. CPU releases are stabilized builds that include patches for Common Vulnerabilities and Exposures (CVE) described in the relevant CVE entries in BellSoft’s Security Advisory. - [How to Generate an SBOM for Java: A Comprehensive Guide](https://bell-sw.com/blog/how-to-generate-an-sbom-for-java-a-comprehensive-guide/): According to Gartner’s prediction, 45% of enterprises worldwide will have faced an attack on their software supply chain by 2025. In most cases, hackers target unpatched vulnerabilities, which can be plentiful, considering that an ordinary enterprise project usually uses hundreds of dependencies. - [BellSoft adds AArch64 support to Liberica JDK Performance Edition ](https://bell-sw.com/news/bellsoft-adds-aarch64-support-to-liberica-jdk-performance-edition/): BellSoft, an OpenJDK provider that delivers the most complete Java experience for the cloud, released Liberica JDK Performance Edition for AArch64. Aarch64 support is essential for enterprise clients and developers using ARM instances in the cloud or Macs based on ARM architecture and still working with mature LTS releases. Liberica JDK Performance Edition for AArch64 instantly improves Java 8 & 11 performance and cuts cloud spending. - [Creating a Bot for Documentation Assistance with Spring AI and Unstructured.io](https://bell-sw.com/blog/creating-a-bot-for-documentation-assistance-with-spring-ai-and-unstructured-io/): Spring AI enables the developers to integrate the power of AI into their projects with minimal effort as Spring does most of the magic behind the scenes. - [Liberica Native Image Kit 23.0.5, 23.1.4, and 24.0.2 builds are released](https://bell-sw.com/blog/liberica-native-image-kit-23-0-5-23-1-4-and-24-0-2-builds-are-released/): We are happy to announce the general availability of Liberica Native Image Kit (NIK) versions 23.0.5 for JDK 17, 23.1.4 for JDK 21, and 24.0.2 for JDK 22 as part of Critical Patch Update (CPU) release cycle. The builds contain several security and bug fixes. - [How to build and release GraalVM native images using GitHub Actions](https://bell-sw.com/blog/how-to-build-and-release-graalvm-native-images-using-github-actions/): In this article, I’m going to demonstrate how to create a GitHub Action for building Java native images for Linux, macOS, and Windows. - [Mastering Reactive Programming with Spring Data R2DBC](https://bell-sw.com/blog/mastering-reactive-programming-with-spring-data-r2dbc/): Spring Data R2DBC (Reactive Relational Database Connectivity) is part of the Spring Data project that enables the developers to build Spring applications combining relational databases and reactive programming. - [Correctness in Java Concurrent Data Structures: What You Need to Know](https://bell-sw.com/blog/correctness-in-java-concurrent-data-structures-what-you-need-to-know/): In this short article, I will discuss the concept of linearizability and demonstrate that ConcurrentLinkedDeque in Java is non-linearizable by using Lincheck, a tool for testing concurrent data structures. You can find the code of the test on GitHub. - [How to Perform Technology Risk Assessment at Small and Medium-sized Companies](https://bell-sw.com/blog/how-to-perform-technology-risk-assessment-at-small-and-medium-sized-companies/): If you’re running any business bigger than a coffee point, information technology is already a significant part of your company. Accounting software and payment solutions or marketing tools are some of the technologies you use to solve your business problems. For bigger companies, software is a no-brainer: modeling, logistics, invoicing, and many more areas are driven by information technology. For companies doing software in the first place, technology is at the very heart of the business: this is literally the foundation of everything. - [A guide to pattern matching for switch in Java 21](https://bell-sw.com/blog/a-guide-to-pattern-matching-for-switch-in-java-21/): Pattern matching for switch statements and expressions was introduced in JDK 17 and refined in the following releases. This feature evolved together with record patterns included into JDK 19. Both features were finalized in Java 21, so let’s see how we can use them in development. - [Liberica JDK 23 is released](https://bell-sw.com/blog/liberica-jdk-23-is-released/): We are happy to announce that Liberica JDK 23 builds are generally available! The release contains - [Liberica Native Image Kit 24.1.0 is released](https://bell-sw.com/blog/liberica-native-image-kit-24-1-0-is-released/): We are happy to announce the general availability of Liberica Native Image Kit (NIK) version 24.1.0 for JDK 23. - [What is CI/CD](https://bell-sw.com/blog/what-is-ci-cd/): Continuous Integration and Continuous Delivery/Deployment (CI/CD) are a set of practices aiming to streamline the processes of developing, testing, and releasing/deploying a software product. - [How to use buildpacks with Spring Boot](https://bell-sw.com/blog/how-to-use-buildpacks-with-spring-boot/): Buildpacks let you containerize a Spring Boot application without writing or maintaining a Dockerfile or even installing additional tools. In this guide, we will build a production-ready container image using Spring Boot’s Maven or Gradle support, run it locally, and explore options for customizing the Java runtime, JVM settings, startup optimization, and image size. We’ll also cover creating native images with buildpacks. - [Liberica JDK 8u432, 11.0.25, 17.0.13, 21.0.5, and 23.0.1 builds are generally available](https://bell-sw.com/blog/liberica-jdk-8u432-11-0-25-17-0-13-21-0-5-and-23-0-1-builds-are-generally-available/): We are happy to announce the general availability of a Critical Patch Update (CPU) of Liberica JDK versions 6u441, 7u441, 8u431, 11.0.24.0.1, 17.0.12.0.1, 21.0.4.0.1. CPU releases are stabilized builds that include patches for Common Vulnerabilities and Exposures (CVE) described in the relevant CVE entries in BellSoft’s Security Advisory. - [A Guide to Java Stream API](https://bell-sw.com/blog/a-guide-to-java-stream-api/): Processing data sequences without numerous for-loops in Java is possible with Stream API that allows for handling data using functional-style operations. - [Liberica Native Image Kit 23.0.6, 23.1.5, and 24.1.1 builds are released](https://bell-sw.com/blog/liberica-native-image-kit-23-0-6-23-1-5-and-24-1-1-builds-are-released/): We are happy to announce the general availability of Liberica Native Image Kit (NIK) versions 23.0.6 for JDK 17, 23.1.5 for JDK 21, and 24.1.1 for JDK 23 as part of Critical Patch Update (CPU) release cycle. The builds contain several security and bug fixes. - [BellSoft Releases Container Images with Liberica JDK for Rocky Linux](https://bell-sw.com/blog/bellsoft-releases-container-images-with-liberica-jdk-for-rocky-linux/): We are happy to announce the release of Liberica JDK container images for Rocky Linux! These images are aimed at substituting Liberica JDK images for CentOS. As CentOS Stream 8 reached end-of-live on May 31, 2024, we have decided to provide the developers with an alternative set of OCI container images for Java applications based on an actively developed and community-supported Linux distribution. - [Java Developer Survey: Trends and Practices in Java Development](https://bell-sw.com/blog/Java-Developer-Survey-2024/): BellSoft recently conducted the Java Developer Survey to explore the key challenges and trends shaping the Java development landscape today. Unlike other Java surveys, this initiative aimed to highlight often-overlooked concerns, focusing on the gap between IT priorities and business needs, understanding real-world usage of new tools and Java features, and identifying emerging industry trends. The survey, conducted by the BellSoft Research Team, gathered insights from over 300 Devoxx Belgium attendees, offering a fresh perspective on what developers encounter in production environments. - [BellSoft adds AArch64 support to Alpaquita Linux distribution and Alpaquita containers](https://bell-sw.com/news/bellsoft-adds-aarch64-support-to-alpaquita-linux-distribution-and-alpaquita-containers/): Arm architecture is gaining traction due to many factors, including the rapid growth of cloud computing and the increasing adoption of ML and AI. Arm-based hardware allows the easy launch and running of containers; meanwhile, Arm servers offer a scalable and cost-effective solution for vast amounts of data and large-scale workloads operations. BellSoft, a leading OpenJDK contributor, adds 64-bit Arm support to its Alpaquita Linux distribution and Alpaquita containers to complete your Java experience in the cloud and on Arm. - [A guide to Java profiling: tools, techniques, best practices](https://bell-sw.com/blog/a-guide-to-java-profiling-tools-techniques-best-practices/): Java applications can be extremely performant thanks to the inner workings of JVM and dynamic performance optimization. If the SLAs are met and cloud costs are optimal, you don’t have to do anything; premature optimization is the root of all evil, as the saying goes. - [Java 24: What's New in JDK 24?](https://bell-sw.com/blog/an-overview-of-jdk-24-features/): The Holiday Season is three weeks away, but Java developers can already delight in a cool gift from the OpenJDK team, which is a defined set of 24 features in the upcoming JDK 24 release! - [Alpaquita Linux Performance on ARM: A Comparative Study](https://bell-sw.com/blog/alpaquita-linux-performance-on-arm-a-comparative-study/): BellSoft recently added support for AArch64 to Alpaquita Linux. Alpaquita Linux is a minimalistic Linux distribution for cloud deployments. It is 100% compatible with Alpine Linux, but comes with several enhancements, including two libc implementations: optimized musl (musl-perf) and glibc. - [How to Set Up GraalVM Native Image Debugging](https://bell-sw.com/blog/how-to-set-up-graalvm-native-image-debugging/): It is essential to debug and profile native images to understand whether you experience any issues related to the Native Image technology and contact your vendor for advice before pushing the native executable to production. - [How to Debug GraalVM Native Image in IntelliJ IDEA](https://bell-sw.com/blog/how-to-debug-graalvm-native-image-in-intellij-idea/): In the previous article, we discussed how to set up a remote native image debugging session by creating a Docker container with debug information in a Docker container. We also looked into debugging native images in Eclipse IDE. Please read the article first to familiarize yourself with the theory. - [2024 in Review: BellSoft’s Key Milestones and What’s Next in 2025](https://bell-sw.com/blog/2024-in-review-bellsoft-s-key-milestones-and-what-s-next-in-2025/): For all of us at BellSoft, 2024 was a year of valuable collaborations, memorable engagements, and remarkable accomplishments. As we continue to innovate and evolve, we are proud to share the milestones we’ve reached, the lessons we’ve learned, and the exciting initiatives we have ahead. In this article, I’ll walk you through the key achievements of 2024 and give a glimpse of what we’re planning for 2025. - [Java Adventures 2024: From Belgian Chocolate to Double Dinners](https://bell-sw.com/blog/java-adventures-2024-from-belgian-chocolate-to-double-dinners/): As I look back at 2024, I can't help but smile. From accidentally attending two conference dinners in one night to hiking in snowy Utah while locals sunbathed, from sparking new IDE features to connecting with Java communities worldwide – these are my adventures as a part of the BellSoft Developer Advocate team. - [How to profile Java applications in Docker containers](https://bell-sw.com/blog/how-to-profile-java-applications-in-docker-containers/): Profiling the containerized application is essential for monitoring the behavior of the program. It also helps you to promptly pinpoint the root causes of possible performance issues. - [Liberica JDK 8u442, 11.0.26, 17.0.14, 21.0.6, and 23.0.2 builds are generally available](https://bell-sw.com/blog/liberica-jdk-8u442-11-0-26-17-0-14-21-0-6-and-23-0-2-builds-are-generally-available/): We are happy to announce the general availability of a Critical Patch Update (CPU) of Liberica JDK versions 6u451, 7u451, 8u441, 11.0.25.0.1, 17.0.13.0.1, 21.0.5.0.1. CPU releases are stabilized builds that include patches for Common Vulnerabilities and Exposures (CVE) described in the relevant CVE entries in BellSoft’s Security Advisory. - [Liberica Native Image Kit 23.0.7, 23.1.6, and 24.1.2 builds are released](https://bell-sw.com/blog/liberica-native-image-kit-23-0-7-23-1-6-and-24-1-2-builds-are-released/): We are happy to announce the general availability of Liberica Native Image Kit (NIK) versions 23.0.7 for JDK 17, 23.1.6 for JDK 21, and 24.1.2 for JDK 23 as part of Critical Patch Update (CPU) release cycle. The builds contain several security and bug fixes. - [A Comprehensive Guide to Mutation Testing in Java](https://bell-sw.com/blog/a-comprehensive-guide-to-mutation-testing-in-java/): Testing the code means verifying that the code works correctly and as expected. But how do you know the tests evaluating your code are good enough or provide adequate coverage? This is where mutation testing comes into play. - [Profiling Java Docker containers with Async Profiler](https://bell-sw.com/blog/profiling-java-docker-containers-with-async-profiler/): In the previous article, we looked at ways of profiling Java applications in containers with Java Flight Recorder (JFR), a profiling a diagnostics tool built into the JVM. - [Oracle Java 8 and 11 End of Life: Risks, Migration Strategies, and Best Alternatives](https://bell-sw.com/blog/oracle-java-8-and-11-end-of-life-risks-migration-strategies-and-best-alternatives/): Oracle Java 8 and 11 will reach their End of Life in several years, meaning that there will be no updates— free or paid. Running mission-critical workloads on unsupported Java versions introduces significant enterprise risks, from increasing operational costs to potential compliance violations. - [Java Performance Testing: Best Practices & Tools](https://bell-sw.com/blog/java-performance-testing-best-practices-tools/): With the growing adoption of DevOps and CI/CD practices, performance testing has become a shared responsibility between developers, SREs, and performance engineers. If you are new to performance testing, this article is for you! It covers key aspects of performance testing cloud-native Java applications, including critical performance indicators, testing methodologies, and popular open-source tools. - [Liberica JDK 24 is Released](https://bell-sw.com/blog/liberica-jdk-24-is-released/): We are happy to announce the release of Liberica JDK 24! This is a final feature release before the next LTS release due in September 2025, so if you are planning the migration to JDK 25, JDK 24 gives a great opportunity to test new features and prepare for the upgrade. - [How to Contribute to OpenJDK](https://bell-sw.com/blog/how-to-contribute-to-openjdk/): Millions of developers worldwide use Java. The Java platform powers thousands of applications, from small hobby projects to large mission-critical enterprise systems. - [Liberica Native Image Kit 24.2.0 is released](https://bell-sw.com/blog/liberica-native-image-kit-24-2-0-is-released/): We are happy to announce the general availability of Liberica Native Image Kit (NIK) version 24.2.0 for JDK 24. - [How to Create JavaFX Native Images](https://bell-sw.com/blog/how-to-create-javafx-native-images/): Combining JavaFX-based applications with GraalVM Native Image will enable you to create platform-specific executables that don’t require JVM to run. - [Liberica JDK 8u452, 11.0.27, 17.0.15, 21.0.7, and 24.0.1 builds are generally available](https://bell-sw.com/blog/liberica-jdk-8u452-11-0-27-17-0-15-21-0-7-and-24-0-1-builds-are-generally-available/): We are happy to announce the general availability of a Critical Patch Update (CPU) of Liberica JDK versions 6u461, 7u461, 8u451, 11.0.26.0.1, 17.0.14.0.1, 21.0.6.0.1. CPU releases are stabilized builds that include patches for Common Vulnerabilities and Exposures (CVE) described in the relevant CVE entries in BellSoft’s Security Advisory. - [Creating Modern Desktop Apps with JavaFX and Spring Boot](https://bell-sw.com/blog/creating-modern-desktop-apps-with-javafx-and-spring-boot/): Desktop applications are far from obsolete in 2025. For industries such as Healthcare or Internet of Things, offline capabilities and responsive UIs still matter. So, if you want to create a desktop version of your application or have an idea for a rich client app with a responsive UI, JavaFX will be your faithful companion on this journey! It offers multiple graphics and media packages that enable writing cross-platform desktop interfaces Java style. - [Liberica Native Image Kit 23.0.8, 23.1.7, and 24.2.1 builds are released](https://bell-sw.com/blog/liberica-native-image-kit-23-0-8-23-1-7-and-24-2-1-builds-are-released/): We are happy to announce the general availability of Liberica Native Image Kit (NIK) versions 23.0.8 for JDK 17, 23.1.7 for JDK 21, and 24.2.1 for JDK 24 as part of Critical Patch Update (CPU) release cycle. The builds contain several security and bug fixes. - [30 Years with Java: A BellSoft Love Story](https://bell-sw.com/blog/30-years-with-java-a-bellsoft-love-story/): "Remember when we first downloaded that HotJava beta? Who could have imagined where we'd end up..." - [How to Use Spring Data MongoDB](https://bell-sw.com/blog/how-to-use-spring-data-mongodb/): Introduction: Why MongoDB with Spring Boot? - [Liberica JDK 8u462, 11.0.28, 17.0.16, 21.0.8, and 24.0.2 builds are generally available](https://bell-sw.com/blog/liberica-jdk-8u462-11-0-28-17-0-16-21-0-8-and-24-0-2-builds-are-generally-available/): We are happy to announce the general availability of a Critical Patch Update (CPU) of Liberica JDK versions 6u471, 7u471, 8u461, 11.0.27.0.1, 17.0.15.0.1, 21.0.7.0.1. CPU releases are stabilized builds that include patches for Common Vulnerabilities and Exposures (CVE) described in the relevant CVE entries in BellSoft’s Security Advisory. - [Liberica Native Image Kit 23.0.9, 23.1.8, and 24.2.2 builds are released](https://bell-sw.com/blog/liberica-native-image-kit-23-0-9-23-1-8-and-24-2-2-builds-are-released/): We are happy to announce the general availability of Liberica Native Image Kit (NIK) versions 23.0.9 for JDK 17, 23.1.8 for JDK 21, and 24.2.2 for JDK 24 as part of Critical Patch Update (CPU) release cycle. The builds contain several security and bug fixes. - [BellSoft Upgrades Liberica JDK Performance Edition with JVM 21](https://bell-sw.com/news/bellsoft-upgrades-liberica-jdk-performance-edition-with-jvm-21/): BellSoft Supercharges Legacy Java with JVM 21 in Liberica JDK Performance Edition Upgrade - [BellSoft Released Liberica JDK Performance Edition with JVM 21](https://bell-sw.com/blog/bellsoft-released-liberica-jdk-performance-edition-with-jvm-21/): We are happy to announce the release of Liberica JDK Performance Edition, which integrates JVM 21. The solution is aimed at helping enterprises running their projects on JDK 8 or 11 achieve a significant performance boost without code refactoring. - [BellSoft Moves to OSV Format for Transparent Security Disclosure](https://bell-sw.com/blog/bellsoft-moves-to-osv-format-for-transparent-security-disclosure/): We're excited to announce that BellSoft has adopted the Open Source Vulnerabilities (OSV) schema for reporting CVEs in Alpaquita Linux, Stream and LTS versions. Every vulnerability we identify there is now reported in a standardized format that will integrate seamlessly with the security tools developers rely on. - [Ultimate Guide to Using DTOs with Spring Boot](https://bell-sw.com/blog/ultimate-guide-to-using-dtos-with-spring-boot/): Sending an entire customer object with a password, credit card number, and national ID to the client sounds like a developer’s nightmare, but in fact, it is a pretty realistic scenario. - [How To Use Liquibase with Spring Boot](https://bell-sw.com/blog/how-to-use-liquibase-with-spring-boot/): Liquibase is a database migration tool that allows you to track, apply, and roll back changes to the database schema using declarative changelog files. It integrates with version control systems, ensures automatic and reproducible deployment of migrations across different environments, makes the change history transparent, and works consistently with various databases. - [Liberica JDK 25 LTS Release: A Long-Term Foundation for Java Applications](https://bell-sw.com/blog/liberica-jdk-25-lts-release-a-long-term-foundation-for-java-applications/): We are happy to announce the general availability of Liberica JDK 25, a new LTS JDK release that will receive quarterly updates and support until September 2033. - [Liberica Native Image Kit 25.0.0+1 is Available](https://bell-sw.com/blog/liberica-native-image-kit-25-0-0-1-is-available/): We are happy to announce the general availability of Liberica Native Image Kit (NIK) version 25.0.0+1 based on JDK 25+37. This major release brings significant enhancements in performance, security, and developer experience, building upon the solid foundation of the new LTS release JDK 25. - [How to Use Flyway with Spring Boot](https://bell-sw.com/blog/how-to-use-flyway-with-spring-boot/): Flyway is a database migration tool for managing database schema changes using changelog files written in SQL. - [Liberica JDK 8u472, 11.0.29, 17.0.17, 21.0.9, and 25.0.1 builds are generally available](https://bell-sw.com/blog/liberica-jdk-8u472-11-0-29-17-0-17-21-0-9-and-25-0-1-builds-are-generally-available/): We are happy to announce the general availability of a Critical Patch Update (CPU) of Liberica JDK versions 6u481, 7u481, 8u471, 11.0.28.0.1, 17.0.16.0.1, 21.0.8.0.1, 25.0.0.0.1. CPU releases are stabilized builds that include patches for Common Vulnerabilities and Exposures (CVE) described in the relevant CVE entries in BellSoft’s Security Advisory. - [Liberica Native Image Kit 23.0.10, 23.1.9, and 25.0.1 builds are released](https://bell-sw.com/blog/liberica-native-image-kit-23-0-10-23-1-9-and-25-0-1-builds-are-released/): We are happy to announce the general availability of Liberica Native Image Kit (NIK) versions 23.0.10 for JDK 17, 23.1.9 for JDK 21, and 25.0.1 for JDK 24 as part of Critical Patch Update (CPU) release cycle. The builds contain several security and bug fixes. - [Docker Image Security: Best Practices for Production](https://bell-sw.com/blog/docker-image-security-best-practices-for-production/): Docker images are not just artifacts, they’re part of your software supply chain. They can be copied, scanned, and exploited, putting the whole system at risk. - [BellSoft's Hardened Images Set New Standard for Container Security](https://bell-sw.com/news/bellsoft-s-hardened-images-set-new-standard-for-container-security/): Pioneering 3-in-1 approach combining Java runtime optimization, OS hardening, and proactive CVE remediation delivers 95% fewer CVEs, 30% resource savings, and simplified compliance for enterprise development teams - [Liberica JDK 8u472, 11.0.29, 17.0.17, 21.0.9, and 25.0.1 builds are updated with important patches](https://bell-sw.com/blog/liberica-jdk-8u472-11-0-29-17-0-17-21-0-9-and-25-0-1-builds-are-updated-with-important-patches/): We have released Liberica JDK builds 8u472, 11.0.29, 17.0.17, 21.0.9, and 25.0.1 with patches for four critical vulnerabilities found in the OpenJFX. The severity of these CVEs is high or medium, so we recommend updating the JDK as soon as possible if you use OpenJFX in your projects. - [BellSoft Releases Alpaquita Linux 25 LTS](https://bell-sw.com/blog/bellsoft-releases-alpaquita-linux-25-lts/): We are happy to announce the general availability of Alpaquita Linux 25, which is a Long-Term Support (LTS) version that will receive the functional fixes and security patches until 2029. - [BellSoft 2025 Recap ](https://bell-sw.com/blog/growing-stronger-how-bellsoft-and-our-community-shaped-2025/): 2025 was a year of growth, collaboration, and communication. This was a year marked not just by technical milestones, but by the deepening relationships with our community, the exceptional work of everyone at BellSoft, and the collaborative spirit of our partners. - [Liberica JDK 8u482, 11.0.30, 17.0.18, 21.0.10, and 25.0.2 builds are generally available](https://bell-sw.com/blog/liberica-jdk-8u482-11-0-30-17-0-18-21-0-10-and-25-0-2-builds-are-generally-available/): We are happy to announce the general availability of a Critical Patch Update (CPU) of Liberica JDK versions 6u491, 7u491, 8u481, 11.0.29.0.1, 17.0.17.0.1, 21.0.9.0.1, 25.0.1.0.1. CPU releases are stabilized builds that include patches for Common Vulnerabilities and Exposures (CVE) described in the relevant CVE entries in BellSoft’s Security Advisory. - [A Guide to Java Application Security](https://bell-sw.com/blog/a-guide-to-java-application-security/): The growing dependence on digital services is a fertile ground for cybercrime that affects millions of people worldwide and costs billions in losses every year. - [Container Security Issues Continue to Befuddle Software Developers](https://bell-sw.com/news/container-security-issues-continue-to-befuddle-software-developers/): Container Security Issues Continue to Befuddle Software Developers - [Liberica Native Image Kit 23.0.11, 23.1.10, and 25.0.2 builds are released](https://bell-sw.com/blog/liberica-native-image-kit-23-0-11-23-1-10-and-25-0-2-builds-are-released/): We are happy to announce the general availability of Liberica Native Image Kit (NIK) versions 23.0.11 for JDK 17, 23.1.10 for JDK 21, and 25.0.2 for JDK 25 as part of Critical Patch Update (CPU) release cycle. The builds contain several security and bug fixes. - [How to Create UI in Java with Vaadin: Security Configuration, Layouts, Grid, Filter Search](https://bell-sw.com/blog/how-to-create-ui-in-java-with-vaadin-security-configuration-layouts-grid-filter-search/): Vaadin is a web framework for building full-stack web applications completely in Java, without using JavaScript or HTML. It has a great variety of ready UI components, built-in security and real-time communication, it enables Java developers to build data-rich enterprise applications without leaving the Java realm. - [How to Create UI in Java with Vaadin: Dialog, Forms with Validation, Real-Time Updates](https://bell-sw.com/blog/how-to-create-ui-in-java-with-vaadin-dialog-forms-with-validation-real-time-updates/): This is a second article in the series of building UI in Java with Vaadin. If you read the first part of this series, you already have a solid Vaadin-based frontend skeleton with - [Build AI Agents in Java with Embabel: Step-by-Step Guide](https://bell-sw.com/blog/build-ai-agents-in-java-with-embabel-step-by-step-guide/): Embabel is an agent framework on JVM that mixes LLM and domain models and enables you to integrate sophisticated agentic flows into your application guarded by strong typing and your own code. If you want reliable AI integration into your enterprise application, Embabel is worth looking at. - [An Overview of JDK 26 Features](https://bell-sw.com/blog/an-overview-of-jdk-26-features/): JDK 26 is a non-LTS release, but it doesn’t make it less important! It is always interesting to see where Java is heading, and for the teams planning to upgrade to the next LTS version — to try out new features in advance. - [Liberica JDK 26 is Released](https://bell-sw.com/blog/liberica-jdk-26-is-released/): We are happy to announce the general availability of Liberica JDK 26 builds! The new version contains: - [Liberica JDK 8u492, 11.0.31, 17.0.19, 21.0.11, 25.0.3, and 26.01 builds are available](https://bell-sw.com/blog/liberica-jdk-8u492-11-0-31-17-0-19-21-0-11-25-0-3-and-26-01-builds-are-available/): We are happy to announce the general availability of a Critical Patch Update (CPU) of Liberica JDK versions 6u501, 7u501, 8u491, 11.0.30.0.1, 17.0.18.0.1, 21.0.10.0.1, 25.0.2.0.1. CPU releases are stabilized builds that include patches for Common Vulnerabilities and Exposures (CVE) described in the relevant CVE entries in BellSoft’s Security Advisory. - [How to Profile Java Applications with JFR: Beginner's Guide](https://bell-sw.com/blog/how-to-profile-java-applications-with-jfr-beginner-s-guide/): Your app is slow, and you've been trying to solve the mystery for an hour. The logs show nothing useful. The GC metrics look vaguely suspicious but not alarming enough to actually blame. - [The builds of Liberica NIK 23.0.12, 23.1.11, and 25.0.3 are generally available](https://bell-sw.com/blog/the-builds-of-liberica-nik-23-0-12-23-1-11-and-25-0-3-are-generally-available/): We are happy to announce the general availability of Liberica Native Image Kit (NIK) versions 23.0.12 for JDK 17, 23.1.11 for JDK 21, and 25.0.3 for JDK 25 as part of Critical Patch Update (CPU) release cycle. The builds contain several security and bug fixes. - [Spring Developers Have a Blindspot When It Comes to Container Security](https://bell-sw.com/news/spring-developers-have-a-blindspot-when-it-comes-to-container-security/): Spring Developers Have a Blindspot When It Comes to Container Security - [JDBC vs ORM vs jOOQ: Choosing the Right Java Database Stack](https://bell-sw.com/blog/jdbc-vs-orm-vs-jooq-choosing-the-right-java-database-stack/): JDBC, JPA, Hibernate, jOOQ. Are these five different ways to connect to a database? Not exactly. They're not competing tools. They're layers, and the funny thing is that most of the time, you're using several of them without tracking which one is doing what. - [Overview of Java 27 Features](https://bell-sw.com/blog/overview-of-java-27-features/): The next JDK 27 release due in September includes 9 JEPs with new and enhanced features. Although this is a non-LTS release, JDK 27 is still interesting to check out, especially for team planning the upgrade to the next LTS version. - [Top-8 Issues of AI-Driven Development and How to Keep Them Out of Production](https://bell-sw.com/blog/top-8-issues-of-ai-driven-development-and-how-to-keep-them-out-of-production/): AI coding is not the problem. Blind trust in AI coding is the problem. - [What Are Hardened Container Images? Benefits, Security, and Adoption](https://bell-sw.com/blog/what-are-hardened-container-images-benefits-security-and-adoption/): Container images are the foundation of modern application delivery, but many teams build containers that contain far more software than their application needs. This is because a typical base image may include package manager, download utilities, debugging tools, libraries, and operating-system components not required in production. The problem is that each unnecessary component increases the attack surface and makes security scanning harder to manage. - [What Are Buildpacks? Build OCI Images Without Dockerfiles](https://bell-sw.com/blog/what-are-buildpacks-build-oci-images-without-dockerfiles/): Buildpacks turn application source code into OCI container images without requiring every team to maintain a Dockerfile. They detect supported applications, supply runtimes and dependencies, produce reusable layers, and expose build metadata such as SBOMs. - [Linux in Container in Not the Same as Linux OS](https://bell-sw.com/blog/linux-in-container-in-not-the-same-as-linux-os/): TLDR: