How to install Liberica Native Image Kit on Windows PC

This guide will help you to install Liberica native image kit on Windows PC. Liberica NIK is a multilingual tool based on GraalVM that transforms your applications into performant native images. Go to bell-sw.com. Open the downloads menu and select download libera native image kit. You will arrive on the downloads page. The builds of Liberica NIK up to version 23 are distributed in a manner different from newer versions. We will show you how to install both types of packages.

Liberica NIK up to version 23 is available in three packages. Core package contains all you need for Java development. Standard version includes dependencies for non-java programming languages. Full version also includes Liberica FX for open JFX development. Liberica NIK 24 and higher is available in two packages for Java development. JDK standard version contains all you need for Java development. JDK full version also includes Liberica FX for Open JFX development. To download builds of Liberica NIK for apps written in other programming languages, you need to get the package dedicated to the programming language of your choice. Each one is available as nativebased and Java based.

Let's use Liberica NIK 24 standard and NodeJS package as examples and install them on Windows 10. Download the installation file and run it. Click next. You'll be presented with the following options. Add to path will add the installation folder to the path environment variable which will allow you to run the files from that folder without switching to it. Setup Java home will create a Java home variable and set it to the location of Liberica NIK. This will make Liberica NIK a default Java runtime. Associate JAR files option will make Liberica NIK a default utility when you open jar files. We recommend selecting all three options. Click next. Click install. When the installation is complete, click finish. Let's test if the installation was successful. Open the command prompt and type native-image. As you can see, the application ran without issues.

Now, let's set up the NodeJS Java standalone liber. Extract the archive into any folder. Go to your Windows settings. Select system about advanced system settings. Click the environment variables button. Here you need to set up variables for your standalone package. As you can see, the Java home path is already set as Liberica NIK installation folder. Find the path variable in user variables if you want to set up for current user only or system variables if you set up for all users. Click the path variable and edit button. Click the new button and add the path to the bin folder of your standalone package. Click OK two times and close the settings. Let's test it. Open the command prompt and type node. It should run. Don't forget that Liberica NIK requires Microsoft Visual Studio 2017 with Microsoft Visual C++ 15 or later.

Summary

This guide explains how to install Liberica Native Image Kit (NIK) on a Windows PC. Liberica NIK, based on GraalVM, converts applications into efficient native executables. Builds up to version 23 come in three packages (Core, Standard, Full), while version 24+ offers two Java development packages (Standard and Full). To install, download the installer from bell-sw.com, run it, and select options to set up PATH, JAVA_HOME, and associate JAR files. After installation, test by running native-image in Command Prompt. For standalone language packages (e.g., Node.js), extract the archive, update system PATH, and confirm the setup. Note: Microsoft Visual Studio 2017+ with C++ 15+ is required.

Videos
card image
Apr 2, 2026
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.

Videos
card image
Mar 26, 2026
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.

Further watching

Videos
card image
Apr 30, 2026
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/)

Videos
card image
Apr 22, 2026
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.

Videos
card image
Apr 8, 2026
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.