anchor.diff:  
   == Producing a native executable
   
  -Let's now produce a native executable for our application.
  -It improves the startup time of the application, and produces a minimal disk footprint.
  -The executable would have everything to run the application including the "JVM" (shrunk to be just enough to run the application), and the application.
  +The native executable for our application will contain the application code, required libraries, Java APIs, and a reduced version of a VM. The smaller VM base improves the startup time of the application and produces a minimal disk footprint.
   
   image:native-executable-process.png[Creating a native executable]
  -
  -Before going further, be sure that the `GRAALVM_HOME` environment variable is configured appropriately.
   
   If you have generated the application from the previous tutorial, you can find in the `pom.xml` the following _profile_:
   
  
positive.code: * less than 15 minutes
  * an IDE
  * JDK 1.8+ installed with `JAVA_HOME` configured appropriately
  * GraalVM installed from the http://www.graalvm.org/downloads/[GraalVM web site].
  Using the community edition is enough.
  Version {graalvm-version} is required.
  * The `GRAALVM_HOME` environment variable configured appropriately
  * The `native-image` tool must be installed; this can be done by running `./gu install native-image` from your GraalVM
  `bin` directory
  * Apache Maven 3.5.3+
  * A working C developer environment (see the note below for details)
  * A running Docker
  * The code of the application developed in the link:getting-started-guide.html[Getting Started Guide].
  
  [NOTE]
  ====
  Once you have downloaded GraalVM, expand the archive and set the `GRAALVM_HOME` variable to this location:
  
  `export GRAALVM_HOME=$HOME/Development/graalvm/`
  
  On MacOS, point the variable to the `Home` sub-directory:
  
  `export GRAALVM_HOME=$HOME/Development/graalvm/Contents/Home/`
  ====
  
  [NOTE]
  ====
  What does having a working C developer environment mean?
  
   * On Linux, you will need GCC, the glibc and zlib headers (on common distributions: `sudo dnf install gcc glibc-devel zlib-devel` or `sudo apt-get install build-essential libz-dev`).
   * On macOS, execute `xcode-select --install`.
  ====
  
  [NOTE]
  ====
  Some previous releases of GraalVM included the `native-image` tool by default.  This is no longer the
  case; it now has to be installed as a second step after GraalVM itself is installed.  Use `gu install native-image`
  to do so.
  ====
  
  [NOTE]
  ====
  GraalVM binaries are not (yet) notarized for macOS Catalina as reported in this https://github.com/oracle/graal/issues/1724[GraalVM issue].
  To bypass the issue, it is recommended to run the below command instead of disabling macOS Gatekeeper entirely:
  [source,shell]
  -----
  xattr -r -d com.apple.quarantine $HOME/Development/graalvm <1>
  -----
  
  1. Recursively delete the `com.apple.quarantine` extended attribute on the GraalVM root directory `$HOME/Development/graalvm` we set up above.
  ====
  
  [TIP]
  ====
  If you cannot install GraalVM, you can use a multi-stage Docker build to run Maven inside a Docker container that embeds GraalVM. There is an explanation of how to do this at the end of this guide.
  ====
  
  == Solution
  
  We recommend that you follow the instructions in the next sections and package the application step by step.
  However, you can go right to the completed example.
  
  Clone the Git repository: `git clone {quickstarts-clone-url}`, or download an {quickstarts-archive-url}[archive].
  
  
negative.code: This guide covered the creation of a native (binary) executable for your application.
  It provides an application exhibiting a swift startup time and consuming less memory.
  However, there is much more.
  
  We recommend continuing the journey with the link:kubernetes-guide.html[deployment to Kubernetes and OpenShift].
  