anchor.diff:  So, on Linux at least, we can now distribute our Java application as a single native executable. What is the story on Windows?
   
   === Native Image on Windows
  +
   Native image support on Windows has some gotchas, so we will look at this in more detail.
   
   ==== Creating Native Images on Windows
  +
   Creating the native image itself is not a problem. For example:
   
   .Creating a native image on Windows
   [width=100%]
   ----
  -C:\apps\graalvm-ce-java8-19.3.0.2\bin\native-image ^
  -    -cp picocli-4.1.4.jar --static -jar checksum.jar
  -----
  -
  -We get similar output from the `native-image.cmd` utility on Windows as what we saw on Linux, taking a comparable amount of time, and resulting in a slightly smaller executable of 10 MB for the Java 8 version of GraalVM, and 12.8 MB for a binary created with the Java 11 version of GraalVM.
  +C:\apps\graalvm-ce-java8-20.0.0\bin\native-image ^
  +  -cp picocli-4.2.0.jar --static -jar checksum.jar
  +----
  +
  +We get similar output from the `native-image.cmd` utility on Windows as what we saw on Linux, taking a comparable amount of time, and resulting in a slightly smaller executable of 11.3 MB for the Java 8 version of GraalVM, and 14.2 MB for a binary created with the Java 11 version of GraalVM.
   
   The binaries work fine, with one difference: we don't see ANSI colors on the console.
   Let's look at fixing that.
  
positive.code: }
  ----
  
  We now have a realistic example Java utility. Let’s take a look at turning it into a native executable next.
  
  == Native Image
  
  === Reflection Configuration
  
  We mentioned that the native image compiler has some limitations: reflection is supported but https://github.com/oracle/graal/blob/master/substratevm/CONFIGURE.md[requires configuration].
  
  This impacts picocli-based applications: at runtime, picocli uses reflection to discover any `@Command`-annotated subcommands, and the `@Option` and `@Parameters`-annotated command options and positional parameters.
  
  
negative.code: 
  ==== Install GraalVM
  
  First, install the latest version of GraalVM, 20.0 at the time of this writing.
  The GraalVM https://www.graalvm.org/docs/getting-started/[Getting Started] page is the best place to get the most up-to-date instructions for installing GraalVM in various operating systems and containers.
  
  ==== Install the Native Image Utility
  
  GraalVM comes with a `native-image` generator utility.
  In recent versions of GraalVM, this needs to be downloaded first and installed separately with the https://www.graalvm.org/docs/reference-manual/install-components/[Graal Updater] tool:
  
  .Installing the `native-image` generator utility for Java 11 on Linux
  ----
  gu install -L /path/to/native-image-installable-svm-java11-linux-amd64-20.0.0.jar
  ----
  
  This step also became necessary with the Windows version of GraalVM since 20.0.
  
  For more details, see the https://www.graalvm.org/docs/reference-manual/native-image/[Native Image] section of the GraalVM https://www.graalvm.org/docs/reference-manual/[Reference Manual].
  
  