<?xml version="1.0"?>
<!--

    Copyright (c) 2021 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<!DOCTYPE chapter [<!ENTITY % ents SYSTEM "jersey.ent" > %ents; ]>
<chapter xmlns="http://docbook.org/ns/docbook"
         version="5.0"
         xml:lang="en"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:xi="http://www.w3.org/2001/XInclude"
         xmlns:xlink="http://www.w3.org/1999/xlink"
         xsi:schemaLocation="http://docbook.org/ns/docbook http://docbook.org/xml/5.0/xsd/docbook.xsd
                             http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd"
         xml:id="graalvm-native-image">
    <title>GraalVM native-image generation</title>
    <para>
        This chapter describes Jersey's compatibility with GraalVM native image. This functionality is available since
        Jersey 2.35 and is under development and configuration. For now Jersey provides native image configuration
        basics for some modules and example on how to really generate native image for an existing application.
    </para>
    <section xml:id="supported_modules">
        <title>Modules with GraalVM native image support</title>
        <para>
            Currently Jersey provides basic support for native image generation within following modules:
            <literal>jersey-common</literal>,<literal>jersey-server</literal>,<literal>jersey-client</literal>,
            <literal>jersey-hk2</literal>.

            This support means that most of reflection and resource related settings are extracted into reflect-config
            and resource-config JSON files to be used while generating a native image. Those files are included in
            the native image generation process automatically (unless some tricky configuration is applied), so there is
            no need to include those files manually and/or duplicate their contents in some custom configuration.
        </para>
    </section>
    <section xml:id="native-image">
        <title>HelloWorld native image generation</title>
        <para>
            The example for the GraalVM native image generation is hidden under examples/helloworld example.
            To generate native image there it's required to perform some preliminary steps:
            <simplelist>
                <member>Download GraalVM at least 20.3.2 version</member>
                <member>Set JAVA_HOME to point to that [GraalVM_HOME]</member>
                <member>Perform <markup>$JAVA_HOME/bin/gu install native-image</markup> because native-image tool is not bundled within GraalVM itself</member>
                <member>Download Jersey examples source codes (preferable some released version like 2.35),
                    and go to [path_to_jersey_examples]/examples/helloworld</member>
                <member>Run <markup>mvn -Pnative-image clean package -DskipTests</markup></member>
            </simplelist>
        </para>
        <para>
            If all was correctly performed from previous steps the native image shall be already generated inside the targed folder
            of the helloworld example with the name helloworld-native and it's possible to run it by
            <programlisting language="bash">target/./helloworld-native</programlisting>
            After it's run, console should print our following output:
            <screen linenumbering="unnumbered">
                "Hello World" Jersey Example App
                May 27, 2021 1:37:49 PM org.glassfish.jersey.server.wadl.WadlFeature configure
                WARNING: JAX-B API not found . WADL feature is disabled.
                May 27, 2021 1:37:49 PM org.glassfish.grizzly.http.server.NetworkListener start
                INFO: Started listener bound to [localhost:8080]
                May 27, 2021 1:37:49 PM org.glassfish.grizzly.http.server.HttpServer start
                INFO: [HttpServer] Started.
                Application started.
                Try out http://localhost:8080/base/helloworld
                Stop the application using CTRL+C
            </screen>
            If you see this, you can open given link in browser and check how application actually works.
            In general we are done here and you can use that example to generate native images for your own projects.
        </para>
    </section>
    <section xml:id="undercover">
        <title>What's under the cover</title>
        <para>
            For the example above the following command line was used:
            <programlisting language="bash">
                -H:EnableURLProtocols=http,https
                --initialize-at-build-time=org.glassfish.jersey.client.internal.HttpUrlConnector
                -H:+ReportExceptionStackTraces
                --verbose
                --no-fallback
                --report-unsupported-elements-at-runtime
            </programlisting>
            This might be useful to generate another native image. It's possible to add another bunch of parameters to the command line
            (and put those into the <literal>native-image.properties</literal> file inside of your project). Important parameter here is
            --initialize-at-build-time (opposite to --initialize-at-run-time) and --no-fallback which says to the native
            image to generate pure native image with everything bundled inside the image and not just fall back wrapper for JDK.
        </para>
        <para>
            Another important aspect for generating the native image is the proper listing of reflection classes (classes that use reflection
            in an application). For those needs, there is a native image agent which helps to generate those lists automatically.
            In order to generate a list of reflection classes (and JNI classes and resources), it is required to run:
            <programlisting language="bash">$JAVA_HOME/bin/java -agentlib:native-image-agent=config-output-dir=[output_location] -jar [app_name].jar</programlisting>
            And afterwords, the [output_location] directory will be created with generated lists (in JSON format). Those files can be
            included as is into native image generation, but it's very preferable to edit them manually to reduce possible ambiguous classes listings.
        </para>
    </section>
</chapter>