Java Native Compiler in depth

Compile Your Java Application to Native Executable Binary

5.00 (3 reviews)
Programming Languages
Java Native Compiler in depth
16 hours
Jul 2022
last update
regular price

What you will learn

Compile Java Application into Native Executable Binary

How Java Virtual Machine Executes an Application

How to Develop a Command-Line Application

Details of JVM Internals such as ClassPath

Why take this course?

Learn how to use GraalVM native-image tool to compile your Java application to a native executable binary. This allows you to get runtime speeds as fast as C++ applications! This course also teaches you in-depth knowledge of JDK tools and the required knowledge of command-line for running java applications.

- Section 1: Fundamentals of Java Applications

This section teaches you the fundamental concepts such as launching an application in terminal and environment variables such as “PATH” and “CLASSPATH” and how to access them inside a Java application. It also teaches you the meaning of command-line arguments and how to use them in an application.

- Section 2: Default Compiler Tool Chain

This section walks you through the installation process of the default compiler toolchain for each operating system. macOS uses Apple Clang (Xcode), whereas Linux uses the open-source GCC and Windows uses MSVC. You will learn how to ensure the correct installation and configuration of these toolchains.

- Section 3: Introduction to GraalVM Native-Image

This section provides the introduction to GraalVM and native-image. You will learn how to download and install GraalVM and how to run the native-image tool. It walks you through all the steps for writing a simple “HelloWorld” java application and compiling it to a native executable binary.

- Section 4: Compiling Java Applications with Native-Image

This section is the more serious introduction to the native-image tool from GraalVM. You will learn about the outputs that native-image provides while compiling your java application. You will also learn how to provide build configuration by passing various flags to the native-image on the command-line. The important concept of pipelining and redirection of commands on the terminal is also discussed in this section.

- Section 5: Eclipse IDE’s External Tool

This section provides an in-depth introduction to Eclipse’s IDE external tool. It is highly recommended to use Eclipse IDE in conjunction with the native-image tool to seamlessly compile your java applications to the native executable binary. It also shows you how to handle jar dependencies of your java application when using Maven build tool.

- Section 6: Native-Image Options

This section describes the most important flags that you can set when running native-image from the terminal. It also introduces how to handle dynamic features of java such as Reflections, Dynamic class loading, JNI, by invoking the tracing agent that is embedded in the GraalVM’s JVM. Once the configuration files are created, you’ll learn how to pass them to the native-image compiler so that the final executable binary can be run successfully.

- Section 7: Parsing Command-Line Arguments

This interesting section describes the use of a java library called “JCommander” that provides an easy-to-use API for parsing command-line arguments of a java application and creating objects or setting the state of objects. You will learn how to instruct native-image to work with JCommander so that the final executable binary also benefits from easily parsing command-line arguments.

- Section 8: Native-Image Official Documentation

This section provides the link to the online documentation of the native-image tool.

- Section 9: Resources (PowerPoint, source codes, …)

You will find the complete set of PowerPoint slides of the course in this section.


Fundamentals of Java Applications

Introduction to GraalVM and Java Applications
Command-Line Applications & PATH Environment Variable
The Concept of "CLASSPATH"
How to Define "CLASSPATH" Environment Variable
Command-Line Arguments
Environment Variables Inside Java Application

Default Compiler Tool Chains

MacOS Default Tool Chain: Apple clang
Linux Default Tool Chain: GCC
Windows Default Tool Chain: MSVC
Eclipse CDT and Terminal
File Permissions and Attributes

Introduction to GraalVM Native-Image

Setting up GraalVM Native-Image in Mac OS
Compiling a Simple Java Application Using Native-Image
Setting up GraalVM Native-Image in Linux Ubuntu
Setting up GraalVM Native-Image in Windows 10

Compiling Java Applications with Native-Image

A Simple "HelloWorld" Application
Native-Image Console Output
Native-Image Build Stages
Native-Image Build Output Options
Terminal Pipelining and Redirection

Eclipse IDE's External Tool

Introduction to Eclipse IDE's External Tool
Most Important Variables for External Tool
Passing Arguments to Eclipse IDE's Internal Variables
Setting up Native-Image as External Tool
Maven: Setting up Native-Image as External Tool
Maven: Managing Dependencies for Native-Image Compilation

Native-Image Options

Classpath Options
Creating and Compiling Jar Files
Handling Java Reflection API
GraalVM Tracing Agent
Tracing Agent: Merging Configuration Files
Tracing Agent: Periodic Updates
Handling Resources: Text Files -- Part 1
Handling Resources: Text Files -- Part 2
Handling Resources: Text Files -- Part 3
Handling Java Native Interface (JNI) Calls
Extracting JNI Dynamic Library from Executable File
Caching JNI Dynamic Library to User Home Directory

Parsing Command-Line Arguments

Introduction to JCommander Framework

Native-Image Official Documentation

Native-Image Online Documentation (version 22.1.0)

Resources (Powerpoint, source codes, ...)

Complete Powerpoint Slides
Source codes
Youtube Resources Regarding Native-Image


Java Native Compiler in depth - Screenshot_01Java Native Compiler in depth - Screenshot_02Java Native Compiler in depth - Screenshot_03Java Native Compiler in depth - Screenshot_04


September 23, 2023
I've had a great learning time with this course. Some parts are very beginner oriented but if you're already an experienced java programmer you can jump straight to the coding examples.



Java Native Compiler in depth - Price chart


Java Native Compiler in depth - Ratings chart

Enrollment distribution

Java Native Compiler in depth - Distribution chart

Related Topics

udemy ID
course created date
course indexed date
course submited by